Wiktionary
zhwiktionary
https://zh.wiktionary.org/wiki/Wiktionary:%E9%A6%96%E9%A1%B5
MediaWiki 1.47.0-wmf.2
case-sensitive
Media
Special
Talk
User
User talk
Wiktionary
Wiktionary talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Appendix
Appendix talk
Transwiki
Transwiki talk
Rhymes
Rhymes talk
Thesaurus
Thesaurus talk
Citations
Citations talk
Reconstruction
Reconstruction talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
美國
0
847
9759692
9067437
2026-05-15T00:35:04Z
TongcyDai
53191
9759692
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=美国}}
{{zh-wp|zh|yue|lzh|gan|hak|cdo|nan:Bí-kok|wuu}}
===詞源===
來自{{zh-m|美|Měi|note={{zh-l|亞美利加}}的簡稱,來自{{der|zh|en|America}}}} + {{zh-l|國}}。
===發音===
{{zh-pron
|m=Měiguó
|ma=LL-Q9192 (cmn)-Luilui6666-美国.wav
|dg=Мый2гуй1/Мый2гуә1
|c=mei5 gwok3
|ca=LL-Q9186 (yue)-Jonashtand-美國.wav
|c-t=mei4 gok2
|h=pfs=Mî-koet;gd=mi1 guêd5
|mb=Mĭ-gŏ
|md=Mī-guók
|mn=Bí-kok
|mn-t=mui2 gog4
|px=pt,xy:bi3 gorh6
|w=sh:5me koq
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{senseid|zh|Q30}}{{place|zh|國家|cont/北美洲}}
#: {{zh-x|^美國 ^權利.^法案|}}
#: {{zh-x|我 第 一 次 申請 ^美國 旅遊 簽證 被 拒簽 了。|}}
#: {{zh-x|^美國 ^北 ^佛羅里達 ^大學 宣布 關閉 ^孔子.^學院。|}}
#: {{zh-x|在 2{èr}0{shí} 世紀 6{liù}0{shí} 年代,^美國 人工.智能 出現 了 爆發性 的 發展。|}}
====同義詞====
{{syn-saurus|zh|美國}}
{{zh-dial}}
====衍生詞====
{{col3|zh|美國人|美國英語|美國化|美國佬|美國夢|美國內戰|美國資訊交換標準代碼|美國信息交換標準代碼|美國仙丹|美國塗豆|美國時間|美國民權聯盟|美股}}
====派生詞====
{{CJKV|||미국|Mĩ Quốc}}
'''其他''':
* {{desc|bor=1|za|Meijgoz}}
====翻譯====
{{trans-top|北美洲國家}}
<!--不收全稱-->
* 阿拉伯语:{{t+|ar|الْوِلَايَاتُ الْمُتَّحِدَة|f-p}}、{{t+|ar|أَمْرِيكَا|f}}、{{t|ar|أَمِيرِكَا|f|tr=ʾamērikā}}、{{t|ar|أَمْرِيكَة|f}}
* 亚美尼亚语:{{t|hy|Միացյալ Նահանգներ}}、{{t+|hy|Ամերիկա}}
* 阿斯图里亚斯语:{{t+|ast|Estaos Uníos|m-p}}
* 阿塞拜疆语:{{t+|az|Amerika}}
* 白俄罗斯语:{{t|be|Злу́чаныя Шта́ты|m-p}}、{{t|be|ЗША|m-p}}、{{t|be|Аме́рыка|f}}
* 孟加拉语:{{t|bn|যুক্তরাষ্ট্র}}、{{t|bn|আমেরিকা}}
* 布列塔尼语:{{t+|br|Stadoù-Unanet|p}}
* 保加利亚语:{{t|bg|Съедине́ните ща́ти|m-p}}、{{t|bg|Аме́рика|f}}
* 缅甸语:{{t|my|အမေရိက}}
* 加泰罗尼亚语:{{t+|ca|Estats Units|m-p}}
* 查莫罗语:{{t|ch|Estados Unidos}}
* 切罗基语:{{t|chr|ᎠᎹᏰᏟ}}
* 科西嘉语:{{t|co|Stati Uniti|m-p}}
* 捷克语:{{t+|cs|Spojené státy|m-p}}
* 丹麦语:{{t|da|De Forenede Stater|c-p}}
* 荷兰语:{{t+|nl|Verenigde Staten|m-p}}
* 宗喀语:{{t|dz|ཨ་མི་རི་ཀ}}
* 英語:{{t+|en|United States}}、{{t+|en|America}}
* 世界语:{{t+|eo|Usono|s}}
* 爱沙尼亚语:{{t|et|Ühendriigid|p}}
* 芬兰语:{{t+|fi|Yhdysvallat|p}}
* 法语:{{t+|fr|États-Unis|m-p}}
* 加利西亚语:{{t+|gl|Estados Unidos|m-p}}
* 格鲁吉亚语:{{t|ka|შეერთებული შტატები}}、{{t+|ka|აშშ}}、{{t|ka|ამერიკა}}
* 德语:{{t+|de|Vereinigte Staaten|p}}、{{t+|de|Amerika|n}}
* 希腊语:{{t+|el|Ηνωμένες Πολιτείες|f-p}}
* 海地克里奥尔语:{{t|ht|Etazini}}、{{qualifier|到/在美國}} {{t|ht|Ozetazini}}
* 希伯来语:{{t+|he|אַרְצוֹת הַבְּרִית|f-p|tr=artsot ha-brit}}
* 印地语:{{t+|hi|अमेरिका|m}}
* 匈牙利语:{{t+|hu|Egyesült Államok}}
* 冰岛语:{{t+|is|Bandaríkin|n-p}}
* 印尼语:{{t+|id|Amerika Serikat}}、{{t+|id|Amerika}}
* 因特语:{{t+|ia|Statos Unite}}
* 伊努皮亚克语:{{t|ik|Tannapta nunaŋat}}
* 爱尔兰语:{{t|ga|Stáit Aontaithe|m-p}}
* 意大利语:{{t+|it|Stati Uniti|m-p}}
* 日语:{{t+|ja|合衆国|tr=がっしゅうこく, Gasshūkoku}}、{{t+|ja|米国|tr=べいこく, Beikoku}}、{{t+|ja|アメリカ|tr=Amerika}}
* 嘉萊語: {{t|jra|čar Mi}}
* 高棉语:{{t+|km|សហរដ្ឋអាមេរិក}}、{{t|km|សហរដ្ឋ}}
* 朝鲜语:{{t+|ko|^미국(美國)}}、{{t+|ko|^아메리카}}、{{t|ko|^미합중국(美合衆國)}}
* 库尔德语:
*: 北库尔德语:{{t|kmr|Ameriqayê Yekbûyî}}
* 拉科塔语:{{t|lkt|Mílahaŋska Tȟamákȟočhe|lit=長刀之地}}
* 老挝语:{{t|lo|ສະຫະລັດອະເມລິກາ}}、{{t|lo|ອະເມລິກາ}}、{{t|lo|ອາເມລິກາ}}
* 拉脱维亚语:{{t|lv|Savienotās Valstis|f-p}}
* 立陶宛语:{{t|lt|Jungtinės Valstijos|m-p}}
* 马其顿语:{{t|mk|Соединети Држави|f-p}}
* 马来语:{{t+|ms|Amerika Syarikat}}
* 蒙古语:
*: 西里尔字母:{{t|mn|Америк}}
* 诺曼语:{{t|nrf|Êtats Unnis|m-p}}
* 挪威语:
*: 书面挪威语:{{t|nb|De forente stater|m-p}}
*: 新挪威语:{{t|nn|Sambandsstatane|m-p}}
* 奥克语:{{t+|oc|Estats Units|m-p}}
* 奥里亚语:{{t+|or|ଯୁକ୍ତରାଜ୍ୟ}}
* 波斯语:{{t+|fa|ایالات متحده|tr=ayâlât-e motahideh}}、{{t+|fa|اتازونی|tr=etâzuni}} {{qualifier|过时}}、{{t+|fa|آمریکا|tr=âmrikâ}}
* 波兰语:{{t+|pl|Stany Zjednoczone|m-in-p}}
* 葡萄牙语:{{t+|pt|Estados Unidos|m-p}}
* 罗马尼亚语:{{t|ro|Statele Unite|f-p}}
* 俄语:{{t+|ru|Соединённые Шта́ты|m-p}}、{{t+|ru|Аме́рика|f}}
* 梵语:{{t|sa|संयुक्तराज्यानि}}
* 撒丁语:{{t|sc|Istados Unidos|m-p}}
* 塞尔维亚-克罗地亚语:
*: 西里尔字母:{{t|sh|Амѐрика|f}}、{{t|sh|САД|f-p}}
*: 罗马字母:{{t+|sh|Amèrika}}、{{t|sh|SAD|f-p}}
* 僧伽罗语:{{t|si|ඇමරිකාව}}
* 斯洛伐克语:{{t|sk|Spojené štáty|m-p}}
* 斯洛文尼亚语:{{t|sl|Združene države|m-p}}
* 西班牙语:{{t+|es|Estados Unidos|m-p}}
* 瑞典语:{{t+|sv|Förenta staterna|n}}
* 他加禄语:{{t+|tl|Estados Unidos}}、{{t+|tl|Amerika}}
* 泰卢固语:{{t+|te|సంయుక్త రాష్ట్రాలు}}
* 泰语:{{t+|th|สหรัฐอเมริกา}}、{{t+|th|สหรัฐฯ}}、{{t+|th|อเมริกา}}
* 提格里尼亚语:{{t|ti|ሕቡራት መንግስታት}}
* 土耳其语:{{t+|tr|Birleşik Devletler}}
* 乌克兰语:{{t|uk|Сполу́чені Шта́ти|m-p}}、{{t|uk|Аме́рика|f}}
* 越南语:{{t+|vi|Hoa Kỳ}}、{{t|vi|nước Mỹ}}、{{t|vi|Mỹ Quốc}}
* 威尔士语:{{t+|cy|Unol Daleithiau|f-p}}
* 西弗里斯兰语:{{t|fy|Feriene Steaten|m-p}}
* 意第绪语:{{t|yi|פֿאַראייניקטע שטאַטן|p}}、{{t|yi|אַמעריקע|n}}、{{t|yi|פֿש״אַ}}
* 中阿拉斯加尤皮克语:{{t|esu|United States}}
{{trans-bottom}}
{{trans-top|部分語言中的縮寫}}
<!--簡化成類似“亞美利加”、“聯合國家”的,請放上一章節-->
* 南非语:{{t+|af|VSA}}、{{t|af|USA}}
* 阿尔巴尼亚语:{{t+|sq|SHBA|p}}
* 亚美尼亚语:{{t+|hy|ԱՄՆ}}
* 阿塞拜疆语:{{t+|az|ABŞ}}
* 巴什基尔语:{{t|ba|АҠШ}}
* 白俄罗斯语:{{t|be|ЗША|m-p}}
* 保加利亚语:{{t|bg|САЩ|m-p}}
* 加泰罗尼亚语:{{t+|ca|EUA|m-p}}
* 捷克语:{{t|cs|SSA|p}}、{{t+|cs|USA|p}}
* 丹麦语:{{t+|da|USA}}
* 荷兰语:{{t+|nl|VS}}、{{t+|nl|VSA}} {{qualifier|罕用}}
* 爱沙尼亚语:{{t+|et|USA}}
* 芬兰语:{{t+|fi|USA}}
* 法语:{{t|fr|ÉUA|m-p}}、{{t+|fr|É.-U.|m-p}}
* 格鲁吉亚语:{{t+|ka|აშშ}}
* 德语:{{t+|de|USA|p}}
* 希腊语:{{t+|el|ΗΠΑ|f-p}}
* 匈牙利语:{{t+|hu|USA}}、{{t+|hu|AEÁ}}
* 冰岛语:{{t+|is|BNA|f-p}}
* 伊多语:{{t+|io|Usa}}
* 爱尔兰语:{{t|ga|SAM}}
* 意大利语:{{t|it|U.S.A.|m-p}}
* 日语:{{t+|ja|米|tr=べい, Bei}} {{qualifier|用作組詞}}、{{t|ja|ユー・エス・エー|tr=Yū-Esu-Ē}}
* 哈萨克语:{{t|kk|АҚШ}}
* 高棉语:{{t|km|អាមេរិក}}
* 朝鲜语:{{t+|ko|^미(美)}} {{qualifier|用作組詞}}
* 库尔德语:
*: 北库尔德语:{{t|kmr|AY}}
* 吉尔吉斯语:{{t|ky|АКШ}}
* 拉脱维亚语:{{t|lv|ASV|f-p}}
* 立陶宛语:{{t+|lt|JAV|}}
* 马其顿语:{{t+|mk|САД|f-p}}
* 马来语:{{t|ms|AS}}
* 蒙古语:
*: 西里尔字母:{{t|mn|АНУ}}
* 纳瓦霍语:{{t|nv|WBA}}、{{t|nv|W.B.A.}}
* 挪威语:
*: 书面挪威语:{{t+|nb|USA}}
*: 新挪威语:{{t+|nn|USA}}
* 奥克语:{{t|oc|EUA|m-p}}
* 波兰语:{{t+|pl|USA|p}}
* 葡萄牙语:{{t+|pt|EUA|m-p}}、{{t+|pt|E.U.A.|m-p}}
* 罗马尼亚语:{{t+|ro|SUA|f-p}}
* 俄语:{{t+|ru|США|m-p}}
* 萨莫吉提亚语:{{t|sgs|JAV|}}
* 塞尔维亚-克罗地亚语:
*: 西里尔字母:{{t|sh|САД|f-p}}
*: 罗马字母:{{t|sh|SAD|f-p}}
* 斯洛伐克语:{{t+|sk|USA|p}}
* 斯洛文尼亚语:{{t+|sl|ZDA|f-p}}
* 西班牙语:{{t+|es|EE. UU.|m-p}}、{{t+|es|EUA|m-p}}、{{t+|es|EU|m-p}}
* 瑞典语:{{t+|sv|USA|n}}
* 塔吉克语:{{t|tg|ИМА}}
* 鞑靼语:{{t|tt|АКШ}}
* 土耳其语:{{t+|tr|ABD}}
* 土库曼语:{{t|tk|ABŞ}}
* 乌克兰语:{{t+|uk|США|m-p}}
* 乌兹别克语:{{t|uz|AQSh}}
* 越南语:{{t+|vi|Mỹ}}
* 沃拉普克语:{{t|vo|TPM}}
{{trans-bottom}}
{{trans-see|全稱|美利堅合眾國}}
{{trans-top|关于美国的;美国的(形容词)}}
* 阿尔巴尼亚语:{{t+|sq|amerikan}}
* 阿姆哈拉语:{{t|am|አሜሪካዊ}}
* 阿拉伯语:{{t|ar|أَمْرِيكِيّ}}
*: 埃及阿拉伯语:{{t|arz|أمريكاني|tr=ʔamrīkāniyy}}
* 亚美尼亚语:{{t+|hy|ամերիկական}}, {{t+|hy|ամերիկյան}}
* 阿塞拜疆语:{{t|az|amerikalı}}, {{t|az|amerika}}
* 白俄罗斯语:{{t|be|амерыка́нскі}}
* 孟加拉语:{{t+|bn|মার্কিন}}, {{t|bn|মার্কিনী}}
* 保加利亚语:{{t|bg|америка́нски}}
* 缅甸语:{{t|my|အမေရိကန်}}
* 加泰罗尼亚语:{{t+|ca|estatunidenc}}, {{t+|ca|nord-americà}}
* 捷克语:{{t+|cs|americký}}
* 丹麦语:{{t+|da|amerikansk}}
* 荷兰语:{{t+|nl|Amerikaans}}
* 英语:{{t+|en|American}}
* 世界语:{{t+|eo|usona}}
* 爱沙尼亚语:{{t|et|ameerika}}
* 芬兰语:{{t+|fi|amerikkalainen}}, {{t+|fi|yhdysvaltalainen}}, {{t|fi|[[Yhdysvallat|Yhdysvaltain]]}} {{qualifier|名詞的屬格}}, {{t|fi|[[Amerikka|Amerikan]]}} {{qualifier|名詞的屬格}}
* 法语:{{t+|fr|américain}}, {{t+|fr|états-unien}}
* 加利西亚语:{{t+|gl|estadounidense|m|f}}
* 格鲁吉亚语:{{t|ka|ამერიკული}}
* 德语:{{t+|de|amerikanisch}}, {{qualifier|更為準確}} {{t+|de|US-amerikanisch}}
* 希腊语:{{t+|el|αμερικανικός|m}}
* 海地克里奥尔语:{{t|ht|ameriken}}
* 夏威夷语:{{t|haw|ʻAmelika}}, {{t|haw|haole}}
* 希伯来语:{{t+|he|אָמֶרִיקָנִי|tr=amerikáni}}
* 印地语:{{t+|hi|अमरीकी}}
* 匈牙利语:{{t+|hu|amerikai}}
* 冰岛语:{{t+|is|bandarískur}}
* 爱多语:{{t|io|Usana}}
* 国际语:{{t|ia|statounitese}}
* 爱尔兰语:{{t+|ga|Meiriceánach}}
* 意大利语:{{t+|it|americano}}, {{qual|更為準確}} {{t+|it|statunitense}}
* 日语:{{t+|ja|アメリカ|alt=アメリカの|tr=Amerika no}}, {{t+|ja|米国|alt=米国の|tr=べいこくの, Beikoku no}}, {{t+|ja|アメリカン|tr=Amerikan}}, {{t+|ja|米|tr=べい, bei}}
* 哈萨克语:{{t|kk|американдық}}, {{t|kk|америка}}
* 高棉语:{{t|km|អាមេរិក}}
* 韩语:{{t+|ko|미국|alt=미국의}}
* 库尔德语:
*: 北库尔德语:{{t+|kmr|amerîkî}}
* 吉尔吉斯语:{{t+|ky|америкалык}}, {{t|ky|америка}}
* 拉脱维亚语:{{t|lv|amerikānisks}}, {{t|lv|amerikāņu}}
* 立陶宛语:{{t|lt|amerikietiškas}}, {{t|lt|amerikiečių}}
* 卢森堡语:{{t|lb|amerikanesch}}
* 马其顿语:{{t|mk|америка́нски}}
* 马来语:{{t+|ms|Amerika}}
* 蒙古语:{{t|mn|америк}}
* 挪威语:
*: 书面挪威语:{{t+|nb|amerikansk}}
*: 新挪威语:{{t|nn|amerikansk}}
* 普什图语:{{t|ps|امريکايی|tr=amrikâyay}}
* 波斯语:{{t+|fa|آمریکایی|tr=âmrikâyi}}
* 波兰语:{{t+|pl|amerykański}}
* 葡萄牙语:{{t+|pt|americano|m}}, {{t+|pt|norte-americano|m}}, {{t|pt|estado-unidens|m|f}}
* 罗马尼亚语:{{t+|ro|american}}
* 俄语:{{t+|ru|америка́нский}}
* 苏格兰盖尔语:{{t|gd|Ameireaganach}}
* 塞尔维亚-克罗地亚语:
*: 西里尔字母:{{t|sh|амѐричкӣ}}
*: 拉丁字母:{{t+|sh|američki}}
* 斯洛伐克语:{{t+|sk|americký}}
* 斯洛文尼亚语:{{t+|sl|amêriški}}
* 西班牙语:{{t+|es|estadounidense}}, {{t+|es|norteamericano}}, {{t+|es|usamericano}} {{qualifier|DAMER}}
* 瑞典语:{{t+|sv|amerikansk}}
* 塔加洛语:{{t|tl|Amerikahin}}, {{t|tl|Amerikano}}
* 塔吉克语:{{t+|tg|амрикоӣ}}
* 泰语:{{t+|th|อเมริกัน}}
* 土耳其语:{{t+|tr|Amerikalı}}, {{t+|tr|Amerikan}}
* 土库曼语:{{t|tk|amerikaly}}, {{t|tk|amerika}}
* 乌克兰语:{{t+|uk|америка́нський}}
* 乌尔都语:{{t|ur|امریکی|tr=amrīkī}}, {{t|ur|امریکائی|tr=amrīkā'ī}}
* 乌兹别克语:{{t+|uz|amerikalik}}, {{t|uz|amerika}}
* 越南语: (thuộc) {{t+|vi|Mỹ}}, (thuộc) {{t+|vi|Hoa Kỳ}}; {{qual|关于语言}} {{t+|vi|tiếng Mỹ}}
* 沃拉普克语:{{t+|vo|Lamerikänik}}, {{t|vo|Lamerikänanik}}, {{qual|关于语言}} {{t|vo|Lamerikäna-Linglänapükik}}
* 意第绪语:{{t|yi|אַמעריקאַניש}}
{{trans-bottom}}
====參見====
* {{zh-l|美洲}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hangeul=미국}}
# {{hanja form of|미국}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Mĩ Quốc}}
ddnkd08xcqrff5wjim6x7awts4npqyr
Wiktionary:统计
4
1718
9760139
9759294
2026-05-15T05:00:10Z
TongcyBot
83009
機器人:更新每日統計數據 (2026-05-15)
9760139
wikitext
text/x-wiki
{{Interwiki}}
{{shortcut|WT:STAT}}
==基本資料==
{| class="wikitable"
! 項目 !! 資料
|-
! MediaWiki版本
| {{CURRENTVERSION}}
|-
! 詞條數量
| [[Special:Statistics|'''{{NUMBEROFARTICLES}}''']]
|-
! 總頁面數
| {{NUMBEROFPAGES}}
|-
! 已編碼的語言數量
| {{#invoke:list of languages|count}}
|-
! 檔案數量
| {{NUMBEROFFILES}}
|-
! 註冊用戶數
| {{NUMBEROFUSERS}}
|-
! 活躍用戶數
| {{NUMBEROFACTIVEUSERS}}
|-
! 管理員數量
| {{NUMBEROFADMINS}}
|-
! 全站頁面編輯次數
| {{NUMBEROFEDITS}}
|}
其他資料請參考[[Special:Statistics]]。
==頁面==
本表是中文维基詞典詞條数依日期到達的里程碑,以每一万个词条为单位计数。<!-- 以下內容已不再更新
* 近期統計圖表(區分機器人與一般用戶,選擇zhwiktionary_p,每日自動更新):[https://tools.wmflabs.org/wmcharts/wmchart0001.php 編輯次數]{{·}}[https://tools.wmflabs.org/wmcharts/wmchart0002.php 新增詞條數量]-->
* 目前的詞條數:'''{{NUMBEROFARTICLES}}'''({{重新整理|更新}})。
{{Milestone}}
==与相邻语言版本的比较==
中文维基词典词条收录量为'''{{NUMBEROFARTICLES}}''',在所有语言版本的詞典中[[meta:Wiktionary#List of Wiktionaries|'''位列第4''']]。
{{autoStat
| 2026-05-01
| fr | mg | zh | th | el
| 6910311 | 5911338 | 2317075 | 2180613 | 1578407
| 6910465 | 5911778 | 2317733 | 2180625 | 1578438
| 6910902 | 5911947 | 2318306 | 2180659 | 1578642
| 6911431 | 5912087 | 2318644 | 2180659 | 1578727
| 6911789 | 5912618 | 2319200 | 2180693 | 1578858
| 6912182 | 5912774 | 2319756 | 2180695 | 1578878
| 6912997 | 5913101 | 2320558 | 2180707 | 1578945
| 6913587 | 5914311 | 2321341 | 2180732 | 1578967
| 6914008 | 5914542 | 2321908 | 2180738 | 1578993
| 6914917 | 5914730 | 2322662 | 2180747 | 1579019
| 6915864 | 5914994 | 2323162 | 2180753 | 1579114
| 6916634 | 5915340 | 2323608 | 2180766 | 1579178
| 6916940 | 5916674 | 2323976 | 2180768 | 1579265
| 6917350 | 5917831 | 2324585 | 2180776 | 1579287
| 6917821 | 5918823 | 2325063 | 2180778 | 1579331
| 6918489 | 5920727 | 2325493 | 2180780 | 1579363
}}
* 来源:[https://wikistats.wmcloud.org/display.php?t=wt Wikistats] 统计的具体时间为当日1时(UTC)左右,近似表示前一天的数据
* 关于里程碑,参见[[Wiktionary:宣告]]
==页面访问统计==
历史数据参见:[[Wiktionary:统计/存档]]
===总页面浏览量===
{{Collapse2|header=最近一年中文維基詞典的存取量|float=right
|{{Graph:PageViews| 365 | _ |scale=sqrt}}
}}
{{Collapse2|header=自2016年起中文維基詞典總頁面瀏覽量(時間單位:月)|float=right
|{{Graph:Chart
| width = 800
| height = 300
| xAxisTitle = 時間
| yAxisTitle = 瀏覽量(次)
| x = 2016/01/01,2016/02/01,2016/03/01,2016/04/01,2016/05/01,2016/06/01,2016/07/01,2016/08/01,2016/09/01,2016/10/01,2016/11/01,2016/12/01,2017/01/01,2017/02/01,2017/03/01,2017/04/01,2017/05/01,2017/06/01,2017/07/01,2017/08/01,2017/09/01,2017/10/01,2017/11/01,2017/12/01,2018/01/01,2018/02/01,2018/03/01,2018/04/01,2018/05/01,2018/06/01,2018/07/01,2018/08/01,2018/09/01,2018/10/01,2018/11/01,2018/12/01,2019/01/01,2019/02/01,2019/03/01,2019/04/01,2019/05/01,2019/06/01,2019/07/01,2019/08/01,2019/09/01,2019/10/01,2019/11/01,2019/12/01,2020/01/01,2020/02/01,2020/03/01,2020/04/01,2020/05/01,2020/06/01,2020/07/01,2020/08/01,2020/09/01,2020/10/01,2020/11/01,2020/12/01,2021/01/01,2021/02/01,2021/03/01,2021/04/01,2021/05/01,2021/06/01,2021/07/01,2021/08/01,2021/09/01,2021/10/01,2021/11/01,2021/12/01,2022/01/01,2022/02/01,2022/03/01,2022/04/01,2022/05/01,2022/06/01,2022/07/01,2022/08/01,2022/09/01,2022/10/01,2022/11/01,2022/12/01,2023/01/01,2023/02/01,2023/03/01,2023/04/01,2023/05/01,2023/06/01,2023/07/01,2023/08/01,2023/09/01,2023/10/01,2023/11/01,2023/12/01,2024/01/01,2024/02/01,2024/03/01,2024/04/01,2024/05/01,2024/06/01,2024/07/01,2024/08/01,2024/09/01,2024/10/01,2024/11/01,2024/12/01,2025/01/01,2025/02/01,2025/03/01,2025/04/01,2025/05/01,2025/06/01,2025/07/01,2025/08/01,2025/09/01,2025/10/01,2025/11/01,2025/12/01,2026/01/01,2026/02/01,2026/03/01,2026/04/01
| xType = date
| yAxisFormat =
| showSymbols =
| y1 = 10097003,10370374,8792159,8941196,7730585,8096248,6653053,7707543,10114598,7503416,6761878,8479478,6306309,7029498,7793566,8952099,7201718,7403015,9094546,8753927,8887701,8836025,7012428,8297104,9776325,7383846,6846537,6478883,7844796,6800241,7032236,8907342,8070578,8878639,7374038,10399016,8843049,11735279,15986235,6536323,7794540,6340229,6963086,7077486,7262235,8135613,7350657,5924829,5389757,6706817,5468323,6028296,7420864,8089314,9463391,8952807,8032717,7976343,8839864,8511738,9062568,9099531,9196338,11036657,13507384,12075399,13497219,15603301,16689908,15728651,14140022,16914100,13589392,14818070,19016624,15144543,14891967,17026541,17298554,14032388,14847453,17608848,19967345,16730368,14386645,12098112,13610799,13122059,13901295,13433194,15511876,15674859,17748912,26144678,22153348,21554742,23027727,29476088,31116352,31891299,31844500,26251290,24446253,43524978,42154325,30934003,60141744,38114834,35256147,36402985,32703811,27105782,45361042,55198883,39017796,28042128,37231311,52390983,65887852,43219295,50138160,26315414,38336237,63309024
}}
}}
{| class="wikitable mw-collapsible mw-collapsed"
! 日期 !! 浏览量
|-
| 2026-04-01 || 63,309,024
|-
| 2026-03-01 || 38,336,237
|-
| 2026-02-01 || 26,315,414
|-
| 2026-01-01 || 50,138,160
|-
| 2025-12-01 || 43,219,295
|-
| 2025-11-01 || 65,887,852
|-
| 2025-10-01 || 52,390,983
|-
| 2025-09-01 || 37,231,311
|-
| 2025-08-01 || 28,042,128
|-
| 2025-07-01 || 39,017,796
|-
| 2025-06-01 || 55,198,883
|-
| 2025-05-01 || 45,361,042
|-
| 2025-04-01 || 27,105,782
|-
| 2025-03-01 || 32,703,811
|-
| 2025-02-01 || 36,402,985
|-
| 2025-01-01 || 35,256,147
|-
| 2024-12-01 || 38,114,834
|-
| 2024-11-01 || 60,141,744
|-
| 2024-10-01 || 30,934,003
|-
| 2024-09-01 || 42,154,325
|-
| 2024-08-01 || 43,524,978
|-
| 2024-07-01 || 24,446,253
|-
| 2024-06-01 || 26,251,290
|-
| 2024-05-01 || 31,844,500
|-
| 2024-04-01 || 31,891,299
|-
| 2024-03-01 || 31,116,352
|-
| 2024-02-01 || 29,476,088
|-
| 2024-01-01 || 23,027,727
|-
| 2023-12-01 || 21,554,742
|-
| 2023-11-01 || 22,153,348
|-
| 2023-10-01 || 26,144,678
|-
| 2023-09-01 || 17,748,912
|-
| 2023-08-01 || 15,674,859
|-
| 2023-07-01 || 15,511,876
|-
| 2023-06-01 || 13,433,194
|-
| 2023-05-01 || 13,901,295
|-
| 2023-04-01 || 13,122,059
|-
| 2023-03-01 || 13,610,799
|-
| 2023-02-01 || 12,098,112
|-
| 2023-01-01 || 14,386,645
|-
| 2022-12-01 || 16,730,368
|-
| 2022-11-01 || 19,967,345
|-
| 2022-10-01 || 17,608,848
|-
| 2022-09-01 || 14,847,453
|-
| 2022-08-01 || 14,032,388
|-
| 2022-07-01 || 17,298,554
|-
| 2022-06-01 || 17,026,541
|-
| 2022-05-01 || 14,891,967
|-
| 2022-04-01 || 15,144,543
|-
| 2022-03-01 || 19,016,624
|-
| 2022-02-01 || 14,818,070
|-
| 2022-01-01 || 13,589,392
|-
| 2021-12-01 || 16,914,100
|-
| 2021-11-01 || 14,140,022
|-
| 2021-10-01 || 15,728,651
|-
| 2021-09-01 || 16,689,908
|-
| 2021-08-01 || 15,603,301
|-
| 2021-07-01 || 13,497,219
|-
| 2021-06-01 || 12,075399
|-
| 2021-05-01 || 13,507,384
|-
| 2021-04-01 || 11,036,657
|-
| 2021-03-01 || 9,196,338
|-
| 2021-02-01 || 9,099,531
|-
| 2021-01-01 || 9,062,568
|-
| 2020-12-01 || 8,511,738
|-
| 2020-11-01 || 8,839,864
|-
| 2020-10-01 || 7,976,343
|-
| 2020-09-01 || 8,032,717
|-
| 2020-08-01 || 8,952,807
|-
| 2020-07-01 || 9,463,391
|-
| 2020-06-01 || 8,089,314
|-
| 2020-05-01 || 7,420,864
|-
| 2020-04-01 || 6,028,296
|-
| 2020-03-01 || 5,468,323
|-
| 2020-02-01 || 6,706,817
|-
| 2020-01-01 || 5,389,757
|-
| 2019-12-01 || 5,924,829
|-
| 2019-11-01 || 7,350,657
|-
| 2019-10-01 || 8,135,613
|-
| 2019-09-01 || 7,262,235
|-
| 2019-08-01 || 7,077,486
|-
| 2019-07-01 || 6,963,086
|-
| 2019-06-01 || 6,340,229
|-
| 2019-05-01 || 7,794,540
|-
| 2019-04-01 || 6,536,323
|-
| 2019-03-01 || 15,986,235
|-
| 2019-02-01 || 11,735,279
|-
| 2019-01-01 || 8,843,049
|-
| 2018-12-01 || 10,399,016
|-
| 2018-11-01 || 7,374,038
|-
| 2018-10-01 || 8,878,639
|-
| 2018-09-01 || 8,070,578
|-
| 2018-08-01 || 8,907,342
|-
| 2018-07-01 || 7,032,236
|-
| 2018-06-01 || 6,800,241
|-
| 2018-05-01 || 7,844,796
|-
| 2018-04-01 || 6,478,883
|-
| 2018-03-01 || 6,846,537
|-
| 2018-02-01 || 7,383,846
|-
| 2018-01-01 || 9,776,325
|-
| 2017-12-01 || 8,297,104
|-
| 2017-11-01 || 7,012,428
|-
| 2017-10-01 || 8,836,025
|-
| 2017-09-01 || 8,887,701
|-
| 2017-08-01 || 8,753,927
|-
| 2017-07-01 || 9,094,546
|-
| 2017-06-01 || 7,403,015
|-
| 2017-05-01 || 7,201,718
|-
| 2017-04-01 || 8,952,099
|-
| 2017-03-01 || 7,793,566
|-
| 2017-02-01 || 7,029,498
|-
| 2017-01-01 || 6,306,309
|-
| 2016-12-01 || 8,479,478
|-
| 2016-11-01 || 6,761,878
|-
| 2016-10-01 || 7,503,416
|-
| 2016-09-01 || 10,114,598
|-
| 2016-08-01 || 7,707,543
|-
| 2016-07-01 || 6,653,053
|-
| 2016-06-01 || 8,096,248
|-
| 2016-05-01 || 7,730,585
|-
| 2016-04-01 || 8,941,196
|-
| 2016-03-01 || 8,792,159
|-
| 2016-02-01 || 10,370,374
|-
| 2016-01-01 || 10,097,003
|}
数据来源:[https://stats.wikimedia.org/#/zh.wiktionary.org/reading/total-page-views/normal|table|1-year|~total|monthly Total page views]
===热词===
页面浏览量最高的词条:
{{Wiktionary:統計/熱詞
|year=2024 |month=6
|t1=尛 |cat1=[[:Category:漢字|漢字]] |v1=5,385 |m1=82.8
|t2=。 |cat2=[[:Category:標點符號|標點符號]] |v2=5,355 |m2=94.4
|t3=! |cat3=[[:Category:標點符號|標點符號]] |v3=3,407 |m3=74.2
|t4=凪 |cat4=[[:Category:和製漢字|和製漢字]]|v4=3,120 |m4=62.0
|t5=雫 |cat5=[[:Category:和製漢字|和製漢字]] |v5= 3,114 |m5=64.6
|t6=又双叒叕 |cat6=[[:Category:漢語副詞|漢語副詞]] |v6=2,528 |m6=73.4
|t7=你好 |cat7=[[:Category:漢語感嘆詞|漢語感嘆詞]] |v7=2,513 |m7=41.1
|t8=昶 |cat8=[[:Category:漢字|漢字]] |v8=2,412 |m8=56.7
|t9=肉便器 |cat9=[[:Category:漢語名詞|漢語名詞]] |v9=2,345 |m9=78.4
|t10=辻 |cat10=[[:Category:和製漢字|和製漢字]] |v10=2,150 |m10=71.8
}}
数据来源:[https://pageviews.toolforge.org/topviews/?project=zh.wiktionary.org&platform=all-access&date={{CURRENTYEAR}}-{{CURRENTMONTH}}&excludes= Topviews Analysis - Most viewed pages of a project]
==收录词条==
{{See|Wiktionary:统计/各语言词条}}
==参看==
*[[Special:Statistics|基本统计]]
[[Category:維基詞典統計]]
btb3xs5rywscli4r8ut6v58lb55skvu
歐洲
0
11535
9759645
9728583
2026-05-14T23:41:20Z
TongcyDai
53191
ㄌ
9759645
wikitext
text/x-wiki
{{also|洲歐}}
==漢語==
{{zh-forms|s=欧洲}}
{{zh-wp|zh|wuu|yue|gan|hak:Êu-chû|nan:Au-chiu|cdo:Ĕu-ciŭ|lzh:歐羅巴洲}}
[[File:Europe orthographic Caucasus Urals boundary (with borders).svg|250px|thumb]]
===詞源===
源自{{zh-m|歐|note={{zh-l|歐羅巴}}的簡稱}} + {{zh-m|洲}}。
===發音===
{{zh-pron
|m=Ōuzhōu
|c=au1 zau1
|h=pfs=Êu-chû
|md=Ĕu-ciŭ
|mn=xm,tw:Au-chiu
|mn-t=ao1 ziu1
|w=1eu tseu
|cat=pn,a
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q46}}{{place|zh|位於[[亞洲]]以西(通常以[[烏拉爾山脈]]為界)、[[非洲]]以北、[[大西洋]]以東的<<大洲>>|tcl=[[亞洲]]以西、[[非洲]]以北的<<大洲>>}}
#: {{zh-x|^歐洲 一體化|}}
#: {{zh-x|^歐洲 發端|}}
====同義詞====
* {{qualifier|簡稱}} {{zh-l|歐}}
* {{qualifier|過時}} {{zh-l|歐羅巴}}
====派生詞彙====
{{col3|zh|歐洲聯盟|歐洲大陸|歐洲鰉|歐安會}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q46|大洲}}
* 阿布哈茲語:{{t|ab|Европа}}
* 亞齊語:{{t|ace|Iërupa}}
* 南非語:{{t+|af|Europa}}
* 阿坎語:{{t|ak|Yurop}}
* 阿爾巴尼亞語:{{t|sq|Evropë|f}}、{{t+|sq|Evropa|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|አውሮፓ}}
* 安地列斯克里奧爾語:{{t|gcf|Éwop}}
* 阿拉伯語:{{t+|ar|أُورُوبَّا|f}}、{{t|ar|أُورُبَّا|f}}、{{t|ar|أُورُوبَّة|f}}
*: 埃及阿拉伯語:{{t|arz|أوروبا|f|tr=ʔurupa, ʔuruba}}
*: 漢志阿拉伯語:{{t|acw|أوربّا|f|tr=ʔōrubba}}、{{t|acw|أورپا|f|tr=ʔōruppa}}
* 阿拉貢語:{{t|an|Europa|f}}
* 亞美尼亞語:{{t+|hy|Եվրոպա}}
* 阿薩姆語:{{t|as|ইউৰোপ}}
* 亞述新亞拉姆語:{{t|aii|ܐܘܪܝܦܝ}}
* 阿斯圖里亞斯語:{{t+|ast|Europa|f}}
* 艾馬拉語:{{t+|ay|Iwrupa}}
* 阿塞拜疆語:{{t+|az|Avropa}}、{{t|az|Ovropa}} {{qualifier|仿古}}
* 班查語:{{t|bjn|Irupa}}
* 巴什基爾語:{{t|ba|Европа}}、{{qualifier|棄用}} {{t|ba|Аурупа}}
* 巴斯克語:{{t+|eu|Europa}}
* 白俄羅斯語:{{t|be|Еўро́па|f}}、{{t|be|Эўро́па|f}} {{qualifier|傳統正寫法}}
* 孟加拉語:{{t+|bn|ইউরোপ}}
* 保加利亞語:{{t+|bg|Евро́па|f}}
* 緬甸語:{{t|my|ဥရောပ}}
* 布里亞特語:{{t|bua|Европо}}
* 加泰羅尼亞語:{{t+|ca|Europa|f}}
* 車臣語:{{t|ce|Европа}}、{{t|ce|Йивроп}}
* 齊切瓦語:{{t|ny|Ulaya}}
* 科西嘉語:{{t|co|Europa|f}}、{{t|co|Auropa|f}}
* 捷克語:{{t+|cs|Evropa|f}}
* 丹麥語:{{t+|da|Europa|n}}
* 迪維希語:{{t|dv|ޔޫރަޕު}}
* 荷蘭語:{{t+|nl|Europa|n}}
* 埃爾齊亞語:{{t|myv|Европа}}
* 英語:{{t+|en|Europe}}
* 世界語:{{t+|eo|Eŭropo}}
* 愛沙尼亞語:{{t+|et|Euroopa}}
* 法拉法拉語:{{t|gur|Europa}}
* 法羅語:{{t|fo|Evropa|n}}
* 芬蘭語:{{t+|fi|Eurooppa}}
* 法語:{{t+|fr|Europe|f}}
* 加利西亞語:{{t+|gl|Europa|f}}
* 格魯吉亞語:{{t+|ka|ევროპა}}
* 德語:{{t+|de|Europa|n}}
* 希臘語:{{t+|el|Ευρώπη|f}}
*: 古希臘語:{{t|grc|Εὐρώπη|f}}
* 古吉拉特語:{{t|gu|યુરોપ}}
* 古西語:{{t|guz|Ng’umbu}}
* 海地克里奧爾語:{{t|ht|Ewòp}}
* 哈爾彥維語:{{t|bgc|ऐ़रूप}}
* 豪薩語:{{t+|ha|Turai}}
* 夏威夷語:{{t|haw|ʻEulopa}}
* 希伯來語:{{t+|he|אֵירוֹפָּה|f|tr=eirópa}}
* 希利蓋農語:{{t|hil|Ewropa}}
* 印地語:{{t+|hi|यूरोप}}、{{t+|hi|युरोप|m}}
* 匈牙利語:{{t+|hu|Európa}}
* 冰島語:{{t+|is|Evrópa|f}}
* 伊多語:{{t+|io|Europa}}
* 伊博語:{{t|ig|Iroopu}}
* 印尼語:{{t+|id|Eropa}}
* 因特語:{{t+|ia|Europa}}
* 愛爾蘭語:{{t+|ga|Eoraip|f}}
* 意大利語:{{t+|it|Europa}}
* 日語:{{t+|ja|ヨーロッパ|tr=Yōroppa}}、{{t+|ja|欧羅巴|tr=Yōroppa}} {{qualifier|借字}}、{{t+|ja|欧州|tr=おうしゅう, Ōshū}}
* 東切爾克斯語:{{t|kbd|Еуропэ}}
* 卡納達語:{{t+|kn|ಯುರೋಪ್}}
* 卡舒比語:{{t|csb|Eùropa|f}}
* 哈薩克語:{{t+|kk|Еуропа}}
* 高棉語:{{t+|km|អឺរ៉ុប}}
* 彼爾姆科米語:{{t|koi|Европа}}
* 茲梁科米語:{{t|kpv|Европа}}
* 朝鮮語:{{t+|ko|^유럽}}、{{t+|ko|^구주(歐洲)}}、{{t+|ko|^구라파(歐羅巴)}} {{qualifier|過時}}
* 庫爾德語:
*: 中庫爾德語:{{t|ckb|ئەوروپا}}
*: 北庫爾德語:{{t+|kmr|Ewropa}}
* 吉爾吉斯語:{{t+|ky|Европа}}
* 拉登語:{{t-needed|lld}}
* 拉蒂諾語:{{t-needed|lad}}
* 老撾語:{{t|lo|ເອີລົບ}}、{{t+|lo|ເອີຣົບ}} {{qualifier|過時}}
* 拉丁語:{{t+|la|Eurōpa|f}}
* 拉脫維亞語:{{t|lv|Eiropa|f}}
* 利古里亞語:{{t|lij|Eoröpa}}
* 立陶宛語:{{t+|lt|Europa|f}}
* 立窩尼亞語:{{t|liv|Eirōp}}
* 低地德語:{{t+|nds|Europa}}、{{t|nds|Uropa}}
* 傣仂語:{{t|khb|ᦵᦁᦲᧁᧈᦵᦋᦲᧁᧈ}}
* 盧森堡語:{{t+|lb|Europa|f}}
* 馬其頓語:{{t|mk|Европа|f}}
* 馬來語:{{t+|ms|Eropah}}
* 馬拉雅拉姆語:{{t+|ml|യൂറോപ്പ്}}
* 馬爾他語:{{t|mt|Ewropa|f|alt=L-Ewropa}}
* 曼島語:{{t|gv|Oarpey}}
* 毛利語:{{t+|mi|Ūropi}}
* 馬拉地語:{{t|mr|युरोप}}
* 毛里求斯克里奧爾語:{{t|mfe|Lerop}}
* 中古英語:{{t|enm|Europe}}
* 米蘭德斯語:{{t|mwl|Ouropa|f}}
* 莫克沙語:{{t|mdf|Европа}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Европ}}
*: 蒙古語:{{t|mn|ᠧᠦ᠋ᠷᠣᠫᠠ}}
* 莫西語:{{t|mos|Yerope}}、{{t|mos|yerope}}、{{t|mos|Nasaar-tẽnga}}
* 納瓦特爾語:{{t|nah|Europan}}
* 瑙魯語:{{t|na|Uirope}}
* 納瓦霍語:{{t|nv|Tó Wónaanídi Bilagáana Bikéyah}}
* 尼泊爾語:{{t|ne|युरोप}}
* 大科摩羅語:{{t|zdj|Ulaya|c11}}
* 北弗里斯蘭語:{{t|frr|Europa}} {{qualifier|黑爾戈蘭島}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Europa|n}}
*: 新挪威語:{{t+|nn|Europa|n}}
* 奧克語:{{t+|oc|Euròpa|f}}
* 奧利亞語:{{t|or|ୟୁରୋପ}}
* 奧塞梯語:{{t|os|Европӕ}}
* 普什圖語:{{t+|ps|اروپا|f|tr=orupã}}、{{t+|ps|يورپ|m|tr=uróp}}
* 波斯語:{{t+|fa|اروپا|tr=orupâ}}、{{t|fa|اورپا|tr=oropâ}}、{{t|fa|فرنگستان|tr=farangestân}}
* 皮特凱恩語:{{t|pih|Urup}}
* 波蘭語:{{t+|pl|Europa|f}}
* 葡萄牙語:{{t+|pt|Europa|f}}
* 旁遮普語:{{t|pa|ਯੂਰਪ}}
* 羅馬尼亞語:{{t+|ro|Europa|f}}
*: 西里爾字母:{{t+|ro|Еуропа|f}}
* 羅曼什語:{{t|rm|Europa|f}}
* 俄語:{{t+|ru|Евро́па|f}}
* 盧森尼亞語:{{t|rue|Евро́па|f}}
* 梵語:{{t|sa|आरूप}}
* 低地蘇格蘭語:{{t|sco|Europe}}
* 蘇格蘭蓋爾語:{{t|gd|Roinn-Eòrpa|f|alt=an Roinn-Eòrpa}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Евро́па|f}}、{{t|sh|Еуро́па|f}} {{qualifier|克羅地亞/克羅埃西亞}}
*: 拉丁字母:{{t+|sh|Evrópa|f}}、{{t+|sh|Európa|f}} {{qualifier|克羅地亞/克羅埃西亞}}
* 西里西亞語:{{t|szl|Ojropa}}
* 僧加羅語:{{t+|si|යුරෝපය}}
* 斯洛伐克語:{{t+|sk|Európa|f}}
* 斯洛文尼亞語:{{t+|sl|Evrópa|f}}
* 索布語:
*: 下索布語:{{t|dsb|Europa|f}}
*: 上索布語:{{t+|hsb|Europa|f}}
* 塞索托語:{{t|st|Yuropo}}
* 西班牙語:{{t+|es|Europa|f}}
* 蘇庫馬語:{{t|suk|bulaya}}
* 斯瓦希里語:{{t|sw|Ulaya}}、{{t|sw|Uropa}} {{qualifier|罕用}}
* 瑞典語:{{t+|sv|Europa|n}}
* 他加祿語:{{t+|tl|Europa}}
* 塔吉克語:{{t+|tg|Аврупо}}
* 泰米爾語:{{t+|ta|ஐரோப்பா}}
* 韃靼語:{{t|tt|Аурупа}}
* 泰盧固語:{{t+|te|ఐరోపా}}、{{t|te|యూరప్}}
* 泰語:{{t+|th|ยุโรป}}
* 藏語:{{t|bo|ཡོ་རོབ་གླིང}}
* 提格里尼亞語:{{t|ti|ኤውሮጳ}}
* 土耳其語:{{t+|tr|Avrupa}}
* 土庫曼語:{{t|tk|Ýewropa}}
* 烏得穆爾特語:{{t|udm|Европа}}
* 烏克蘭語:{{t+|uk|Євро́па|f}}
* 烏爾都語:{{t|ur|یورپ|tr=yūrap|m}}
* 維吾爾語:{{t|ug|ياۋروپا}}
* 烏茲別克語:{{t+|uz|Yevropa}}
* 維普斯語:{{t-needed|vep}}
* 越南語:{{t+|vi|Châu Âu}} ({{t|vi|洲歐}}), {{t+|vi|Âu}} ({{t|vi|歐}})
* 沃拉普克語:{{t+|vo|Yurop}}
* 佛羅語:{{t-needed|vro}}
* 沃特語:{{t-needed|vot}}
* 瓦隆語:{{t+|wa|Urope|f}}
* 威爾士語:{{t+|cy|Ewrop|f}}
* 西弗里斯蘭語:{{t+|fy|Jeropa|n}}、{{t+|fy|Europa|n}}
* 雅庫特語:{{t|sah|Европа}}
* 意第緒語:{{t|yi|אייראָפּע|f}}
* 約魯巴語:{{t|yo|Yúróòpù}}
* 壯語:{{t|za|Ouhcouh}}
{{trans-bottom}}
===形容詞===
{{head|zh|形容詞}}
# {{lb|zh|neologism|俚語|抽卡遊戲}} [[好運]]
#: {{ant|zh|非洲}}
{{zh-cat|大洲}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-pos|proper|hangeul=구주}}
# {{hanja form of|구주}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Âu châu|}}
mfiec6adz5892434iscsu6rmpyyrn5n
9759646
9759645
2026-05-14T23:42:03Z
TongcyDai
53191
9759646
wikitext
text/x-wiki
{{also|洲歐}}
==漢語==
{{zh-forms|s=欧洲}}
{{zh-wp|zh|wuu|yue|gan|hak:Êu-chû|nan:Au-chiu|cdo:Ĕu-ciŭ|lzh:歐羅巴洲}}
[[File:Europe orthographic Caucasus Urals boundary (with borders).svg|250px|thumb]]
===詞源===
源自{{zh-m|歐|note={{zh-l|歐羅巴}}的簡稱}} + {{zh-m|洲}}。
===發音===
{{zh-pron
|m=Ōuzhōu
|c=au1 zau1
|h=pfs=Êu-chû
|md=Ĕu-ciŭ
|mn=xm,tw:Au-chiu
|mn-t=ao1 ziu1
|w=1eu tseu
|cat=pn,a
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q46}}{{place|zh|位於[[亞洲]]以西(通常以[[烏拉爾山脈]]為界)、[[非洲]]以北、[[大西洋]]以東的<<大洲>>;為[[地球]]的七大[[洲]]之一|tcl=[[亞洲]]以西、[[非洲]]以北的<<大洲>>}}
#: {{zh-x|^歐洲 一體化|}}
#: {{zh-x|^歐洲 發端|}}
====同義詞====
* {{qualifier|簡稱}} {{zh-l|歐}}
* {{qualifier|過時}} {{zh-l|歐羅巴}}
====派生詞彙====
{{col3|zh|歐洲聯盟|歐洲大陸|歐洲鰉|歐安會}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q46|大洲}}
* 阿布哈茲語:{{t|ab|Европа}}
* 亞齊語:{{t|ace|Iërupa}}
* 南非語:{{t+|af|Europa}}
* 阿坎語:{{t|ak|Yurop}}
* 阿爾巴尼亞語:{{t|sq|Evropë|f}}、{{t+|sq|Evropa|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|አውሮፓ}}
* 安地列斯克里奧爾語:{{t|gcf|Éwop}}
* 阿拉伯語:{{t+|ar|أُورُوبَّا|f}}、{{t|ar|أُورُبَّا|f}}、{{t|ar|أُورُوبَّة|f}}
*: 埃及阿拉伯語:{{t|arz|أوروبا|f|tr=ʔurupa, ʔuruba}}
*: 漢志阿拉伯語:{{t|acw|أوربّا|f|tr=ʔōrubba}}、{{t|acw|أورپا|f|tr=ʔōruppa}}
* 阿拉貢語:{{t|an|Europa|f}}
* 亞美尼亞語:{{t+|hy|Եվրոպա}}
* 阿薩姆語:{{t|as|ইউৰোপ}}
* 亞述新亞拉姆語:{{t|aii|ܐܘܪܝܦܝ}}
* 阿斯圖里亞斯語:{{t+|ast|Europa|f}}
* 艾馬拉語:{{t+|ay|Iwrupa}}
* 阿塞拜疆語:{{t+|az|Avropa}}、{{t|az|Ovropa}} {{qualifier|仿古}}
* 班查語:{{t|bjn|Irupa}}
* 巴什基爾語:{{t|ba|Европа}}、{{qualifier|棄用}} {{t|ba|Аурупа}}
* 巴斯克語:{{t+|eu|Europa}}
* 白俄羅斯語:{{t|be|Еўро́па|f}}、{{t|be|Эўро́па|f}} {{qualifier|傳統正寫法}}
* 孟加拉語:{{t+|bn|ইউরোপ}}
* 保加利亞語:{{t+|bg|Евро́па|f}}
* 緬甸語:{{t|my|ဥရောပ}}
* 布里亞特語:{{t|bua|Европо}}
* 加泰羅尼亞語:{{t+|ca|Europa|f}}
* 車臣語:{{t|ce|Европа}}、{{t|ce|Йивроп}}
* 齊切瓦語:{{t|ny|Ulaya}}
* 科西嘉語:{{t|co|Europa|f}}、{{t|co|Auropa|f}}
* 捷克語:{{t+|cs|Evropa|f}}
* 丹麥語:{{t+|da|Europa|n}}
* 迪維希語:{{t|dv|ޔޫރަޕު}}
* 荷蘭語:{{t+|nl|Europa|n}}
* 埃爾齊亞語:{{t|myv|Европа}}
* 英語:{{t+|en|Europe}}
* 世界語:{{t+|eo|Eŭropo}}
* 愛沙尼亞語:{{t+|et|Euroopa}}
* 法拉法拉語:{{t|gur|Europa}}
* 法羅語:{{t|fo|Evropa|n}}
* 芬蘭語:{{t+|fi|Eurooppa}}
* 法語:{{t+|fr|Europe|f}}
* 加利西亞語:{{t+|gl|Europa|f}}
* 格魯吉亞語:{{t+|ka|ევროპა}}
* 德語:{{t+|de|Europa|n}}
* 希臘語:{{t+|el|Ευρώπη|f}}
*: 古希臘語:{{t|grc|Εὐρώπη|f}}
* 古吉拉特語:{{t|gu|યુરોપ}}
* 古西語:{{t|guz|Ng’umbu}}
* 海地克里奧爾語:{{t|ht|Ewòp}}
* 哈爾彥維語:{{t|bgc|ऐ़रूप}}
* 豪薩語:{{t+|ha|Turai}}
* 夏威夷語:{{t|haw|ʻEulopa}}
* 希伯來語:{{t+|he|אֵירוֹפָּה|f|tr=eirópa}}
* 希利蓋農語:{{t|hil|Ewropa}}
* 印地語:{{t+|hi|यूरोप}}、{{t+|hi|युरोप|m}}
* 匈牙利語:{{t+|hu|Európa}}
* 冰島語:{{t+|is|Evrópa|f}}
* 伊多語:{{t+|io|Europa}}
* 伊博語:{{t|ig|Iroopu}}
* 印尼語:{{t+|id|Eropa}}
* 因特語:{{t+|ia|Europa}}
* 愛爾蘭語:{{t+|ga|Eoraip|f}}
* 意大利語:{{t+|it|Europa}}
* 日語:{{t+|ja|ヨーロッパ|tr=Yōroppa}}、{{t+|ja|欧羅巴|tr=Yōroppa}} {{qualifier|借字}}、{{t+|ja|欧州|tr=おうしゅう, Ōshū}}
* 東切爾克斯語:{{t|kbd|Еуропэ}}
* 卡納達語:{{t+|kn|ಯುರೋಪ್}}
* 卡舒比語:{{t|csb|Eùropa|f}}
* 哈薩克語:{{t+|kk|Еуропа}}
* 高棉語:{{t+|km|អឺរ៉ុប}}
* 彼爾姆科米語:{{t|koi|Европа}}
* 茲梁科米語:{{t|kpv|Европа}}
* 朝鮮語:{{t+|ko|^유럽}}、{{t+|ko|^구주(歐洲)}}、{{t+|ko|^구라파(歐羅巴)}} {{qualifier|過時}}
* 庫爾德語:
*: 中庫爾德語:{{t|ckb|ئەوروپا}}
*: 北庫爾德語:{{t+|kmr|Ewropa}}
* 吉爾吉斯語:{{t+|ky|Европа}}
* 拉登語:{{t-needed|lld}}
* 拉蒂諾語:{{t-needed|lad}}
* 老撾語:{{t|lo|ເອີລົບ}}、{{t+|lo|ເອີຣົບ}} {{qualifier|過時}}
* 拉丁語:{{t+|la|Eurōpa|f}}
* 拉脫維亞語:{{t|lv|Eiropa|f}}
* 利古里亞語:{{t|lij|Eoröpa}}
* 立陶宛語:{{t+|lt|Europa|f}}
* 立窩尼亞語:{{t|liv|Eirōp}}
* 低地德語:{{t+|nds|Europa}}、{{t|nds|Uropa}}
* 傣仂語:{{t|khb|ᦵᦁᦲᧁᧈᦵᦋᦲᧁᧈ}}
* 盧森堡語:{{t+|lb|Europa|f}}
* 馬其頓語:{{t|mk|Европа|f}}
* 馬來語:{{t+|ms|Eropah}}
* 馬拉雅拉姆語:{{t+|ml|യൂറോപ്പ്}}
* 馬爾他語:{{t|mt|Ewropa|f|alt=L-Ewropa}}
* 曼島語:{{t|gv|Oarpey}}
* 毛利語:{{t+|mi|Ūropi}}
* 馬拉地語:{{t|mr|युरोप}}
* 毛里求斯克里奧爾語:{{t|mfe|Lerop}}
* 中古英語:{{t|enm|Europe}}
* 米蘭德斯語:{{t|mwl|Ouropa|f}}
* 莫克沙語:{{t|mdf|Европа}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Европ}}
*: 蒙古語:{{t|mn|ᠧᠦ᠋ᠷᠣᠫᠠ}}
* 莫西語:{{t|mos|Yerope}}、{{t|mos|yerope}}、{{t|mos|Nasaar-tẽnga}}
* 納瓦特爾語:{{t|nah|Europan}}
* 瑙魯語:{{t|na|Uirope}}
* 納瓦霍語:{{t|nv|Tó Wónaanídi Bilagáana Bikéyah}}
* 尼泊爾語:{{t|ne|युरोप}}
* 大科摩羅語:{{t|zdj|Ulaya|c11}}
* 北弗里斯蘭語:{{t|frr|Europa}} {{qualifier|黑爾戈蘭島}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Europa|n}}
*: 新挪威語:{{t+|nn|Europa|n}}
* 奧克語:{{t+|oc|Euròpa|f}}
* 奧利亞語:{{t|or|ୟୁରୋପ}}
* 奧塞梯語:{{t|os|Европӕ}}
* 普什圖語:{{t+|ps|اروپا|f|tr=orupã}}、{{t+|ps|يورپ|m|tr=uróp}}
* 波斯語:{{t+|fa|اروپا|tr=orupâ}}、{{t|fa|اورپا|tr=oropâ}}、{{t|fa|فرنگستان|tr=farangestân}}
* 皮特凱恩語:{{t|pih|Urup}}
* 波蘭語:{{t+|pl|Europa|f}}
* 葡萄牙語:{{t+|pt|Europa|f}}
* 旁遮普語:{{t|pa|ਯੂਰਪ}}
* 羅馬尼亞語:{{t+|ro|Europa|f}}
*: 西里爾字母:{{t+|ro|Еуропа|f}}
* 羅曼什語:{{t|rm|Europa|f}}
* 俄語:{{t+|ru|Евро́па|f}}
* 盧森尼亞語:{{t|rue|Евро́па|f}}
* 梵語:{{t|sa|आरूप}}
* 低地蘇格蘭語:{{t|sco|Europe}}
* 蘇格蘭蓋爾語:{{t|gd|Roinn-Eòrpa|f|alt=an Roinn-Eòrpa}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Евро́па|f}}、{{t|sh|Еуро́па|f}} {{qualifier|克羅地亞/克羅埃西亞}}
*: 拉丁字母:{{t+|sh|Evrópa|f}}、{{t+|sh|Európa|f}} {{qualifier|克羅地亞/克羅埃西亞}}
* 西里西亞語:{{t|szl|Ojropa}}
* 僧加羅語:{{t+|si|යුරෝපය}}
* 斯洛伐克語:{{t+|sk|Európa|f}}
* 斯洛文尼亞語:{{t+|sl|Evrópa|f}}
* 索布語:
*: 下索布語:{{t|dsb|Europa|f}}
*: 上索布語:{{t+|hsb|Europa|f}}
* 塞索托語:{{t|st|Yuropo}}
* 西班牙語:{{t+|es|Europa|f}}
* 蘇庫馬語:{{t|suk|bulaya}}
* 斯瓦希里語:{{t|sw|Ulaya}}、{{t|sw|Uropa}} {{qualifier|罕用}}
* 瑞典語:{{t+|sv|Europa|n}}
* 他加祿語:{{t+|tl|Europa}}
* 塔吉克語:{{t+|tg|Аврупо}}
* 泰米爾語:{{t+|ta|ஐரோப்பா}}
* 韃靼語:{{t|tt|Аурупа}}
* 泰盧固語:{{t+|te|ఐరోపా}}、{{t|te|యూరప్}}
* 泰語:{{t+|th|ยุโรป}}
* 藏語:{{t|bo|ཡོ་རོབ་གླིང}}
* 提格里尼亞語:{{t|ti|ኤውሮጳ}}
* 土耳其語:{{t+|tr|Avrupa}}
* 土庫曼語:{{t|tk|Ýewropa}}
* 烏得穆爾特語:{{t|udm|Европа}}
* 烏克蘭語:{{t+|uk|Євро́па|f}}
* 烏爾都語:{{t|ur|یورپ|tr=yūrap|m}}
* 維吾爾語:{{t|ug|ياۋروپا}}
* 烏茲別克語:{{t+|uz|Yevropa}}
* 維普斯語:{{t-needed|vep}}
* 越南語:{{t+|vi|Châu Âu}} ({{t|vi|洲歐}}), {{t+|vi|Âu}} ({{t|vi|歐}})
* 沃拉普克語:{{t+|vo|Yurop}}
* 佛羅語:{{t-needed|vro}}
* 沃特語:{{t-needed|vot}}
* 瓦隆語:{{t+|wa|Urope|f}}
* 威爾士語:{{t+|cy|Ewrop|f}}
* 西弗里斯蘭語:{{t+|fy|Jeropa|n}}、{{t+|fy|Europa|n}}
* 雅庫特語:{{t|sah|Европа}}
* 意第緒語:{{t|yi|אייראָפּע|f}}
* 約魯巴語:{{t|yo|Yúróòpù}}
* 壯語:{{t|za|Ouhcouh}}
{{trans-bottom}}
===形容詞===
{{head|zh|形容詞}}
# {{lb|zh|neologism|俚語|抽卡遊戲}} [[好運]]
#: {{ant|zh|非洲}}
{{zh-cat|大洲}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-pos|proper|hangeul=구주}}
# {{hanja form of|구주}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Âu châu|}}
83lj2jakka7sb6t2z52sneyv3bslttv
亞洲
0
13398
9759627
9728254
2026-05-14T23:20:08Z
TongcyDai
53191
9759627
wikitext
text/x-wiki
{{also|洲亞}}
==漢語==
{{zh-forms|s=亚洲}}
{{zh-wp}}
[[File:Asia (orthographic projection).svg|250px|thumb]]
===發音===
{{zh-pron
|m=亞zhōu,cap=y,2cap=y
|c=aa3 zau1
|g='nga3 ziiu1
|h=pfs=Á-chû;hrs=h:aˊ zhiuˋ/h:aˋ zhiuˋ
|md=Ā-ciŭ
|mn=A-chiu
|mn-t=a1 ziu1
|px=pt,xy:^a4 ziu1
|w=sh:1ia tseu
|cat=pn
|ca=LL-Q9186-Luilui6666-亚洲.wav
}}
===專有名詞===
{{zh-proper noun}}
# {{senseid|zh|Q48}}{{place|zh|地球上面積最大的<<大洲>>,位於[[歐洲]]以東(通常以[[烏拉山脈]]為界),[[太平洋]]以西,[[大洋洲]]以北,[[北冰洋]]以南|tcl=地球上面積最大的<<大洲>>,位於[[歐洲]]和[[太平洋]]之間}}
====同義詞====
* {{qual|過時}} {{zh-l|亞細亞}}
* {{qual|正式|書面}} {{zh-l|亞細亞洲}}
====衍生詞====
{{col3|zh|亞超|亞洲人|亞洲四小龍|亞洲運動會|亞洲象|亞洲胡狼}}
====派生詞====
{{CJKV|s=亜洲||あしゅう|아주|Á châu}}
其他:
* {{desc|vi|châu Á|calq=1}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|大洲|id=Q48}}
* 阿布哈茲語:{{t|ab|Азиа}}
* 西切爾克斯語:{{t|ady|Азие}}
* 南非語:{{t|af|Asië}}
* 阿坎語:{{t|ak|Ehyia}}、{{t|ak|Asia}}
* 阿爾巴尼亞語:{{t|sq|Azi|f}}、{{t+|sq|Azia|f}} {{qualifier|定形}}
*: 古阿爾巴尼亞語:{{t|sq|Natoli|alt=Natolia|f}}
* 阿姆哈拉語:{{t|am|እስያ}}
* 阿拉伯語:{{t+|ar|آسِيَا|f}}
*: 埃及阿拉伯語:{{t|arz|أسيا|f|tr=asya}}
*: 漢志阿拉伯語:{{t|acw|آسْيَا|f|tr=ʾāsya}}
*: 南黎凡特阿拉伯語:{{t|ajp|آسيا|tr=ʔāsya}}
* 阿拉貢語:{{t|an|Asia|f}}
* 亞美尼亞語:{{t+|hy|Ասիա}}
*: 古典亞美尼亞語:{{t|xcl|Ասիա}}
* 阿薩姆語:{{t|as|এছিয়া}}
* 亞述新亞拉姆語:{{t|aii|ܐܲܣܝܼܵܐ|tr=Āsiya|f}}
* 阿斯圖里亞斯語:{{t+|ast|Asia|f}}
* 阿瓦爾語:{{t|av|Азия}}
* 阿塞拜疆語:{{t+|az|Asiya}}
* 巴厘語:{{t|ban|Asia}}
* 巴什基爾語:{{t|ba|Азия}}
* 巴斯克語:{{t+|eu|Asia}}
* 巴伐利亞語:{{t|bar|Asien}}
* 白俄羅斯語:{{t|be|А́зія|f}}
* 孟加拉語:{{t+|bn|এশিয়া}}
* 中比科爾語:{{t|bcl|Asya}}
* 比什奴普萊利亞-曼尼普爾語:{{t|bpy|এশিয়া}}
* 布拉灰語:{{t|brh|Eşíá}}
* 布列塔尼語:{{t+|br|Azia|f}}
* 保加利亞語:{{t+|bg|А́зия|f}}
* 緬甸語:{{t+|my|အာရှ}}
* 布里亞特語:{{t|bua|Ази}}
* 加泰羅尼亞語:{{t+|ca|Àsia|f}}
* 宿霧語:{{t|ceb|Asya}}
* 車臣語:{{t|ce|Ази}}
* 切羅基語:{{t|chr|ᎠᏏᎠ}}、{{t|chr|ᏓᎶᏂᎨᏍᏛ}}
* 楚瓦什語:{{t|cv|Ази}}
* 康沃爾語:{{t|kw|Asi}}
* 科西嘉語:{{t+|co|Asia}}
* 克里米亞韃靼語:{{t|crh|Asiya}}
* 捷克語:{{t+|cs|Asie|f}}
* 丹麥語:{{t+|da|Asien|n}}
* 迪維希語:{{t|dv|އޭޝިއާ}}
* 丁卡語:{{t|din|Athiɛ}}
* 荷蘭語:{{t+|nl|Azië|n}}
* 宗喀語:{{t|dz|ཨ་ཤི་ཡ}}
* 英語:{{t+|en|Asia}}
* 埃爾齊亞語:{{t|myv|Азия}}
* 世界語:{{t+|eo|Azio}}
* 愛沙尼亞語:{{t+|et|Aasia}}
* 法拉法拉語:{{t|gur|Asia}}
* 法羅語:{{t|fo|Asia}}
* 芬蘭語:{{t+|fi|Aasia}}
* 法蘭克-普羅旺斯語:{{t|frp|Asia|f}}
* 法語:{{t+|fr|Asie|f}}
* 弗留利語:{{t|fur|Asie|f}}
* 加利西亞語:{{t+|gl|Asia|f}}
* 格魯吉亞語:{{t|ka|აზია}}
* 德語:{{t+|de|Asien|n}}
*: 中部法蘭克尼亞語:{{t|gmw-cfr|Aasije}}
* 希臘語:{{t+|el|Ασία|f}}
*: 古希臘語:{{t|grc|Ἀσία|f}}
* 格陵蘭語:{{t|kl|Asia}}
* 巴拉圭瓜拉尼語:{{t|gug|Asya}}
* 古吉拉特語:{{t+|gu|એશિયા}}
* 海地克里奧爾語:{{t|ht|Azi}}
* 豪薩語:{{t|ha|Asiya}}
* 夏威夷語:{{t|haw|ʻĀkia}}
* 希伯來語:{{t+|he|אַסְיָה|f|tr=ásya}}
* 印地語:{{t+|hi|एशिया}}
* 匈牙利語:{{t+|hu|Ázsia}}
* 冰島語:{{t+|is|Asía|f}}
* 伊多語:{{t+|io|Azia}}
* 伊博語:{{t|ig|Asia}}
* 伊洛卡諾語:{{t|ilo|Asia}}
* 印尼語:{{t+|id|Asia}}
* 印古什語:{{t|inh|Ази}}
* 因特語:{{t+|ia|Asia}}
* 愛爾蘭語:{{t|ga|Áise|f|alt=An Áise}}
*: 古愛爾蘭語:{{t|sga|Aissia}}
* 意大利語:{{t+|it|Asia|f}}
* 日語:{{t+|ja|アジア|tr=Ajia}}、{{qualifier|過時}} {{t+|ja|亜細亜|tr=あじあ, Ajia}}、{{t|ja|亜洲|tr=あしゅう, Ashū}}
* 爪哇語:{{t|jv|Asia}}
* 東切爾克斯語:{{t|kbd|Азиэ}}
* 卡拜爾語:{{t|kab|Asya}}
* 卡納達語:{{t+|kn|ಏಷ್ಯಾ}}
* 卡片片甘語:{{t|pam|Asia}}
* 克什米爾語:{{t|ks|ایشیا}}
* 卡舒比語:{{t|csb|Azjô|f}}
* 哈薩克語:{{t+|kk|Азия}}
* 高棉語:{{t+|km|អាស៊ី}}
* 彼爾姆科米語:{{t|koi|Азия}}
* 茲梁科米語:{{t|kpv|Азия}}
* 朝鮮語:{{t+|ko|^아시아}}、{{t+|ko|^아주(亞洲)}}
* 庫爾德語:
*: 中庫爾德語:{{t|ckb|ئاسیا}}
*: 北庫爾德語:{{t+|kmr|Asya}}
* 吉爾吉斯語:{{t+|ky|Азия}}
* 拉蒂諾語:{{t|lad|Asia|f}}
* 拉克語:{{t|lbe|Азия}}
* 老撾語:{{t+|lo|ອາຊີ}}
* 拉丁語:{{t+|la|Asia|f}}
* 拉脫維亞語:{{t+|lv|Āzija|f}}
* 列茲金語:{{t|lez|Азия}}
* 利古里亞語:{{t|lij|Asia}}
* 林堡語:{{t+|li|Azië}}
* 林加拉語:{{t|ln|Azía}}
* 立陶宛語:{{t+|lt|Azija|f}}
* 低地德語:{{t|nds|Asien}}
* 盧森堡語:{{t+|lb|Asien}}
* 傣仂語:{{t|khb|ᦊᦱᧈᦵᦋᦲᧁᧈ}}
* 馬其頓語:{{t|mk|А́зија|f}}
* 馬拉加斯語:{{t+|mg|Azia}}
* 馬來語:{{t|ms|Asia}}
* 馬拉雅拉姆語:{{t+|ml|ഏഷ്യ}}
* 馬爾他語:{{t|mt|Asja|f}}
* 曼島語:{{t|gv|Aishey|alt=Yn Aishey}}
* 馬拉地語:{{t|mr|आशिया}}
* 馬里語:
*: 東馬里語:{{t|mhr|Азий}}
*: 西馬里語:{{t|mrj|Ази}}
* 馬贊德蘭語:{{t|mzn|آسیا}}
* 莫克沙語:{{t|mdf|Азия}}、{{t|mdf|Азиясь}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Ази}}
*: 蒙古語:{{t|mn|ᠠᠽᠢ}}、{{t|mn|ᠠᠽᠢᠶᠠ}}
* 莫西語:{{t|mos|Azi}}、{{t|mos|azi}}
* 納瓦特爾語:{{t|nah|Axia}}
* 那不勒斯語:{{t|nap|Asia|f}}
* 尼泊爾語:{{t|ne|एशिया}}
* 尼瓦爾語:{{t|new|एसिया}}
* 諾曼語:{{t|nrf|Âsie|f}} {{qual|澤西}}
* 北薩米語:{{t|se|Ásia}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Asia|n}}
*: 新挪威語:{{t+|nn|Asia|n}}
* 奧克語:{{t+|oc|Asia|f}}
* 教會斯拉夫語:
*: 西里爾字母:{{t|cu|Асїꙗ|f}}
* 古東斯拉夫語:{{t|orv|Асиꙗ}}
* 奧利亞語:{{t|or|ଏସିଯା}}、{{t|or|ଏସିଆ}}
* 奧羅莫語:{{t|om|Asia}}
* 奧塞梯語:{{t|os|Ази}}
* 鄂圖曼土耳其語:{{t|ota|آسیا|tr=asiya}}
* 班詩蘭語:{{t|pag|Asia}}
* 普什圖語:{{t+|ps|آسيا|f|tr=āsyā}}、{{t|ps|اېشيا|f|tr=ešyā}}
* 賓夕法尼亞德語:{{t|pdc|Asie}}
* 波斯語:{{t+|fa|آسیا|tr=âsiyâ}}
* 皮埃蒙特語:{{t|pms|Asia|f}}
* 門諾低地德語:{{t|pdt|Asien|n}}
* 波蘭語:{{t+|pl|Azja|f}}
* 葡萄牙語:{{t+|pt|Ásia|f}}
* 旁遮普語:{{t|pa|ਏਸ਼ਿਆ}}
* 克丘亞語:{{t|qu|Asya}}
* 羅興亞語:{{t|rhg|Asía}}
* 羅馬尼亞語:{{t+|ro|Asia|f}}
* 羅曼什語:{{t|rm|Asia|f}}
* 俄語:{{t+|ru|А́зия|f}}
* 盧森尼亞語:{{t|rue|А́зія|f}}
* 盧旺達語:{{t|rw|Azia}}
* 斯高克倫語:{{t|ksw|အ့ၡၢၣ်}}
* 薩摩亞語:{{t|sm|Asia}}
* 梵語:{{t|sa|एशिया}}
* 桑塔利語:{{t|sat|ᱮᱥᱤᱭᱟ}}
* 低地蘇格蘭語:{{t|sco|Asie}}
* 蘇格蘭蓋爾語:{{t|gd|Àisia|f}}、{{t|gd|Aisia}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|А̑зија|f}}
*: 拉丁字母:{{t+|sh|Ȃzija|f}}
* 西西里語:{{t|scn|Asia|f}}
* 西里西亞語:{{t|szl|Azyjo|f}}
* 信德語:{{t|sd|ايشيا}}
* 僧加羅語:{{t|si|ආසියාව}}
* 斯洛伐克語:{{t+|sk|Ázia|f}}
* 斯洛文尼亞語:{{t+|sl|Ázija|f}}
* 索馬里語:{{t+|so|Aasiya}}
* 索布語:
*: 下索布語:{{t|dsb|Azija|f}}
*: 上索布語:{{t+|hsb|Azija|f}}
* 塞索托語:{{t|st|Asia}}
* 西班牙語:{{t+|es|Asia|f}}
* 巽他語:{{t+|su|Asia}}
* 斯瓦希里語:{{t+|sw|Asia}}
* 瑞典語:{{t+|sv|Asien|n}}
* 他加祿語:{{t+|tl|Asya}}
* 塔吉克語:{{t+|tg|Осиё}}
* 泰米爾語:{{t+|ta|ஆசியா}}
* 韃靼語:{{t|tt|Азия}}
* 泰盧固語:{{t+|te|ఆసియా}}
* 德頓語:{{t|tet|Ázia}}
* 泰語:{{t+|th|เอเชีย}}
* 藏語:{{t|bo|ཨེ་ཤེ་ཡ}}、{{t|bo|ཡ་ཀྲོའུ་གླིང}}
* 提格里尼亞語:{{t|ti|እስያ}}
* 托克皮辛語:{{t|tpi|Esia}}
* 土耳其語:{{t+|tr|Asya}}
* 土庫曼語:{{t+|tk|Aziýa}}
* 圖瓦語:{{t|tyv|Азия}}
* 烏得穆爾特語:{{t|udm|Азия}}
* 烏克蘭語:{{t+|uk|А́зія|f}}
* 烏爾都語:{{t|ur|ایشیاء|tr=eśiyā'}}、{{t+|ur|ایشیا|m|tr=eśiyā}}
* 維吾爾語:{{t|ug|ئاسىيا}}
* 烏茲別克語:{{t+|uz|Osiyo}}
* 威尼斯語:{{t+|vec|Axia|f}}
* 越南語:{{t+|vi|Châu Á}} ({{t|vi|洲亞}})、{{t|vi|Á Châu}} ({{t|vi|亞洲}})、{{t+|vi|Á}} ({{t|vi|亞}})、{{qualifier|罕用、棄用}} {{t|vi|Á Tế Á}} ({{t|vi|亞細亞}})
* 沃拉普克語:{{t+|vo|Siyop}}
* 瓦隆語:{{t+|wa|Azeye}}
* 威爾士語:{{t+|cy|Asia}}
* 西弗里斯蘭語:{{t+|fy|Aazje}}
* 西旁遮普語:{{t|pnb|ایشیا}}
* 沃洛夫語:{{t+|wo|Asi}}
* 雅庫特語:{{t|sah|Азия}}
* 意第緒語:{{t|yi|אַזיע|f}}
* 約魯巴語:{{t|yo|Éṣíà}}
* 壯語:{{t|za|Yacouh}} ({{t|za|亞洲}})
{{trans-bottom}}
{{C|zh|大洲}}
==日語==
{{ja-kanjitab|あ|しゅう|yomi=o}}
===發音===
{{ja-pron|あしゅう}}
===專有名詞===
{{ja-pos|proper|あしゅう}}
# {{ja-kyujitai spelling of|亜洲}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hj|hangeul=아주}}
# {{hanja form of|아주|}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Á châu|}}
qgay9iz8pz1d2c7ufsje9y3onaenh2i
Zambia
0
13631
9759426
9531875
2026-05-14T15:21:42Z
TongcyDai
53191
9759426
wikitext
text/x-wiki
{{also|Zámbia|Zâmbia}}
==英語==
{{wikipedia|lang=en}}
===詞源===
來自[[Zambezi]]。
===發音===
* {{IPA|en|/ˈzæmbiə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Zambia.wav|音頻 (英國)}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|贊比亞|t1=贊比亞|t2=尚比亞}}
====整體詞====
* {{l|en|Subsahara}}
====衍生詞====
* {{l|en|Zambian}}
===參見===
{{list:countries in Africa/en}}
[[Category:含有後綴-ia的英語詞]]
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{place|nch|國|cont/非洲|t=贊比亞}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{place|nhn|國|cont/非洲|t=贊比亞}}
==齊切瓦語==
===詞源===
{{rfe|ny}}
===發音===
* {{ny-IPA|Zámbia}}
===專有名詞===
{{ny-proper noun|Zámbia}}
# {{place|ny|國|cont/非洲|t=贊比亞}}
==丹麥語==
===專有名詞===
{{head|da|專有名詞}}
# {{place|da|國|cont/非洲|t=贊比亞}}
==荷蘭語==
{{swp|lang=nl}}
===詞源===
源自{{bor|nl|en|Zambia}}。
===發音===
* {{IPA|nl|/ˈzɑm.bi.aː/}}
* {{hyphenation|nl|Zam|bia}}
===專有名詞===
{{nl-proper noun|n}}
# {{place|nl|國|cont/非洲|t=贊比亞}}
====衍生詞====
* {{l|nl|Zambiaan}}
* {{l|nl|Zambiaas}}
==加利西亞語==
{{wp|gl:}}
===其他形式===
* {{alt|gl|Zâmbia||reinteg}}
===發音===
{{gl-pr}}
* {{hyph|gl|Zam|bia}}
===專有名詞===
{{gl-proper noun|f}}
# {{tcl|gl|贊比亞|id=Q953}}
====派生詞彙====
* {{l|gl|zambiano}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zam|bia}}
* {{rhymes|hu|jɒ|s=3}}
===專有名詞===
{{head|hu|專有名詞}}
# {{place|hu|國家|continent/非洲|t=贊比亞|cat=非洲國家}}
====變格====
{{hu-infl-nom|Zambiá|o|n=sg}}{{hu-pos-tok|Zambiá|n=sg}}
====衍生詞====
* {{l|hu|zambiai}}
==印尼語==
{{wp|id:}}
===詞源===
源自 {{m|id|Zambezi}}。
===發音===
{{id-pr}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|贊比亞|id=Q953}}
===名詞===
{{id-noun|a}}
# [[贊比亞人]],[[尚比亞人]]
===形容詞===
{{id-adj}}
# [[贊比亞]]的,[[尚比亞]]的
==意大利語==
{{wikipedia|lang=it}}
===發音===
{{it-pr|Dzàmbia}}
===專有名詞===
{{it-proper noun|m}}
# {{place|it|國|cont/非洲|t=贊比亞}}
====衍生詞====
* {{l|it|zambiano}}
{{C|it|國家}}
==拉丁語==
{{wikipedia|lang=la}}
===發音===
* {{la-IPA}}
===專有名詞===
{{la-proper noun|Zambia<1>}}
# {{lb|la|新拉丁語}} {{place|la|國|cont/非洲|t=贊比亞}}
====變格====
{{la-ndecl|Zambia<1>}}
{{C|la|非洲國家|地名}}
==書面挪威語==
{{wikipedia|lang=no}}
===專有名詞===
{{head|nb|專有名詞}}
# {{place|nb|國|cont/非洲|t=贊比亞}}
====相關詞====
* {{l|nb|zambier}}
* {{l|nb|zambisk}}
{{C|nb|非洲國家}}
==新挪威語==
{{wikipedia|lang=nn}}
===專有名詞===
{{head|nn|專有名詞}}
# {{place|nn|國|cont/非洲|t=贊比亞}}
====相關詞====
* {{l|nn|zambiar}}
* {{l|nn|zambisk}}
{{C|nn|非洲國家}}
==波蘭語==
{{swp|lang=pl}}
===發音===
{{pl-pr|a=Pl-Zambia.ogg}}
===專有名詞===
{{head|pl|專有名詞|g=f}}
# {{place|pl|國|cont/非洲|t=贊比亞}}
====變格====
{{pl-decl-noun-sing
|Zambia
|Zambii
|Zambii
|Zambię
|Zambią
|Zambii
|Zambio
}}
====衍生詞====
* {{qualifier|名詞}} {{l|pl|Zambijczyk|g=m}}, {{l|pl|Zambijka|g=f}}
* {{qualifier|形容詞}} {{l|pl|zambijski}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|非洲國家}}
==斯洛伐克語==
{{wp|sk:}}
===發音===
* {{sk-IPA|t=loan|r=1|h=1}}
===專有名詞===
{{sk-proper noun|f|adj=zambijský|dem=Zambijčan|fdem=Zambijčanka}}
# {{tcl|sk|贊比亞|id=Q953}}
====變格====
{{sk-ndecl|f|n=sg}}
===延伸閱讀===
* {{R:sk:SDK}}
==西班牙語==
{{wikipedia|lang=es}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-Zambia.wav>}}
===專有名詞===
{{es-proper noun|f}}
# {{place|es|國|cont/非洲|t=贊比亞}}
{{C|es|非洲國家}}
==斯瓦希里語==
===發音===
* {{audio|sw|Sw-ke-Zambia.flac|音頻 (肯亞)}}
===專有名詞===
{{head|sw|專有名詞}}
# {{place|sw|國|r/南非|t1=贊比亞}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===專有名詞===
{{sv-proper noun|n}}
# {{place|sv|國|cont/非洲|t=贊比亞}}
{{C|sv|非洲國家}}
a4z5ehfs92puaws71xlp0qaumyfbcxq
9759427
9759426
2026-05-14T15:24:06Z
TongcyDai
53191
9759427
wikitext
text/x-wiki
{{also|Zámbia|Zâmbia}}
==英語==
{{wikipedia|lang=en}}
===詞源===
來自[[Zambezi]]。
===發音===
* {{IPA|en|/ˈzæmbiə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Zambia.wav|音頻 (英國)}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====整體詞====
* {{l|en|Subsahara}}
====衍生詞====
* {{l|en|Zambian}}
===參見===
{{list:countries in Africa/en}}
[[Category:含有後綴-ia的英語詞]]
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{tcl|nch|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{tcl|nhn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
==齊切瓦語==
===詞源===
{{rfe|ny}}
===發音===
* {{ny-IPA|Zámbia}}
===專有名詞===
{{ny-proper noun|Zámbia}}
# {{tcl|ny|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
==丹麥語==
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
==荷蘭語==
{{swp|lang=nl}}
===詞源===
源自{{bor|nl|en|Zambia}}。
===發音===
* {{IPA|nl|/ˈzɑm.bi.aː/}}
* {{hyphenation|nl|Zam|bia}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====衍生詞====
* {{l|nl|Zambiaan}}
* {{l|nl|Zambiaas}}
==加利西亞語==
{{wp|gl:}}
===其他形式===
* {{alt|gl|Zâmbia||reinteg}}
===發音===
{{gl-pr}}
* {{hyph|gl|Zam|bia}}
===專有名詞===
{{gl-proper noun|f}}
# {{tcl|gl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====派生詞彙====
* {{l|gl|zambiano}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zam|bia}}
* {{rhymes|hu|jɒ|s=3}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====變格====
{{hu-infl-nom|Zambiá|o|n=sg}}{{hu-pos-tok|Zambiá|n=sg}}
====衍生詞====
* {{l|hu|zambiai}}
==印尼語==
{{wp|id:}}
===詞源===
源自 {{m|id|Zambezi}}。
===發音===
{{id-pr}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
===名詞===
{{id-noun|a}}
# [[贊比亞人]],[[尚比亞人]]
===形容詞===
{{id-adj}}
# [[贊比亞]]的,[[尚比亞]]的
==意大利語==
{{wikipedia|lang=it}}
===發音===
{{it-pr|Dzàmbia}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====衍生詞====
* {{l|it|zambiano}}
{{C|it|國家}}
==拉丁語==
{{wikipedia|lang=la}}
===發音===
* {{la-IPA}}
===專有名詞===
{{la-proper noun|Zambia<1>}}
# {{lb|la|新拉丁語}} {{tcl|la|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====變格====
{{la-ndecl|Zambia<1>}}
{{C|la|外名}}
==書面挪威語==
{{wikipedia|lang=no}}
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====相關詞====
* {{l|nb|zambier}}
* {{l|nb|zambisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====相關詞====
* {{l|nn|zambiar}}
* {{l|nn|zambisk}}
==波蘭語==
{{swp|lang=pl}}
===發音===
{{pl-pr|a=Pl-Zambia.ogg}}
===專有名詞===
{{head|pl|專有名詞|g=f}}
# {{tcl|pl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====變格====
{{pl-decl-noun-sing
|Zambia
|Zambii
|Zambii
|Zambię
|Zambią
|Zambii
|Zambio
}}
====衍生詞====
* {{qualifier|名詞}} {{l|pl|Zambijczyk|g=m}}, {{l|pl|Zambijka|g=f}}
* {{qualifier|形容詞}} {{l|pl|zambijski}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
==斯洛伐克語==
{{wp|sk:}}
===發音===
* {{sk-IPA|t=loan|r=1|h=1}}
===專有名詞===
{{sk-proper noun|f|adj=zambijský|dem=Zambijčan|fdem=Zambijčanka}}
# {{tcl|sk|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
====變格====
{{sk-ndecl|f|n=sg}}
===延伸閱讀===
* {{R:sk:SDK}}
==西班牙語==
{{wikipedia|lang=es}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-Zambia.wav>}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
==斯瓦希里語==
===發音===
* {{audio|sw|Sw-ke-Zambia.flac|音頻 (肯亞)}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953}}
6ihuj27brdrbsetomgxv40tbbpuoq1f
9759428
9759427
2026-05-14T15:25:59Z
TongcyDai
53191
9759428
wikitext
text/x-wiki
{{also|Zámbia|Zâmbia}}
==英語==
{{wikipedia|lang=en}}
===詞源===
來自[[Zambezi]]。
===發音===
* {{IPA|en|/ˈzæmbiə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Zambia.wav|音頻 (英國)}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====整體詞====
* {{l|en|Subsahara}}
====衍生詞====
* {{l|en|Zambian}}
===參見===
{{list:countries in Africa/en}}
[[Category:含有後綴-ia的英語詞]]
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{tcl|nch|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{tcl|nhn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
==齊切瓦語==
===詞源===
{{rfe|ny}}
===發音===
* {{ny-IPA|Zámbia}}
===專有名詞===
{{ny-proper noun|Zámbia}}
# {{tcl|ny|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
==丹麥語==
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
==荷蘭語==
{{swp|lang=nl}}
===詞源===
源自{{bor|nl|en|Zambia}}。
===發音===
* {{IPA|nl|/ˈzɑm.bi.aː/}}
* {{hyphenation|nl|Zam|bia}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====衍生詞====
* {{l|nl|Zambiaan}}
* {{l|nl|Zambiaas}}
==加利西亞語==
{{wp|gl:}}
===其他形式===
* {{alt|gl|Zâmbia||reinteg}}
===發音===
{{gl-pr}}
* {{hyph|gl|Zam|bia}}
===專有名詞===
{{gl-proper noun|f}}
# {{tcl|gl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====派生詞彙====
* {{l|gl|zambiano}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zam|bia}}
* {{rhymes|hu|jɒ|s=3}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====變格====
{{hu-infl-nom|Zambiá|o|n=sg}}{{hu-pos-tok|Zambiá|n=sg}}
====衍生詞====
* {{l|hu|zambiai}}
==印尼語==
{{wp|id:}}
===詞源===
源自 {{m|id|Zambezi}}。
===發音===
{{id-pr}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
===名詞===
{{id-noun|a}}
# [[贊比亞人]],[[尚比亞人]]
===形容詞===
{{id-adj}}
# [[贊比亞]]的,[[尚比亞]]的
==意大利語==
{{wikipedia|lang=it}}
===發音===
{{it-pr|Dzàmbia}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====衍生詞====
* {{l|it|zambiano}}
{{C|it|國家}}
==拉丁語==
{{wikipedia|lang=la}}
===發音===
* {{la-IPA}}
===專有名詞===
{{la-proper noun|Zambia<1>}}
# {{lb|la|新拉丁語}} {{tcl|la|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====變格====
{{la-ndecl|Zambia<1>}}
{{C|la|外名}}
==書面挪威語==
{{wikipedia|lang=no}}
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====相關詞====
* {{l|nb|zambier}}
* {{l|nb|zambisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====相關詞====
* {{l|nn|zambiar}}
* {{l|nn|zambisk}}
==波蘭語==
{{swp|lang=pl}}
===發音===
{{pl-pr|a=Pl-Zambia.ogg}}
===專有名詞===
{{head|pl|專有名詞|g=f}}
# {{tcl|pl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====變格====
{{pl-decl-noun-sing
|Zambia
|Zambii
|Zambii
|Zambię
|Zambią
|Zambii
|Zambio
}}
====衍生詞====
* {{qualifier|名詞}} {{l|pl|Zambijczyk|g=m}}, {{l|pl|Zambijka|g=f}}
* {{qualifier|形容詞}} {{l|pl|zambijski}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
==斯洛伐克語==
{{wp|sk:}}
===發音===
* {{sk-IPA|t=loan|r=1|h=1}}
===專有名詞===
{{sk-proper noun|f|adj=zambijský|dem=Zambijčan|fdem=Zambijčanka}}
# {{tcl|sk|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
====變格====
{{sk-ndecl|f|n=sg}}
===延伸閱讀===
* {{R:sk:SDK}}
==西班牙語==
{{wikipedia|lang=es}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-Zambia.wav>}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
==斯瓦希里語==
===發音===
* {{audio|sw|Sw-ke-Zambia.flac|音頻 (肯亞)}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=y}}
onzp4rfjxrre6l7ldgi9d0whp6mnmlq
9759466
9759428
2026-05-14T20:46:50Z
TongcyDai
53191
9759466
wikitext
text/x-wiki
{{also|Zámbia|Zâmbia}}
==英語==
{{wikipedia|lang=en}}
===詞源===
來自[[Zambezi]]。
===發音===
* {{IPA|en|/ˈzæmbiə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Zambia.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====整體詞====
* {{l|en|Subsahara}}
====衍生詞====
* {{l|en|Zambian}}
===參見===
{{list:countries in Africa/en}}
[[Category:含有後綴-ia的英語詞]]
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{tcl|nch|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{tcl|nhn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
==齊切瓦語==
===詞源===
{{rfe|ny}}
===發音===
* {{ny-IPA|Zámbia}}
===專有名詞===
{{ny-proper noun|Zámbia}}
# {{tcl|ny|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
==丹麥語==
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
==荷蘭語==
{{swp|lang=nl}}
===詞源===
源自{{bor|nl|en|Zambia}}。
===發音===
* {{IPA|nl|/ˈzɑm.bi.aː/}}
* {{hyphenation|nl|Zam|bia}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====衍生詞====
* {{l|nl|Zambiaan}}
* {{l|nl|Zambiaas}}
==加利西亞語==
{{wp|gl:}}
===其他形式===
* {{alt|gl|Zâmbia||reinteg}}
===發音===
{{gl-pr}}
* {{hyph|gl|Zam|bia}}
===專有名詞===
{{gl-proper noun|f}}
# {{tcl|gl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====派生詞彙====
* {{l|gl|zambiano}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zam|bia}}
* {{rhymes|hu|jɒ|s=3}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====變格====
{{hu-infl-nom|Zambiá|o|n=sg}}{{hu-pos-tok|Zambiá|n=sg}}
====衍生詞====
* {{l|hu|zambiai}}
==印尼語==
{{wp|id:}}
===詞源===
源自 {{m|id|Zambezi}}。
===發音===
{{id-pr}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
===名詞===
{{id-noun|a}}
# [[贊比亞人]],[[尚比亞人]]
===形容詞===
{{id-adj}}
# [[贊比亞]]的,[[尚比亞]]的
==意大利語==
{{wikipedia|lang=it}}
===發音===
{{it-pr|Dzàmbia}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====衍生詞====
* {{l|it|zambiano}}
{{C|it|國家}}
==拉丁語==
{{wikipedia|lang=la}}
===發音===
* {{la-IPA}}
===專有名詞===
{{la-proper noun|Zambia<1>}}
# {{lb|la|新拉丁語}} {{tcl|la|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====變格====
{{la-ndecl|Zambia<1>}}
{{C|la|外名}}
==書面挪威語==
{{wikipedia|lang=no}}
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====相關詞====
* {{l|nb|zambier}}
* {{l|nb|zambisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====相關詞====
* {{l|nn|zambiar}}
* {{l|nn|zambisk}}
==波蘭語==
{{swp|lang=pl}}
===發音===
{{pl-pr|a=Pl-Zambia.ogg}}
===專有名詞===
{{head|pl|專有名詞|g=f}}
# {{tcl|pl|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====變格====
{{pl-decl-noun-sing
|Zambia
|Zambii
|Zambii
|Zambię
|Zambią
|Zambii
|Zambio
}}
====衍生詞====
* {{qualifier|名詞}} {{l|pl|Zambijczyk|g=m}}, {{l|pl|Zambijka|g=f}}
* {{qualifier|形容詞}} {{l|pl|zambijski}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
==斯洛伐克語==
{{wp|sk:}}
===發音===
* {{sk-IPA|t=loan|r=1|h=1}}
===專有名詞===
{{sk-proper noun|f|adj=zambijský|dem=Zambijčan|fdem=Zambijčanka}}
# {{tcl|sk|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
====變格====
{{sk-ndecl|f|n=sg}}
===延伸閱讀===
* {{R:sk:SDK}}
==西班牙語==
{{wikipedia|lang=es}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-Zambia.wav>}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
==斯瓦希里語==
===發音===
* {{audio|sw|Sw-ke-Zambia.flac|音頻 (肯亞)}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|贊比亞|t1=贊比亞|t2=尚比亞|id=Q953|nolb=1}}
bcv8woh6rz7pgvnkrl40r0q1man0lev
Zimbabwe
0
13632
9759493
9531891
2026-05-14T20:55:56Z
TongcyDai
53191
9759493
wikitext
text/x-wiki
{{also|津巴布韋}}
==英語==
{{wikipedia|lang=en}}
===詞源===
派生自{{der|en|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|en|/zɪmˈbɑːbweɪ/}}
* {{hyphenation|en|Zim|ba|bwe}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-Zimbabwe.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|en|Subsahara}}
===參見===
{{list:countries in Africa/en}}
==南非語==
{{wp|af:}}
===詞源===
派生自{{der|af|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|af|專有名詞}}
# {{tcl|af|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|af|國家}}
==齊切瓦語==
===詞源===
派生自{{der|ny|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{ny-IPA|Zimbábwe}}
===專有名詞===
{{ny-proper noun|Zimbábwe}}
# {{tcl|ny|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|ny|國家}}
==捷克語==
===詞源===
派生自{{der|cs|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{cs-proper noun|n|indecl=1|adj=zimbabwský|dem=Zimbabwan}}
# {{tcl|cs|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|cs|zimbabwský}}
* {{l|cs|Zimbabwan}}
{{C|cs|國家}}
==荷蘭語==
===詞源===
派生自{{der|nl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|nl|/ˌzɪmˈbɑp.ʋə/|/ˌzɪmˈbɑ.bʋə/}}
* {{audio|nl|Nl-Zimbabwe.ogg}}
* {{hyphenation|nl|Zim|bab|we}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|nl|Zimbabwaan}}
{{C|nl|國家}}
==芬蘭語==
===詞源===
派生自{{der|fi|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|fi|專有名詞}}
# {{tcl|fi|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{fi-decl-nalle|n=sg|Zimbabw|||a}}
====派生詞彙====
* 形容詞:{{l|fi|zimbabwelainen}}
* 名詞:{{l|fi|zimbabwelainen}}
{{C|fi|國家}}
==匈牙利語==
{{swp|lang=hu}}
===詞源===
派生自{{der|hu|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zim|bab|we}}
* {{rhymes|hu|vɛ}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{hu-infl-nom|Zimbabwé|o|n=sg}}{{hu-pos-tok|Zimbabwé|n=sg}}
較少用的變格:<!-- cf. MNSZ2 at http://clara.nytud.hu/mnsz2-dev/index.html , 347 vs 250 hits for Zimbabwéban vs Zimbabwében -->
{{hu-infl-nom|Zimbabwé|e|n=sg}}{{hu-pos-tek|Zimbabwé|n=sg}}
====派生詞彙====
* {{l|hu|zimbabwei}}
==印尼語==
{{wp|id:}}
===詞源===
{{der+|id|sn|dzimba-dze-mabwe|t=house of stones}}, in reference to {{w|Great Zimbabwe}}。
===發音===
{{id-pr|Zim.bab.wé}}
===專有名詞===
{{id-proper noun|head=}}
# {{tcl|id|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==意大利語==
{{wikipedia|lang=it}}
===詞源===
派生自{{der|it|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{it-pr|Dzimbàbwe,#Dzimbàbu.e<ref:{{R:it:DiPI}}>}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|it|zimbabwiano}}
===參考資料===
<references/>
==書面挪威語==
{{wikipedia|lang=no}}
===詞源===
派生自{{der|nb|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nb|zimbabwer}}
* {{l|nb|zimbabwisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===詞源===
派生自{{der|nn|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nn|zimbabwar}}
* {{l|nn|zimbabwisk}}
{{C|nn|國家}}
==波蘭語==
===詞源===
派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===詞源===
借自{{bor|pl|en|津巴布韋}},派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}}。
===發音===
* {{pl-pr|z-imbabwe|a=Pl-Zimbabwe.ogg|h=Zim.bab.we}}
===專有名詞===
{{pl-proper noun|n|indecl=yes}}
# {{tcl|pl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{cln|pl|外名}}
==葡萄牙語==
===詞源===
派生自{{der|pt|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{pt-proper noun|m}}
# {{alternative form of|pt|Zimbabué}}
{{C|pt|國家}}
==修納語==
===專有名詞===
{{sn-proper noun|Zimbábwe}}
# {{tcl|sn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|sn|國家}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===詞源===
派生自{{der|sk|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sk-proper noun|n|gen=Zimbabwe}}
# {{tcl|sk|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參考資料===
* {{R:SDK}}
{{C|sk|國家}}
==斯瓦希里語==
===詞源===
派生自{{der|sw|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{audio|sw|Sw-ke-Zimbabwe.flac|a=Kenya}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===詞源===
派生自{{der|sv|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==聰加語==
===名詞===
{{head|ts|專有名詞}}
# {{tcl|ts|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
9lkbs5g48xwb986suuywllq0y7opavm
9759494
9759493
2026-05-14T20:56:10Z
TongcyDai
53191
9759494
wikitext
text/x-wiki
{{also|zimbabwe}}
==英語==
{{wikipedia|lang=en}}
===詞源===
派生自{{der|en|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|en|/zɪmˈbɑːbweɪ/}}
* {{hyphenation|en|Zim|ba|bwe}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-Zimbabwe.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|en|Subsahara}}
===參見===
{{list:countries in Africa/en}}
==南非語==
{{wp|af:}}
===詞源===
派生自{{der|af|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|af|專有名詞}}
# {{tcl|af|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|af|國家}}
==齊切瓦語==
===詞源===
派生自{{der|ny|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{ny-IPA|Zimbábwe}}
===專有名詞===
{{ny-proper noun|Zimbábwe}}
# {{tcl|ny|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|ny|國家}}
==捷克語==
===詞源===
派生自{{der|cs|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{cs-proper noun|n|indecl=1|adj=zimbabwský|dem=Zimbabwan}}
# {{tcl|cs|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|cs|zimbabwský}}
* {{l|cs|Zimbabwan}}
{{C|cs|國家}}
==荷蘭語==
===詞源===
派生自{{der|nl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|nl|/ˌzɪmˈbɑp.ʋə/|/ˌzɪmˈbɑ.bʋə/}}
* {{audio|nl|Nl-Zimbabwe.ogg}}
* {{hyphenation|nl|Zim|bab|we}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|nl|Zimbabwaan}}
{{C|nl|國家}}
==芬蘭語==
===詞源===
派生自{{der|fi|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|fi|專有名詞}}
# {{tcl|fi|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{fi-decl-nalle|n=sg|Zimbabw|||a}}
====派生詞彙====
* 形容詞:{{l|fi|zimbabwelainen}}
* 名詞:{{l|fi|zimbabwelainen}}
{{C|fi|國家}}
==匈牙利語==
{{swp|lang=hu}}
===詞源===
派生自{{der|hu|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zim|bab|we}}
* {{rhymes|hu|vɛ}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{hu-infl-nom|Zimbabwé|o|n=sg}}{{hu-pos-tok|Zimbabwé|n=sg}}
較少用的變格:<!-- cf. MNSZ2 at http://clara.nytud.hu/mnsz2-dev/index.html , 347 vs 250 hits for Zimbabwéban vs Zimbabwében -->
{{hu-infl-nom|Zimbabwé|e|n=sg}}{{hu-pos-tek|Zimbabwé|n=sg}}
====派生詞彙====
* {{l|hu|zimbabwei}}
==印尼語==
{{wp|id:}}
===詞源===
{{der+|id|sn|dzimba-dze-mabwe|t=house of stones}}, in reference to {{w|Great Zimbabwe}}。
===發音===
{{id-pr|Zim.bab.wé}}
===專有名詞===
{{id-proper noun|head=}}
# {{tcl|id|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==意大利語==
{{wikipedia|lang=it}}
===詞源===
派生自{{der|it|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{it-pr|Dzimbàbwe,#Dzimbàbu.e<ref:{{R:it:DiPI}}>}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|it|zimbabwiano}}
===參考資料===
<references/>
==書面挪威語==
{{wikipedia|lang=no}}
===詞源===
派生自{{der|nb|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nb|zimbabwer}}
* {{l|nb|zimbabwisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===詞源===
派生自{{der|nn|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nn|zimbabwar}}
* {{l|nn|zimbabwisk}}
{{C|nn|國家}}
==波蘭語==
===詞源===
派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===詞源===
借自{{bor|pl|en|津巴布韋}},派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}}。
===發音===
* {{pl-pr|z-imbabwe|a=Pl-Zimbabwe.ogg|h=Zim.bab.we}}
===專有名詞===
{{pl-proper noun|n|indecl=yes}}
# {{tcl|pl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{cln|pl|外名}}
==葡萄牙語==
===詞源===
派生自{{der|pt|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{pt-proper noun|m}}
# {{alternative form of|pt|Zimbabué}}
{{C|pt|國家}}
==修納語==
===專有名詞===
{{sn-proper noun|Zimbábwe}}
# {{tcl|sn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|sn|國家}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===詞源===
派生自{{der|sk|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sk-proper noun|n|gen=Zimbabwe}}
# {{tcl|sk|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參考資料===
* {{R:SDK}}
{{C|sk|國家}}
==斯瓦希里語==
===詞源===
派生自{{der|sw|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{audio|sw|Sw-ke-Zimbabwe.flac|a=Kenya}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===詞源===
派生自{{der|sv|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==聰加語==
===名詞===
{{head|ts|專有名詞}}
# {{tcl|ts|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
ojp756t57okue9pvvlwgtgcy5m4ml7f
9759495
9759494
2026-05-14T20:56:41Z
TongcyDai
53191
9759495
wikitext
text/x-wiki
{{also|zimbabwe}}
==英語==
{{wikipedia|lang=en}}
===詞源===
派生自{{der|en|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|en|/zɪmˈbɑːbweɪ/}}
* {{hyphenation|en|Zim|ba|bwe}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-Zimbabwe.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|en|Subsahara}}
===參見===
{{list:countries in Africa/en}}
==南非語==
{{wp|af:}}
===詞源===
派生自{{der|af|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|af|專有名詞}}
# {{tcl|af|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|af|國家}}
==齊切瓦語==
===詞源===
派生自{{der|ny|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{ny-IPA|Zimbábwe}}
===專有名詞===
{{ny-proper noun|Zimbábwe}}
# {{tcl|ny|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|ny|國家}}
==捷克語==
===詞源===
派生自{{der|cs|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{cs-proper noun|n|indecl=1|adj=zimbabwský|dem=Zimbabwan}}
# {{tcl|cs|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|cs|zimbabwský}}
* {{l|cs|Zimbabwan}}
{{C|cs|國家}}
==荷蘭語==
===詞源===
派生自{{der|nl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|nl|/ˌzɪmˈbɑp.ʋə/|/ˌzɪmˈbɑ.bʋə/}}
* {{audio|nl|Nl-Zimbabwe.ogg}}
* {{hyphenation|nl|Zim|bab|we}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|nl|Zimbabwaan}}
{{C|nl|國家}}
==芬蘭語==
===詞源===
派生自{{der|fi|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|fi|專有名詞}}
# {{tcl|fi|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{fi-decl-nalle|n=sg|Zimbabw|||a}}
====派生詞彙====
* 形容詞:{{l|fi|zimbabwelainen}}
* 名詞:{{l|fi|zimbabwelainen}}
{{C|fi|國家}}
==匈牙利語==
{{swp|lang=hu}}
===詞源===
派生自{{der|hu|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zim|bab|we}}
* {{rhymes|hu|vɛ}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{hu-infl-nom|Zimbabwé|o|n=sg}}{{hu-pos-tok|Zimbabwé|n=sg}}
較少用的變格:<!-- cf. MNSZ2 at http://clara.nytud.hu/mnsz2-dev/index.html , 347 vs 250 hits for Zimbabwéban vs Zimbabwében -->
{{hu-infl-nom|Zimbabwé|e|n=sg}}{{hu-pos-tek|Zimbabwé|n=sg}}
====派生詞彙====
* {{l|hu|zimbabwei}}
==印尼語==
{{wp|id:}}
===詞源===
{{der+|id|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{id-pr|Zim.bab.wé}}
===專有名詞===
{{id-proper noun|head=}}
# {{tcl|id|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==意大利語==
{{wikipedia|lang=it}}
===詞源===
派生自{{der|it|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{it-pr|Dzimbàbwe,#Dzimbàbu.e<ref:{{R:it:DiPI}}>}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|it|zimbabwiano}}
===參考資料===
<references/>
==書面挪威語==
{{wikipedia|lang=no}}
===詞源===
派生自{{der|nb|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nb|zimbabwer}}
* {{l|nb|zimbabwisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===詞源===
派生自{{der|nn|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nn|zimbabwar}}
* {{l|nn|zimbabwisk}}
{{C|nn|國家}}
==波蘭語==
===詞源===
派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===詞源===
借自{{bor|pl|en|津巴布韋}},派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}}。
===發音===
* {{pl-pr|z-imbabwe|a=Pl-Zimbabwe.ogg|h=Zim.bab.we}}
===專有名詞===
{{pl-proper noun|n|indecl=yes}}
# {{tcl|pl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{cln|pl|外名}}
==葡萄牙語==
===詞源===
派生自{{der|pt|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{pt-proper noun|m}}
# {{alternative form of|pt|Zimbabué}}
{{C|pt|國家}}
==修納語==
===專有名詞===
{{sn-proper noun|Zimbábwe}}
# {{tcl|sn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|sn|國家}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===詞源===
派生自{{der|sk|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sk-proper noun|n|gen=Zimbabwe}}
# {{tcl|sk|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參考資料===
* {{R:SDK}}
{{C|sk|國家}}
==斯瓦希里語==
===詞源===
派生自{{der|sw|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{audio|sw|Sw-ke-Zimbabwe.flac|a=Kenya}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===詞源===
派生自{{der|sv|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==聰加語==
===名詞===
{{head|ts|專有名詞}}
# {{tcl|ts|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
cox2aifqa7yk8lo66hkymvabw9fbwar
9759496
9759495
2026-05-14T20:56:55Z
TongcyDai
53191
9759496
wikitext
text/x-wiki
{{also|zimbabwe}}
==英語==
{{wikipedia|lang=en}}
===詞源===
派生自{{der|en|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|en|/zɪmˈbɑːbweɪ/}}
* {{hyphenation|en|Zim|ba|bwe}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-Zimbabwe.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|en|Subsahara}}
===參見===
{{list:countries in Africa/en}}
==南非語==
{{wp|af:}}
===詞源===
派生自{{der|af|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|af|專有名詞}}
# {{tcl|af|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|af|國家}}
==齊切瓦語==
===詞源===
派生自{{der|ny|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{ny-IPA|Zimbábwe}}
===專有名詞===
{{ny-proper noun|Zimbábwe}}
# {{tcl|ny|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|ny|國家}}
==捷克語==
===詞源===
派生自{{der|cs|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{cs-proper noun|n|indecl=1|adj=zimbabwský|dem=Zimbabwan}}
# {{tcl|cs|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|cs|zimbabwský}}
* {{l|cs|Zimbabwan}}
{{C|cs|國家}}
==荷蘭語==
===詞源===
派生自{{der|nl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|nl|/ˌzɪmˈbɑp.ʋə/|/ˌzɪmˈbɑ.bʋə/}}
* {{audio|nl|Nl-Zimbabwe.ogg}}
* {{hyphenation|nl|Zim|bab|we}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|nl|Zimbabwaan}}
{{C|nl|國家}}
==芬蘭語==
===詞源===
派生自{{der|fi|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|fi|專有名詞}}
# {{tcl|fi|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{fi-decl-nalle|n=sg|Zimbabw|||a}}
====派生詞彙====
* 形容詞:{{l|fi|zimbabwelainen}}
* 名詞:{{l|fi|zimbabwelainen}}
{{C|fi|國家}}
==匈牙利語==
{{swp|lang=hu}}
===詞源===
派生自{{der|hu|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zim|bab|we}}
* {{rhymes|hu|vɛ}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{hu-infl-nom|Zimbabwé|o|n=sg}}{{hu-pos-tok|Zimbabwé|n=sg}}
較少用的變格:<!-- cf. MNSZ2 at http://clara.nytud.hu/mnsz2-dev/index.html , 347 vs 250 hits for Zimbabwéban vs Zimbabwében -->
{{hu-infl-nom|Zimbabwé|e|n=sg}}{{hu-pos-tek|Zimbabwé|n=sg}}
====派生詞彙====
* {{l|hu|zimbabwei}}
==印尼語==
{{wp|id:}}
===詞源===
{{der+|id|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{id-pr|Zim.bab.wé}}
===專有名詞===
{{id-proper noun|head=Zimbabwe}}
# {{tcl|id|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==意大利語==
{{wikipedia|lang=it}}
===詞源===
派生自{{der|it|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{it-pr|Dzimbàbwe,#Dzimbàbu.e<ref:{{R:it:DiPI}}>}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|it|zimbabwiano}}
===參考資料===
<references/>
==書面挪威語==
{{wikipedia|lang=no}}
===詞源===
派生自{{der|nb|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nb|zimbabwer}}
* {{l|nb|zimbabwisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===詞源===
派生自{{der|nn|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nn|zimbabwar}}
* {{l|nn|zimbabwisk}}
{{C|nn|國家}}
==波蘭語==
===詞源===
派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===詞源===
借自{{bor|pl|en|津巴布韋}},派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}}。
===發音===
* {{pl-pr|z-imbabwe|a=Pl-Zimbabwe.ogg|h=Zim.bab.we}}
===專有名詞===
{{pl-proper noun|n|indecl=yes}}
# {{tcl|pl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{cln|pl|外名}}
==葡萄牙語==
===詞源===
派生自{{der|pt|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{pt-proper noun|m}}
# {{alternative form of|pt|Zimbabué}}
{{C|pt|國家}}
==修納語==
===專有名詞===
{{sn-proper noun|Zimbábwe}}
# {{tcl|sn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{C|sn|國家}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===詞源===
派生自{{der|sk|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sk-proper noun|n|gen=Zimbabwe}}
# {{tcl|sk|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參考資料===
* {{R:SDK}}
{{C|sk|國家}}
==斯瓦希里語==
===詞源===
派生自{{der|sw|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{audio|sw|Sw-ke-Zimbabwe.flac|a=Kenya}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===詞源===
派生自{{der|sv|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==聰加語==
===名詞===
{{head|ts|專有名詞}}
# {{tcl|ts|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
j2jfvwve9l8a9ypnixy53pv6ti4gj6j
9759497
9759496
2026-05-14T20:58:12Z
TongcyDai
53191
9759497
wikitext
text/x-wiki
{{also|zimbabwe}}
==英語==
{{wikipedia|lang=en}}
===詞源===
派生自{{der|en|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|en|/zɪmˈbɑːbweɪ/}}
* {{hyphenation|en|Zim|ba|bwe}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-Zimbabwe.wav|a=UK}}
===專有名詞===
{{en-proper noun}}
# {{tcl|en|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|en|Subsahara}}
===參見===
{{list:countries in Africa/en}}
==南非語==
{{wp|af:}}
===詞源===
派生自{{der|af|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|af|專有名詞}}
# {{tcl|af|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==齊切瓦語==
===詞源===
派生自{{der|ny|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{ny-IPA|Zimbábwe}}
===專有名詞===
{{ny-proper noun|Zimbábwe}}
# {{tcl|ny|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==捷克語==
===詞源===
派生自{{der|cs|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{cs-proper noun|n|indecl=1|adj=zimbabwský|dem=Zimbabwan}}
# {{tcl|cs|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|cs|zimbabwský}}
* {{l|cs|Zimbabwan}}
==荷蘭語==
===詞源===
派生自{{der|nl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{IPA|nl|/ˌzɪmˈbɑp.ʋə/|/ˌzɪmˈbɑ.bʋə/}}
* {{audio|nl|Nl-Zimbabwe.ogg}}
* {{hyphenation|nl|Zim|bab|we}}
===專有名詞===
{{nl-proper noun|n}}
# {{tcl|nl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|nl|Zimbabwaan}}
==芬蘭語==
===詞源===
派生自{{der|fi|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|fi|專有名詞}}
# {{tcl|fi|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{fi-decl-nalle|n=sg|Zimbabw|||a}}
====派生詞彙====
* 形容詞:{{l|fi|zimbabwelainen}}
* 名詞:{{l|fi|zimbabwelainen}}
==匈牙利語==
{{swp|lang=hu}}
===詞源===
派生自{{der|hu|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Zim|bab|we}}
* {{rhymes|hu|vɛ}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====變格====
{{hu-infl-nom|Zimbabwé|o|n=sg}}{{hu-pos-tok|Zimbabwé|n=sg}}
較少用的變格:<!-- cf. MNSZ2 at http://clara.nytud.hu/mnsz2-dev/index.html , 347 vs 250 hits for Zimbabwéban vs Zimbabwében -->
{{hu-infl-nom|Zimbabwé|e|n=sg}}{{hu-pos-tek|Zimbabwé|n=sg}}
====派生詞彙====
* {{l|hu|zimbabwei}}
==印尼語==
{{wp|id:}}
===詞源===
{{der+|id|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{id-pr|Zim.bab.wé}}
===專有名詞===
{{id-proper noun|head=Zimbabwe}}
# {{tcl|id|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==意大利語==
{{wikipedia|lang=it}}
===詞源===
派生自{{der|it|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
{{it-pr|Dzimbàbwe,#Dzimbàbu.e<ref:{{R:it:DiPI}}>}}
===專有名詞===
{{it-proper noun|m}}
# {{tcl|it|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====派生詞彙====
* {{l|it|zimbabwiano}}
===參考資料===
<references/>
==書面挪威語==
{{wikipedia|lang=no}}
===詞源===
派生自{{der|nb|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nb|zimbabwer}}
* {{l|nb|zimbabwisk}}
==新挪威語==
{{wikipedia|lang=nn}}
===詞源===
派生自{{der|nn|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
====相關詞彙====
* {{l|nn|zimbabwar}}
* {{l|nn|zimbabwisk}}
==波蘭語==
===詞源===
派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===詞源===
借自{{bor|pl|en|Zimbabwe}},派生自{{der|pl|sn|dzimba-dze-mabwe|t=石頭屋}}。
===發音===
* {{pl-pr|z-imbabwe|a=Pl-Zimbabwe.ogg|h=Zim.bab.we}}
===專有名詞===
{{pl-proper noun|n|indecl=yes}}
# {{tcl|pl|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
{{cln|pl|外名}}
==葡萄牙語==
===詞源===
派生自{{der|pt|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{pt-proper noun|m}}
# {{alternative form of|pt|Zimbabué}}
==修納語==
===專有名詞===
{{sn-proper noun|Zimbábwe}}
# {{tcl|sn|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===詞源===
派生自{{der|sk|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sk-proper noun|n|gen=Zimbabwe}}
# {{tcl|sk|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參考資料===
* {{R:SDK}}
==斯瓦希里語==
===詞源===
派生自{{der|sw|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===發音===
* {{audio|sw|Sw-ke-Zimbabwe.flac|a=Kenya}}
===專有名詞===
{{head|sw|專有名詞}}
# {{tcl|sw|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
===參見===
{{list:countries in Africa/sw}}
==瑞典語==
===詞源===
派生自{{der|sv|sn|dzimba-dze-mabwe|t=石頭屋}},即{{w|大辛巴威}}遺址。
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
==聰加語==
===名詞===
{{head|ts|專有名詞}}
# {{tcl|ts|津巴布韋|id=Q954|t1=津巴布韋|t2=辛巴威|nolb=1}}
7jkqc47eniuem65pf0yuja7ynl02z6k
Nordamerika
0
15760
9759656
9547945
2026-05-14T23:52:05Z
TongcyDai
53191
9759656
wikitext
text/x-wiki
{{also|Nord-Amerika}}
==丹麥語==
{{wp|da:}}
===詞源===
源自 {{compound|da|nord|Amerika}}。
===發音===
{{rfp|da}}
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|北美洲|id=Q49}}
==德語==
===詞源===
{{ety|de|:af|Nord|Amerika}}
{{compound|de|Nord|Amerika}}
===發音===
* {{IPA|de|/ˌnɔrt.aˈmeːrika/|/ˈnɔrt.aˌmeːrika/|[nɔʁt.ʔa.meː.ʁi.ka]|[nɔʁ.ta-]|[nɔɐ̯-]|[nɔː-]|[-ʁɪ-]}}
* {{IPA|de|/ˌnɔɑ̯d̥ɑˈmɛɐ̯ʀikɑ/|aa=Austria}}
* {{audio|de|De-Nordamerika.ogg|a=柏林}}
* {{hyph|de|Nord|ame|ri|ka}}
===專有名詞===
{{de-proper noun|n}}
# {{tcl|de|北美洲|id=Q49}}
====同類詞彙====
{{list:continents/de}}
====相關詞彙====
* {{l|de|nordamerikanisch}}
{{cln|de|外名}}
==瑞典語==
{{wp|sv:}}
===詞源===
源自 {{compound|sv|nord|Amerika}}
===發音===
* {{IPA|sv|/ˈnuːrdaˌmeːrɪka/}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|北美洲|id=Q49}}
====派生詞彙====
* {{l|sv|nordamerikansk}}
* {{l|sv|nordamerikan}}
* {{l|sv|nordamerikanska}}
====參見====
* {{l|sv|Centralamerika}}
* {{l|sv|Sydamerika}}
{{list:continents/sv}}
{{list:countries in North America/sv}}
===參考資料===
* {{R:svenska.se|saol}}
* [https://web.archive.org/web/20220126211703/https://mesh.kib.ki.se/term/D009656/north-america Svensk MeSH]
===異序詞===
* {{anagrams|sv|a=aadeikmnorr|rikedomarna}}
tp9xid5kt93uvhc2th5aiezvbapdaez
Australien
0
16901
9759657
9584694
2026-05-14T23:53:48Z
TongcyDai
53191
9759657
wikitext
text/x-wiki
{{also|australien}}
==丹麥語==
{{wp|da:}}
===專有名詞===
{{head|da|專有名詞|g=n}}
# {{tcl|da|澳大利亞|id=Q408,Q3960}}
{{cln|da|外名}}
==法語==
{{wp|fr:}}
===名詞===
{{fr-noun|m|f=+}}
# {{demonym-noun|fr|<<c/澳大利亞>>|g=m}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|neutralisa}}
{{C|fr|國籍}}
==德語==
{{wp|de:}}
===發音===
* {{audio|de|De-Australien.ogg}}
* {{IPA|de|/aʊsˈtʁaːli̯ən/}}
* {{audio|de|De-Australien2.ogg|a=柏林}}
===專有名詞===
{{de-proper noun|toponym}}
# {{tcl|de|澳大利亞|id=Q408,Q3960}}
====同類詞彙====
{{list:continents/de}}
====相關詞彙====
* {{l|de|Australier}}
* {{l|de|australisch}}
{{cln|de|外名}}
==門諾低地德語==
===名詞===
{{head|pdt|專有名詞|g=n}}
# {{tcl|pdt|澳大利亞|id=Q408,Q3960}}
==瑞典語==
{{wp|sv:}}
===發音===
* {{audio|sv|LL-Q9027 (swe)-Moonhouse-Australien.wav}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|澳大利亞|id=Q408}}
#: {{syn|sv|Nya Holland|Ulimaroa|q=obsolete}}
# {{tcl|sv|澳大利亞|id=Q3960}}
====相關詞彙====
{{col|sv
|australisk<t:澳大利亞的><pos:形容詞>
|australiensisk<t:澳大利亞的><pos:形容詞>
|australier<t:澳大利亞男性><g:c>
|australienare<t:澳大利亞男性><g:c>
|australiska<t:澳大利亞女性><g:c>
|australienska<t:澳大利亞女性><g:c>
}}
====參見====
* {{l|sv|Oceanien}}
* {{l|sv|koala}}
* {{l|sv|kontinent}}
* {{l|sv|känguru}}
* {{l|sv|världsdel}}
{{list:countries in Oceania/sv}}
===延伸閱讀===
* {{R:svenska.se}}
* {{R:Utrikes namnbok|12}}
* [https://web.archive.org/web/20250225050812/https://mesh.kib.ki.se/term/D001315/australia Svensk MeSH]
{{cln|sv|外名}}
msy6l05d6rl231bfy0r9aynkc0sphsd
9759658
9759657
2026-05-14T23:54:11Z
TongcyDai
53191
/* 專有名詞 */ // Edit via Wikiplus
9759658
wikitext
text/x-wiki
{{also|australien}}
==丹麥語==
{{wp|da:}}
===專有名詞===
{{head|da|專有名詞|g=n}}
# {{tcl|da|澳大利亞|id=Q408,Q3960}}
{{cln|da|外名}}
==法語==
{{wp|fr:}}
===名詞===
{{fr-noun|m|f=+}}
# {{demonym-noun|fr|<<c/澳大利亞>>|g=m}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|neutralisa}}
{{C|fr|國籍}}
==德語==
{{wp|de:}}
===發音===
* {{audio|de|De-Australien.ogg}}
* {{IPA|de|/aʊsˈtʁaːli̯ən/}}
* {{audio|de|De-Australien2.ogg|a=柏林}}
===專有名詞===
{{de-proper noun|toponym}}
# {{tcl|de|澳大利亞|id=Q408,Q3960}}
====同類詞彙====
{{list:continents/de}}
====相關詞彙====
* {{l|de|Australier}}
* {{l|de|australisch}}
{{cln|de|外名}}
==門諾低地德語==
===名詞===
{{head|pdt|專有名詞|g=n}}
# {{tcl|pdt|澳大利亞|id=Q408,Q3960}}
==瑞典語==
{{wp|sv:}}
===發音===
* {{audio|sv|LL-Q9027 (swe)-Moonhouse-Australien.wav}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|澳大利亞|id=Q408}}
#: {{syn|sv|Nya Holland|Ulimaroa|q=棄用}}
# {{tcl|sv|澳大利亞|id=Q3960}}
====相關詞彙====
{{col|sv
|australisk<t:澳大利亞的><pos:形容詞>
|australiensisk<t:澳大利亞的><pos:形容詞>
|australier<t:澳大利亞男性><g:c>
|australienare<t:澳大利亞男性><g:c>
|australiska<t:澳大利亞女性><g:c>
|australienska<t:澳大利亞女性><g:c>
}}
====參見====
* {{l|sv|Oceanien}}
* {{l|sv|koala}}
* {{l|sv|kontinent}}
* {{l|sv|känguru}}
* {{l|sv|världsdel}}
{{list:countries in Oceania/sv}}
===延伸閱讀===
* {{R:svenska.se}}
* {{R:Utrikes namnbok|12}}
* [https://web.archive.org/web/20250225050812/https://mesh.kib.ki.se/term/D001315/australia Svensk MeSH]
{{cln|sv|外名}}
351n5mk4l77sl8yzmhf3ufjv03hk4zn
Algerien
0
17194
9759440
9528086
2026-05-14T16:01:03Z
TongcyDai
53191
9759440
wikitext
text/x-wiki
{{also|Algérien|algérien}}
==德語==
===發音===
* {{IPA|de|/alˈɡeːʁiən/}}
* {{audio|de|De-at-Algerien.ogg|a=奧地利}}
* {{audio|de|De-Algerien.ogg|a=柏林}}
===專有名詞===
{{de-proper noun|toponym}}
# {{tcl|de|阿爾及利亞|id=Q262}}
====變格====
{{de-ndecl|n.sg}}
====派生詞彙====
* {{l|de|Algerier}}
* {{l|de|algerisch}}
===參見===
{{list:countries in Africa/de}}
{{cln|de|外名}}
==盧森堡語==
{{wikipedia|lb:}}
===發音===
* {{audio|lb|Lb-Algerien.ogg}}
===專有名詞===
{{head|lb|專有名詞|g=n}}
# {{tcl|lb|阿爾及利亞|id=Q262}}
====相關詞彙====
* {{l|lb|algeresch}}
mfe5c6p735zwfjdsdhdz2y0qj6inf2m
u
0
34125
9759462
8455853
2026-05-14T17:39:38Z
~2026-29084-20
133375
/* */
9759462
wikitext
text/x-wiki
TB51k2U25QmFxgtohKAw6Nfn5G3F5JFmw7
== 英语 ==
===發音===
; 字母名
* {{IPA|en|/juː/}}
; 音位
* {{IPA|en|/a/|/ʉː/|/ʊ/|a=AusE}}
* {{audio|en|en-ca-u.ogg|音頻(加拿大)}}
* {{IPA|en|/ʌ/|/uː/|/ʊ/|a=RP}}
* {{IPA|en|/ʌ/|/u/|/ʊ/|a=US}}
* {{audio|en|en-us-u.ogg|音頻(通用美式)}}
互联网上的非正式缩写、相当于[[you]]"你"
==西班牙语==
或
== 马尔他语 ==
和、与、并且
==荷兰语==
[[Category:荷兰语]]
您
==西班牙语==
f. 西班牙语的第二十四个字母
conj. 或,或者,即,就是(o在以o或ho起始的词前时改写为u)
[[Category:英語]]
[[Category:拉丁文字]]
[[Category:英语名词]]
[[Category:西班牙语]]
[[Category:西班牙语名词]]
nnu9mrcaznb8io3a889jv6ssl58kgn4
9759464
9759462
2026-05-14T17:59:59Z
TongcyDai
53191
取消[[Special:Contributions/~2026-29084-20|~2026-29084-20]] ([[User talk:~2026-29084-20|对话]])的编辑;更改回[[Special:Contributions/KotoriBot|KotoriBot]]的最后一个版本
8455853
wikitext
text/x-wiki
== 英语 ==
===發音===
; 字母名
* {{IPA|en|/juː/}}
; 音位
* {{IPA|en|/a/|/ʉː/|/ʊ/|a=AusE}}
* {{audio|en|en-ca-u.ogg|音頻(加拿大)}}
* {{IPA|en|/ʌ/|/uː/|/ʊ/|a=RP}}
* {{IPA|en|/ʌ/|/u/|/ʊ/|a=US}}
* {{audio|en|en-us-u.ogg|音頻(通用美式)}}
互联网上的非正式缩写、相当于[[you]]"你"
==西班牙语==
或
== 马尔他语 ==
和、与、并且
==荷兰语==
[[Category:荷兰语]]
您
==西班牙语==
f. 西班牙语的第二十四个字母
conj. 或,或者,即,就是(o在以o或ho起始的词前时改写为u)
[[Category:英語]]
[[Category:拉丁文字]]
[[Category:英语名词]]
[[Category:西班牙语]]
[[Category:西班牙语名词]]
ba7db3i6wxhkni1xkwykvf0eh7on425
Algeria
0
42020
9759412
9211375
2026-05-14T14:37:10Z
TongcyDai
53191
9759412
wikitext
text/x-wiki
==英语==
{{wp|lang=en}}
[[File:Flag of Algeria.svg|thumb|right|Flag of '''Algeria''']]
[[File:Algeria (centered orthographic projection).svg|thumb|right|'''Algeria''']]
===词源===
源自[[w:阿拉伯语|阿拉伯语]] ''[[الجزائر]]'' (al-jazāʾir, “岛”), ''[[جزيرة]]'' (jazīra, “岛”)的复数形式, 和曾经存在于阿尔及尔湾上的几个小岛有关。
===發音===
* {{IPA|en|/ælˈdʒɪəɹiə/|a=RP}}
* {{IPA|en|/ælˈdʒɪɹiə/|a=GA}}
* {{audio|en|LL-Q1860 (eng)-Soundguys-Algeria.wav|a=UK}}
* {{audio|en|En-us-Algeria.ogg|a=US}}
* {{rhymes|en|ɪɹiə|s=4}}
===专有名词===
{{en-proper noun}}
# {{tcl|en|阿爾及利亞|id=Q262}}
====衍生词====
* {{l|en|Algerian}}
====派生語彙====
* {{desc|ja|bor=1|アルジェリア|tr=Arujeria}}
===參見===
* [[Appendix:Countries of the world]]
{{list:countries in Africa/en}}
{{list:provinces of Algeria/en}}
===異序詞===
* {{anagrams|en|a=aaegilr|lairage|regalia}}
==芬兰语==
{{wikipedia|lang=fi}}
===专有名词===
{{fi-proper noun}}
# {{tcl|fi|阿爾及利亞|id=Q262}}
====變格====
{{fi-decl-kulkija|n=sg|Algeri|a}}
===專有名詞===
{{head|fi|專有名詞變格形}}
# {{inflection of|fi|Alger||par|s}}
====衍生詞====
{{col|fi
|algerialainen
}}
{{col|fi|title=compounds
|algerianarabia
|algeriangundi
|algeriannakkeli
|algeriantamaani
}}
===異序詞===
* {{anagrams|fi|a=aaegilr|regaali}}
==意大利语==
{{wikipedia|lang=it}}
[[File:Algeria_(orthographic_projection).svg|thumb|right|250px]]
===发音===
* {{audio|it|It-Algeria.ogg|Audio}}
===专有名词===
{{it-proper noun|f}}
# {{tcl|it|阿爾及利亞|id=Q262}}
====派生词====
* {{l|it|algerino}}
===異序詞===
* {{anagrams|it|a=aaegilr|aligera|regalai|regalia}}
{{cln|it|外名}}
==斯瓦希里语==
{{wp|lang=sw}}
===其他写法===
* {{alter|sw|Aljeria}}
===發音===
* {{audio|sw|Sw-ke-Algeria.flac|a=Kenya}}
===专有名词===
{{head|sw|專有名詞}}
# {{tcl|sw|阿爾及利亞|id=Q262}}
===參見===
{{list:countries in Africa/sw}}
kxlvom8rl1y36zp8gymf9rivao87gtv
Wiktionary:机器人
4
59753
9760179
7062436
2026-05-15T10:30:01Z
~2026-29286-06
133385
/* */
9760179
wikitext
text/x-wiki
趙焯文是我養的機器人
{{Auto-archive
| archive_after_last_comment = 60
| archive_to_subpage = 申请存档
}}
{{Interwiki|机器人}}
{{Shortcut|WT:BOT}}
{{方針列表}}
[[File:Wiktionary Bots.png|230px|right]]
<div>
歡迎來到'''Wiktionary:机器人''',您可以在這裏就机器人運作提問。如果您的問題是關于維基詞典運作中的一般問題,請訪問[[Wiktionary:啤酒馆|啤酒館]]。如果您的問題是關于某個詞的,請訪問[[Wiktionary:茶室|茶室]]。多谢您的合作!
爲了大家方便閱讀,請在問題或答案之後簽名:打四個波浪號(<nowiki>~~~~</nowiki>)。保存頁面之後,計算機會自動顯示出名字和時間。
维基词典的机器人主要用于自动处理一些繁琐的格式或数据。机器人可以用来创建条目,修改或破坏条目,因此我们需要谨慎的使用它。一个好的机器人对维基詞典计划能带来很大的帮助。但是由于系统本身并没有设计机器人,因此再好的机器人也可能带有某些缺点。
*'''中文 (zh)''': 本wiki允许[[m:bot policy#Global_bots|全局机器人]]和[[m:bot policy#Automatic_approval|自动批准的机器人]]。这类机器人请不要在這裡申请。其他机器人的申请请到'''[[#新机器人注册]]'''提出。
* '''英文 (en)''': Requests for the [[m:bot|bot]] flag should be made on this page. This wiki uses the [[m:bot policy|standard bot policy]], and allows [[m:bot policy#Global_bots|global bots]] and [[m:bot policy#Automatic_approval|automatic approval of certain types of bots]]. Other bots should apply below.
<div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if:|;}}">'''直接寫個[//zh.wiktionary.org/w/wiki.phtml?title=Wiktionary:机器人&action=edit§ion=3 新提議]</div>
</div>
== 当前的准则 ==
在当前的状况下,一个机器人的制造者需要遵循下列准则,以证明它所负有的责任:
#机器人必须是'''有用的'''
#机器人必须是'''无害的'''
#机器人絕'''不能对服务器造成影响'''
#使用机器人必须被'''批准'''
在使用一个机器人之前你必须获得管理员的许可,并且通告大家他不是一个真实的人(您可以在用户页上注明)。另外,使用一个机器人时,请为这个机器人单独注册一个用户名,并且最好在用户名中用“bot”来表示这个用户是一个机器人。例如申请一个用户名为'''User:WiktionaryBot'''。
在当前的系统中,一个已注册的机器人所作的修改在[[Special:Recentchanges|最近更改]]中默认是隐藏的,其他用户不会看到。如果您想看到机器人所作的修改,可以使用[{{fullurl:Special:最近更改|hidehumans=1&hideWikibase=1&urlversion=2}} 這個連結]来查看。
'''请在获得社群的批准后,至[[:m:Steward requests/Bot status]]申請機器人權限。'''
== 已注册的机器人 ==
當前全部機器人自動列表,請參看[[Special:用户列表/bot]]
<pre>
#[[User:机器人帐户名|机器人帐户名]] (操作:[[User:用户名|用户名]][[User_talk:用户名|<sup><small>对话页</small></sup>]])
</pre>
#[[User:A2093064-bot|A2093064-bot]] (操作:[[User:Xiplus|Xiplus]][[User_talk:Xiplus|<sup><small>对话页</small></sup>]])
#[[User:JackBot|JackBot]] (操作:[[meta:User:JackPotte|JackPotte]])
#[[User:OctraBot|OctraBot]] (操作:[[User:Octahedron80|Octahedron80]])
#[[User:TongcyBot|TongcyBot]] (操作:[[User:TongcyDai|TongcyDai]][[User_talk:TongcyDai|<sup><small>对话页</small></sup>]])
#[[User:CrowleyBot|CrowleyBot]] (操作:[[User:EdwardAlexanderCrowley|EdwardAlexanderCrowley]][[User_talk:EdwardAlexanderCrowley|<sup><small>对话页</small></sup>]])
#[[User:KotoriBot|KotoriBot]] (操作:[[User_talk:Hzy980512|Hzy980512]])
# [[User:Cewbot|Cewbot]](操作者:[[User:Kanashimi|Kanashimi]])
=== 已除權的機器人 ===
#[[User:RobotGMwikt|RobotGMwikt]] (操作:[[User:GerardM|GerardM]][[User_talk:GerardM|<sup><small>对话页</small></sup>]][http://zh.wiktionary.org/w/index.php?title=User_talk:GerardM&action=edit§ion=new <sup>+</sup>])
#[[User:PiBot|PiBot]] (操作:[[User:Shibo77|Shibo77]][[User_talk:Shibo77|<sup><small>对话页</small></sup>]][http://zh.wiktionary.org/w/index.php?title=User_talk:Shibo77&action=edit§ion=new <sup>+</sup>])
#[[User:OKBot|OKBot]] (操作:[[:ar:User:OsamaK]])
#[[User:SpaceBirdyBot|SpaceBirdyBot]] (操作:[[:is:Notandi:Spacebirdy]])
#[[User:VolkovBot|VolkovBot]] (操作:[[:ru:User:Volkov]])
#[[User:SieBot|SieBot]] (操作:[[:commons:User:Siebrand]])
#[[User:Luckas-bot|Luckas-bot]] (操作:[[:pt:User:Luckas Blade]])
#[[User:lccfbot|lccfbot]] (操作:[[User:Lccf]])
#[[USer:Wjcdbot|Wjcdbot]] (操作:[[User:Wjcd]])
#[[User:KamikazeBot|KamikazeBot]] (操作:[[User:Karol007]])
#[[User:MenasimBot|MenasimBot]] (操作:[[:en:User:Menasim]])
除 PiBot, Lccfbot, Wjcdbot 外,其餘均為僅用於添加跨語言連結的機械人。
由於大批量導入工作的完成,以及2017年以後不再需要向詞條手動添加跨語言鏈接,上述機器人已久無使用需要,已於2018年除權。
[[Category:维基词典|机]]
[[Category:維基詞典方針]]
== 机器人提议 ==
如果您希望那些功能机器人的实现会对维基词典有助,可以在下面提出,大家也可以讨论是否支持这种机器人的出现,机器人的制造者们也有可能会考虑去实现您的设想。舊的討論請參見[[Wiktionary:机器人/提议存档]]。
== 机器人申請 ==
* [[Wiktionary:机器人/申请存档|申请存档]]
<pre>
# {{支持}}~~~~ # {{中立}}~~~~ # {{反对}}~~~~
</pre>
<!-- 請在本列以下申請。Please apply below this line. -->
<!-- 如無申請,請加入「{{Nodis|申請}}」-->
{{Nodis|申請}}
mle9t4jtb9ci9ktztqjl6twswkha2ee
pecan
0
131796
9760163
6661264
2026-05-15T07:28:14Z
InternetArchiveBot
95668
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
9760163
wikitext
text/x-wiki
==英語==
===發音===
{{rel-top|發音}}
* {{IPA|en|/piːˈkɑːn/}} {{qualifier|美國32%使用者使用的發音;除紐約、新英格蘭和東南沿海以外,其他地方都很普遍}}<ref name="dialect">[https://web.archive.org/web/20200517132431/http://www4.uwm.edu/FLL/linguistics/dialect/staticmaps/q_21.html The Dialect Survey], and [https://web.archive.org/web/20130606184957/http://spark-1590165977.us-west-2.elb.amazonaws.com/jkatz/SurveyMaps/ Joshua Katz's maps of it]</ref>
* {{IPA|en|/pɪˈkɑːn/}} {{qualifier|美國23%使用者使用的發音,主要是在中西部南部;亦用於英國}}<ref name="dialect" /><ref>{{R:Dictionary.com}}</ref><ref name=COED>"[http://www.wordreference.com/definition/pecan pecan]" in the ''Concise Oxford English Dictionary'', 2008, WordReference.com</ref>
* {{IPA|en|/ˈpiːkæn/}} {{qualifier|美國14%使用者使用的發音,常見於紐約、新英格蘭和東南沿海地區;也用於英國、澳大利亞和加拿大}}<ref name="dialect" /><ref name=Merriam-Webster>{{R:Merriam Webster Online}}</ref><ref>Christopher Davies, ''Divided by a Common Language: A Guide to British and American English'' (2005-7)</ref><ref name="Gage">'''1983''', ''{{w|Gage Canadian Dictionary}}''</ref><ref name="Canadian Oxford">'''2004''', ''{{w|Canadian Oxford Dictionary}}'', 2 ed.</ref>
* {{IPA|en|/ˈpiːkɑːn/}} {{qualifier|美國13%使用者使用的發音,主要是在上中西部地區}}<ref name="dialect" />
* {{IPA|en|/piːˈkæn/}} {{qualifier|美國7%使用者使用的發音,在任何地區都不常見;也用於加拿大,澳大利亞和新西蘭}}<ref name="dialect" /><ref name="Canadian Oxford" /><ref name="Aus Oxford">'''2004''', ''{{w|Australian Oxford Dictionary}}''</ref><ref name="NZ Oxford">'''2005''', ''New Zealand Oxford Dictionary''</ref>
* {{IPA|en|/ˈpɪkæn/}} {{qualifier|幾乎只在新英格蘭沿海地區使用,但即使在那裡也不是最常見的發音}}<ref name="dialect" />
* {{IPA|en|/pəˈkɔːn/|/pɪˈkɔːn/}} {{qualifier|用于路易斯安那}}<ref>Claude E. Kantner, ''Variant Louisiana pronunciations of the word "pecan"'' (1944)</ref>
* {{IPA|en|/pəˈkɑːn/}} {{qualifier|若不重读,有时用于美国}}<ref name=Merriam-Webster />
* {{IPA|en|/pɪˈkæn/}} {{qualifier|用于英國和加拿大;亦被一些美國使用者使用}}<ref name=Merriam-Webster /><ref name=Gage/><ref>Burkhard Dretzke, ''Modern British and American English pronunciation'' (2008)</ref>
* {{IPA|en|/ˈpiːkən/}} {{qualifier|用于英國、澳大利亞和新西蘭}}<ref name=COED /><ref name="Aus Oxford" /><ref name="NZ Oxford" />
* {{IPA|en|/pəˈkɒn/}} {{qualifier|用于加拿大}}<ref name="Canadian Oxford" />
{{rel-bottom}}
* {{audio|en|en-au-pecan.ogg|音頻(澳式) {{IPAchar|/ˈpiːkæn/}}}}
* {{rhymes|en|ɑːn|æn|ɔːn|iːkən}}
:'''pecan'''
#[[一种大胡桃]]
[[Category:英语名词]]
[[Category:待分類的英語詞]]
[[Category:英語]]
[[分类:拉丁文字]]
inaie2pkqhksmer3vjh0math3kjmxlj
非洲
0
140425
9759532
9728769
2026-05-14T22:02:06Z
TongcyDai
53191
9759532
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp}}
[[File:Africa location map.svg|250px|thumb]]
===詞源===
{{zh-etym-short|阿非利加|洲}}。
===發音===
{{zh-pron
|m=Fēizhōu
|c=fei1 zau1
|h=pfs=Fî-chû
|md=Hĭ-ciŭ
|mn=Hui-chiu
|mn-t=hui1 ziu1
|w=1fi tseu
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q48}}{{place|zh|位於[[歐洲]]以南、[[大西洋]]以東、[[印度洋]]以西、[[南極洲]]以北的<<大洲>>,大部分地區位於[[東半球]]|tcl=位於[[歐洲]]以南、介於[[大西洋]]和[[印度洋]]之間的<<大洲>>}}
#:{{zh-x|上年 我 探望 了 一些 ^非洲 家庭。|}}
====同義詞====
* {{qual|棄用}} {{zh-l|阿非利加}}、{{zh-l|亞非利加}}
====衍生詞====
{{col3|zh|黑非洲|北部非洲|非洲之角|非洲聯盟|非洲野犬|非洲獵犬|非洲豬瘟|非洲和尚——黑人僧}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q15|大洲}}
* 亞齊語:{{t|ace|Afrika}}
* 西切爾克斯語:{{t|ady|Африкэ}}
* 南非語:{{t+|af|Afrika}}
* 阿坎語:{{t|ak|Afrika}}
* 阿爾巴尼亞語:{{t|sq|Afrikë|f}} {{qualifier|不定}}、{{t+|sq|Afrika|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|አፍሪቃ}}
* 阿拉伯語:{{t+|ar|أَفْرِيقِيَا|f}}、{{t+|ar|إِفْرِيقِيَا|f}}
*: 漢志阿拉伯語:{{t|acw|أفريقيا|f|tr=ʔafrīqya}}
* 亞美尼亞語:{{t+|hy|Աֆրիկա}}
* 亞述新亞拉姆語:{{t|aii|ܐܲܦܪܝܼܩܵܐ|tr=Āfrīqa|f}}
* 阿斯圖里亞斯語:{{t+|ast|África}}
* 阿塞拜疆語:{{t+|az|Afrika}}
* 班巴拉語:{{t|bm|Afrika}}
* 巴什基爾語:{{t|ba|Африка}}
* 巴斯克語:{{t+|eu|Afrika}}
* 巴伐利亞語:{{t|bar|Afrika}}
* 白俄羅斯語:{{t|be|А́фрыка|f}}
* 孟加拉語:{{t+|bn|আফ্রিকা}}
* 伯塔維語:{{t|bew|Aprika}}
* 布拉灰語:{{t|brh|Afríká}}
* 布列塔尼語:{{t+|br|Afrika|f}}
* 保加利亞語:{{t+|bg|А́фрика|f}}
* 緬甸語:{{t|my|အာဖရိက}}
* 盧森尼亞語:{{t|rue|А́фрика|f}}
* 加泰羅尼亞語:{{t+|ca|Àfrica|f}}
* 中阿特拉斯柏柏爾語:{{t|tzm|ⵜⴰⴼⴻⵔⴽⴰ}}、{{t|tzm|ⵜⴰⴼⵔⵉⵇⵜ}}
* 車臣語:{{t|ce|Африка}}、{{t|ce|Африк}}
* 切羅基語:{{t|chr|ᎬᎿᎨᏍᏛ}}
* 齊切瓦語:{{t|ny|Afirika}}
* 康沃爾語:{{t|kw|Afrika}}
* 科西嘉語:{{t+|co|Africa|f}}
* 克里米亞韃靼語:{{t|crh|Afrika}}
* 捷克語:{{t+|cs|Afrika|f}}
* 丹麥語:{{t+|da|Afrika|n}}
* 迪維希語:{{t+|dv|އެފްރިކާ}}
* 丁卡語:{{t|din|Apirïka}}
* 荷蘭語:{{t+|nl|Afrika|n}}
* 宗喀語:{{t|dz|ཨཕ་རི་ཀ}}
* 英語:{{t+|en|Africa}}
* 世界語:{{t+|eo|Afriko}}
* 愛沙尼亞語:{{t+|et|Aafrika}}
* 法羅語:{{t|fo|Afrika|f|n}}
* 芬蘭語:{{t+|fi|Afrikka}}
* 法語:{{t|fr|l’[[Afrique]]|f}}
* 弗留利語:{{t|fur|Afriche|f}}
* 加利西亞語:{{t+|gl|África|f}}
* 格魯吉亞語:{{t+|ka|აფრიკა}}
* 德語:{{t+|de|Afrika|n}}
* 希臘語:{{t+|el|Αφρική|f}}
*: 古希臘語:{{t|grc|Ἀφρική|f}}、{{t|grc|Λιβύη}}
* 格陵蘭語:{{t|kl|Afrika}}
* 古吉拉特語:{{t|gu|આફ્રિકા}}
* 豪薩語:{{t+|ha|Afirka}}
* 夏威夷語:{{t|haw|ʻApelika}}
* 希伯來語:{{t+|he|אַפְרִיקָה|f|tr=áfrika}}
* 印地語:{{t+|hi|अफ़्रीका|m}}、{{t|hi|कालद्वीप|m|lit=black continent}}
* 匈牙利語:{{t+|hu|Afrika}}
* 冰島語:{{t+|is|Afríka|f}}
* 伊多語:{{t+|io|Afrika}}
* 伊博語:{{t|ig|Eluàlà}}
* 英格里亞語:{{t|izh|Afrikka}}
* 愛爾蘭語:{{t|ga|[[an]] [[Afraic]]|f}}
*: 中古愛爾蘭語:{{t|mga|Afraicc|f}}
*: 古愛爾蘭語:{{t|sga|Afraicc|f}}
* 意大利語:{{t+|it|Africa|f}}
* 日語:{{t+|ja|アフリカ|tr=Afurika}}、{{qualifier|過時}} {{t+|ja|阿弗利加|tr=Afurika}}
* 爪哇語:{{t|jv|Afrika}}
* 卡拜爾語:{{t|kab|Tafrikt}}
* 卡爾梅克衛拉特語:{{t|xal|Априк}}
* 卡納達語:{{t|kn|ಆಫ್ರಿಕಾ}}
* 卡拉卡爾帕克語:{{t|kaa|Afrika}}
* 克什米爾語:{{t|ks|اَفریٖقہ}}
* 卡舒比語:{{t+|csb|Afrika|f}}
* 哈薩克語:{{t+|kk|Африка}}
* 高棉語:{{t|km|អាហ្វ្រិក}}
* 剛果語:{{t|kg|Afelika}}、{{t|kg|Afrika}}、{{t|kg|Katiopa}}
* 朝鮮語:{{t+|ko|^아프리카}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Efrîqa}}
* 吉爾吉斯語:{{t+|ky|Африка}}
* 拉登語:{{t-needed|lld}}
* 拉蒂諾語:{{t|lad|Afrika}}
* 老撾語:{{t+|lo|ອາຟຣິກກາ}}、{{t|lo|ອາຟຣິກາ}}、{{t|lo|ອາຝະລິກາ}}、{{t|lo|ອາຟຣິກ}}、{{t|lo|ອາຟະລິກ}}
* 拉丁語:{{t+|la|Āfrica|f}}、{{t|la|利比亞|f}}
* 拉脫維亞語:{{t+|lv|Āfrika|f}}
* 林加拉語:{{t|ln|Afríka}}
* 立陶宛語:{{t+|lt|Afrika|f}}
* 傣仂語:{{t|khb|ᦵᦝᧀᧈᦵᦋᦲᧁᧈ}}
* 馬其頓語:{{t|mk|Африка|f}}
* 馬拉加斯語:{{t+|mg|Afrika}}
* 馬來語:{{t+|ms|Afrika}}
* 馬拉雅拉姆語:{{t+|ml|ആഫ്രിക്ക}}
* 馬爾他語:{{t|mt|Afrika}}
* 曼島語:{{t|gv|Affrick|f|alt=Yn Affrick}}
* 毛利語:{{t|mi|Āwherika}}
* 馬拉地語:{{t|mr|आफ्रिका}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Африк}}
*: 蒙古語:{{t|mn|ᠠᠹᠷᠢᠺᠠ}}
* 莫西語:{{t|mos|Afriki}}
* 納瓦霍語:{{t|nv|Naakaii Łizhiní Bikéyah}}
* 尼泊爾語:{{t+|ne|अफ्रिका}}
* 北薩米語:{{t|se|Afrihkká}}
* 北塞索托語:{{t|nso|Afrika}}
* 西北奧吉布瓦語:{{t|ojb|Makadewiiyaas-gichi-aki}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Afrika|n}}
*: 新挪威語:{{t+|nn|Afrika|n}}
* 奧克語:{{t+|oc|Africa|f}}
* 奧利亞語:{{t|or|ଆଫ୍ରିକା}}
* 古教會斯拉夫語:
*: 西里爾字母:{{t|cu|Афріка|f}}
*: Glagolitic: {{t|cu|Ⰰⱇⱃⰻⰽⰰ|f}}
* 古英語:{{t+|ang|Affrica|f}}
* 古法語:{{t|fro|Affrique|f}}、{{t|fro|Affrike|f}}
* 奧塞梯語:{{t|os|Африкӕ}}
* 班詩蘭語:{{t|pag|Afrika}}
* 帕皮阿門托語:{{t|pap|Afrika}}
* 普什圖語:{{t+|ps|افريقا|tr=afrīqā}}
* 波斯語:
*: Classical 波斯語:{{t|fa-cls|آفْرِیقَا}}
*: 達利波斯語:{{t|prs|آفْرِیقَا}}
*: 伊朗波斯語:{{t|fa-ira|آفْریقا}}
* 皮埃蒙特語:{{t-needed|pms}}
* 皮特凱恩語:{{t|pih|Afreka}}
* 門諾低地德語:{{t+|pdt|Afrika|f}}
* 波蘭語:{{t+|pl|Afryka|f}}
* 葡萄牙語:{{t+|pt|África|f}}
* 旁遮普語:{{t+|pa|ਅਫ਼ਰੀਕਾ}}
* 羅馬尼亞語:{{t+|ro|Africa|f}}
* 俄語:{{t+|ru|А́фрика|f}}
* 盧旺達語:{{t|rw|Afurika}}
* 梵語:{{t|sa|अफ्रीका}}
* 撒丁語:{{t|sc|Afrika}}
* 蘇格蘭蓋爾語:{{t|gd|Afraga|m}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|А̀фрика|f}}
*: 拉丁字母:{{t+|sh|Àfrika|f}}
* 西里西亞語:{{t|szl|Afrika}}
* 信德語:{{t|sd|آفريڪا}}
* 僧加羅語:{{t+|si|අප්රිකාව}}
* 斯洛伐克語:{{t+|sk|Afrika|f}}
* 斯洛文尼亞語:{{t+|sl|Áfrika|f}}
* 索馬里語:{{t|so|Afrika}}
* 索布語:
*: Lower 索布語:{{t|dsb|Afrika|f}}
*: Upper 索布語:{{t+|hsb|Afrika|f}}
* 塞索托語:{{t+|st|Afrika}}
* 南恩德貝勒語:{{t|nr|Afrika}}
* 西班牙語:{{t+|es|África|f}}
* 蘇里南湯加語:{{t|srn|Afrika}}
* 巽他語:{{t+|su|Afrika}}
* 斯瓦希里語:{{t+|sw|Afrika}}
* 史瓦濟語:{{t|ss|Afrika}}
* 瑞典語:{{t+|sv|Afrika|n}}
* 他加祿語:{{t+|tl|Aprika}}
* 塔吉克語:{{t+|tg|Африқо}}
* 泰米爾語:{{t+|ta|ஆப்பிரிக்கா}}
* 韃靼語:{{t|tt|Африка}}
* 泰盧固語:{{t+|te|ఆఫ్రికా}}
* 泰語:{{t+|th|แอฟริกา}}
* 藏語:{{t|bo|ཨ་ཧྥེ་རི་ཁ}}
* 提格里尼亞語:{{t|ti|ኣፍሪቃ}}
* 聰加語:{{t|ts|Afrika}}
* 茨瓦納語:{{t|tn|Aforika}}
* 土耳其語:{{t+|tr|Afrika}}
* 土庫曼語:{{t|tk|Afrika}}
* 烏克蘭語:{{t+|uk|А́фрика|f}}
* 烏爾都語:{{t|ur|اَفْرِیقَہ|m}}、{{t|ur|اَفْرِیقا|m}}
* 維吾爾語:{{t+|ug|ئافرىقا}}
* 烏茲別克語:{{t+|uz|Afrika}}
* 瓦伊語:{{t|vai|ꕉꔱꔸꕪ|tr=Áfíríka}}
* 文達語:{{t|ve|Afurika}}
* 威尼斯語:{{t-needed|vec}}
* 維普斯語:{{t|vep|Afrik}}
* 越南語:{{t+|vi|Châu Phi}} ({{t|vi|洲非}}), {{t|vi|Phi Châu}} ({{t|vi|非洲}}), {{t+|vi|Phi}}
* 沃拉普克語:{{t+|vo|Frikop}}、{{qualifier|棄用}} {{t|vo|Fikop}}
* 佛羅語:{{t|vro|Afriga}}
* 沃特語:{{t-needed|vot}}
* 瓦隆語:{{t+|wa|Afrike|f}}
* 瓦瑞瓦瑞語:{{t|war|Aprika}}
* 威爾士語:(yr) {{t+|cy|Affrica|f}}
* 西佛蘭德語:{{t-check|vls|Afrika}}
* 西弗里斯蘭語:{{t+|fy|Afrika|n}}
* 沃洛夫語:{{t+|wo|Afrig}}
* 科薩語:{{t|xh|i-Afrika}}
* 意第緒語:{{t|yi|אַפֿריקע}}
* 約魯巴語:{{t|yo|Ilẹ̀ Adúláwọ̀}}、{{t|yo|Áfíríkà}}
* 扎扎其語:{{qualifier|Southern Zazaki}} {{t+|zza|Afrika}}
* 壯語:{{t|za|Feihcouh}}
* 祖魯語:{{t|zu|i-Afrika}}
{{trans-bottom}}
===形容詞===
{{head|zh|形容詞}}
# {{lb|zh|neologism|俚語|抽卡遊戲}} [[壞運]]
#: {{ant|zh|歐洲}}
{{zh-cat|大洲}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|Phi châu|sc=Hani}}
# {{han tu form of|Phi châu|}}
kfiwc31daleagqztbpbntg12up69a1w
9759533
9759532
2026-05-14T22:03:39Z
TongcyDai
53191
9759533
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp}}
[[File:Africa location map.svg|250px|thumb]]
===詞源===
{{zh-etym-short|阿非利加|洲}}。
===發音===
{{zh-pron
|m=Fēizhōu
|c=fei1 zau1
|h=pfs=Fî-chû
|md=Hĭ-ciŭ
|mn=Hui-chiu
|mn-t=hui1 ziu1
|w=1fi tseu
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q15}}{{place|zh|位於[[歐洲]]以南、[[大西洋]]以東、[[印度洋]]以西、[[南極洲]]以北的<<大洲>>,大部分地區位於[[東半球]]|tcl=位於[[歐洲]]以南、介於[[大西洋]]和[[印度洋]]之間的<<大洲>>}}
#:{{zh-x|上年 我 探望 了 一些 ^非洲 家庭。|}}
====同義詞====
* {{qual|棄用}} {{zh-l|阿非利加}}、{{zh-l|亞非利加}}
====衍生詞====
{{col3|zh|黑非洲|北部非洲|非洲之角|非洲聯盟|非洲野犬|非洲獵犬|非洲豬瘟|非洲和尚——黑人僧}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q15|大洲}}
* 亞齊語:{{t|ace|Afrika}}
* 西切爾克斯語:{{t|ady|Африкэ}}
* 南非語:{{t+|af|Afrika}}
* 阿坎語:{{t|ak|Afrika}}
* 阿爾巴尼亞語:{{t|sq|Afrikë|f}} {{qualifier|不定}}、{{t+|sq|Afrika|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|አፍሪቃ}}
* 阿拉伯語:{{t+|ar|أَفْرِيقِيَا|f}}、{{t+|ar|إِفْرِيقِيَا|f}}
*: 漢志阿拉伯語:{{t|acw|أفريقيا|f|tr=ʔafrīqya}}
* 亞美尼亞語:{{t+|hy|Աֆրիկա}}
* 亞述新亞拉姆語:{{t|aii|ܐܲܦܪܝܼܩܵܐ|tr=Āfrīqa|f}}
* 阿斯圖里亞斯語:{{t+|ast|África}}
* 阿塞拜疆語:{{t+|az|Afrika}}
* 班巴拉語:{{t|bm|Afrika}}
* 巴什基爾語:{{t|ba|Африка}}
* 巴斯克語:{{t+|eu|Afrika}}
* 巴伐利亞語:{{t|bar|Afrika}}
* 白俄羅斯語:{{t|be|А́фрыка|f}}
* 孟加拉語:{{t+|bn|আফ্রিকা}}
* 伯塔維語:{{t|bew|Aprika}}
* 布拉灰語:{{t|brh|Afríká}}
* 布列塔尼語:{{t+|br|Afrika|f}}
* 保加利亞語:{{t+|bg|А́фрика|f}}
* 緬甸語:{{t|my|အာဖရိက}}
* 盧森尼亞語:{{t|rue|А́фрика|f}}
* 加泰羅尼亞語:{{t+|ca|Àfrica|f}}
* 中阿特拉斯柏柏爾語:{{t|tzm|ⵜⴰⴼⴻⵔⴽⴰ}}、{{t|tzm|ⵜⴰⴼⵔⵉⵇⵜ}}
* 車臣語:{{t|ce|Африка}}、{{t|ce|Африк}}
* 切羅基語:{{t|chr|ᎬᎿᎨᏍᏛ}}
* 齊切瓦語:{{t|ny|Afirika}}
* 康沃爾語:{{t|kw|Afrika}}
* 科西嘉語:{{t+|co|Africa|f}}
* 克里米亞韃靼語:{{t|crh|Afrika}}
* 捷克語:{{t+|cs|Afrika|f}}
* 丹麥語:{{t+|da|Afrika|n}}
* 迪維希語:{{t+|dv|އެފްރިކާ}}
* 丁卡語:{{t|din|Apirïka}}
* 荷蘭語:{{t+|nl|Afrika|n}}
* 宗喀語:{{t|dz|ཨཕ་རི་ཀ}}
* 英語:{{t+|en|Africa}}
* 世界語:{{t+|eo|Afriko}}
* 愛沙尼亞語:{{t+|et|Aafrika}}
* 法羅語:{{t|fo|Afrika|f|n}}
* 芬蘭語:{{t+|fi|Afrikka}}
* 法語:{{t|fr|l’[[Afrique]]|f}}
* 弗留利語:{{t|fur|Afriche|f}}
* 加利西亞語:{{t+|gl|África|f}}
* 格魯吉亞語:{{t+|ka|აფრიკა}}
* 德語:{{t+|de|Afrika|n}}
* 希臘語:{{t+|el|Αφρική|f}}
*: 古希臘語:{{t|grc|Ἀφρική|f}}、{{t|grc|Λιβύη}}
* 格陵蘭語:{{t|kl|Afrika}}
* 古吉拉特語:{{t|gu|આફ્રિકા}}
* 豪薩語:{{t+|ha|Afirka}}
* 夏威夷語:{{t|haw|ʻApelika}}
* 希伯來語:{{t+|he|אַפְרִיקָה|f|tr=áfrika}}
* 印地語:{{t+|hi|अफ़्रीका|m}}、{{t|hi|कालद्वीप|m|lit=black continent}}
* 匈牙利語:{{t+|hu|Afrika}}
* 冰島語:{{t+|is|Afríka|f}}
* 伊多語:{{t+|io|Afrika}}
* 伊博語:{{t|ig|Eluàlà}}
* 英格里亞語:{{t|izh|Afrikka}}
* 愛爾蘭語:{{t|ga|[[an]] [[Afraic]]|f}}
*: 中古愛爾蘭語:{{t|mga|Afraicc|f}}
*: 古愛爾蘭語:{{t|sga|Afraicc|f}}
* 意大利語:{{t+|it|Africa|f}}
* 日語:{{t+|ja|アフリカ|tr=Afurika}}、{{qualifier|過時}} {{t+|ja|阿弗利加|tr=Afurika}}
* 爪哇語:{{t|jv|Afrika}}
* 卡拜爾語:{{t|kab|Tafrikt}}
* 卡爾梅克衛拉特語:{{t|xal|Априк}}
* 卡納達語:{{t|kn|ಆಫ್ರಿಕಾ}}
* 卡拉卡爾帕克語:{{t|kaa|Afrika}}
* 克什米爾語:{{t|ks|اَفریٖقہ}}
* 卡舒比語:{{t+|csb|Afrika|f}}
* 哈薩克語:{{t+|kk|Африка}}
* 高棉語:{{t|km|អាហ្វ្រិក}}
* 剛果語:{{t|kg|Afelika}}、{{t|kg|Afrika}}、{{t|kg|Katiopa}}
* 朝鮮語:{{t+|ko|^아프리카}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Efrîqa}}
* 吉爾吉斯語:{{t+|ky|Африка}}
* 拉登語:{{t-needed|lld}}
* 拉蒂諾語:{{t|lad|Afrika}}
* 老撾語:{{t+|lo|ອາຟຣິກກາ}}、{{t|lo|ອາຟຣິກາ}}、{{t|lo|ອາຝະລິກາ}}、{{t|lo|ອາຟຣິກ}}、{{t|lo|ອາຟະລິກ}}
* 拉丁語:{{t+|la|Āfrica|f}}、{{t|la|利比亞|f}}
* 拉脫維亞語:{{t+|lv|Āfrika|f}}
* 林加拉語:{{t|ln|Afríka}}
* 立陶宛語:{{t+|lt|Afrika|f}}
* 傣仂語:{{t|khb|ᦵᦝᧀᧈᦵᦋᦲᧁᧈ}}
* 馬其頓語:{{t|mk|Африка|f}}
* 馬拉加斯語:{{t+|mg|Afrika}}
* 馬來語:{{t+|ms|Afrika}}
* 馬拉雅拉姆語:{{t+|ml|ആഫ്രിക്ക}}
* 馬爾他語:{{t|mt|Afrika}}
* 曼島語:{{t|gv|Affrick|f|alt=Yn Affrick}}
* 毛利語:{{t|mi|Āwherika}}
* 馬拉地語:{{t|mr|आफ्रिका}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Африк}}
*: 蒙古語:{{t|mn|ᠠᠹᠷᠢᠺᠠ}}
* 莫西語:{{t|mos|Afriki}}
* 納瓦霍語:{{t|nv|Naakaii Łizhiní Bikéyah}}
* 尼泊爾語:{{t+|ne|अफ्रिका}}
* 北薩米語:{{t|se|Afrihkká}}
* 北塞索托語:{{t|nso|Afrika}}
* 西北奧吉布瓦語:{{t|ojb|Makadewiiyaas-gichi-aki}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Afrika|n}}
*: 新挪威語:{{t+|nn|Afrika|n}}
* 奧克語:{{t+|oc|Africa|f}}
* 奧利亞語:{{t|or|ଆଫ୍ରିକା}}
* 古教會斯拉夫語:
*: 西里爾字母:{{t|cu|Афріка|f}}
*: Glagolitic: {{t|cu|Ⰰⱇⱃⰻⰽⰰ|f}}
* 古英語:{{t+|ang|Affrica|f}}
* 古法語:{{t|fro|Affrique|f}}、{{t|fro|Affrike|f}}
* 奧塞梯語:{{t|os|Африкӕ}}
* 班詩蘭語:{{t|pag|Afrika}}
* 帕皮阿門托語:{{t|pap|Afrika}}
* 普什圖語:{{t+|ps|افريقا|tr=afrīqā}}
* 波斯語:
*: Classical 波斯語:{{t|fa-cls|آفْرِیقَا}}
*: 達利波斯語:{{t|prs|آفْرِیقَا}}
*: 伊朗波斯語:{{t|fa-ira|آفْریقا}}
* 皮埃蒙特語:{{t-needed|pms}}
* 皮特凱恩語:{{t|pih|Afreka}}
* 門諾低地德語:{{t+|pdt|Afrika|f}}
* 波蘭語:{{t+|pl|Afryka|f}}
* 葡萄牙語:{{t+|pt|África|f}}
* 旁遮普語:{{t+|pa|ਅਫ਼ਰੀਕਾ}}
* 羅馬尼亞語:{{t+|ro|Africa|f}}
* 俄語:{{t+|ru|А́фрика|f}}
* 盧旺達語:{{t|rw|Afurika}}
* 梵語:{{t|sa|अफ्रीका}}
* 撒丁語:{{t|sc|Afrika}}
* 蘇格蘭蓋爾語:{{t|gd|Afraga|m}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|А̀фрика|f}}
*: 拉丁字母:{{t+|sh|Àfrika|f}}
* 西里西亞語:{{t|szl|Afrika}}
* 信德語:{{t|sd|آفريڪا}}
* 僧加羅語:{{t+|si|අප්රිකාව}}
* 斯洛伐克語:{{t+|sk|Afrika|f}}
* 斯洛文尼亞語:{{t+|sl|Áfrika|f}}
* 索馬里語:{{t|so|Afrika}}
* 索布語:
*: Lower 索布語:{{t|dsb|Afrika|f}}
*: Upper 索布語:{{t+|hsb|Afrika|f}}
* 塞索托語:{{t+|st|Afrika}}
* 南恩德貝勒語:{{t|nr|Afrika}}
* 西班牙語:{{t+|es|África|f}}
* 蘇里南湯加語:{{t|srn|Afrika}}
* 巽他語:{{t+|su|Afrika}}
* 斯瓦希里語:{{t+|sw|Afrika}}
* 史瓦濟語:{{t|ss|Afrika}}
* 瑞典語:{{t+|sv|Afrika|n}}
* 他加祿語:{{t+|tl|Aprika}}
* 塔吉克語:{{t+|tg|Африқо}}
* 泰米爾語:{{t+|ta|ஆப்பிரிக்கா}}
* 韃靼語:{{t|tt|Африка}}
* 泰盧固語:{{t+|te|ఆఫ్రికా}}
* 泰語:{{t+|th|แอฟริกา}}
* 藏語:{{t|bo|ཨ་ཧྥེ་རི་ཁ}}
* 提格里尼亞語:{{t|ti|ኣፍሪቃ}}
* 聰加語:{{t|ts|Afrika}}
* 茨瓦納語:{{t|tn|Aforika}}
* 土耳其語:{{t+|tr|Afrika}}
* 土庫曼語:{{t|tk|Afrika}}
* 烏克蘭語:{{t+|uk|А́фрика|f}}
* 烏爾都語:{{t|ur|اَفْرِیقَہ|m}}、{{t|ur|اَفْرِیقا|m}}
* 維吾爾語:{{t+|ug|ئافرىقا}}
* 烏茲別克語:{{t+|uz|Afrika}}
* 瓦伊語:{{t|vai|ꕉꔱꔸꕪ|tr=Áfíríka}}
* 文達語:{{t|ve|Afurika}}
* 威尼斯語:{{t-needed|vec}}
* 維普斯語:{{t|vep|Afrik}}
* 越南語:{{t+|vi|Châu Phi}} ({{t|vi|洲非}}), {{t|vi|Phi Châu}} ({{t|vi|非洲}}), {{t+|vi|Phi}}
* 沃拉普克語:{{t+|vo|Frikop}}、{{qualifier|棄用}} {{t|vo|Fikop}}
* 佛羅語:{{t|vro|Afriga}}
* 沃特語:{{t-needed|vot}}
* 瓦隆語:{{t+|wa|Afrike|f}}
* 瓦瑞瓦瑞語:{{t|war|Aprika}}
* 威爾士語:(yr) {{t+|cy|Affrica|f}}
* 西佛蘭德語:{{t-check|vls|Afrika}}
* 西弗里斯蘭語:{{t+|fy|Afrika|n}}
* 沃洛夫語:{{t+|wo|Afrig}}
* 科薩語:{{t|xh|i-Afrika}}
* 意第緒語:{{t|yi|אַפֿריקע}}
* 約魯巴語:{{t|yo|Ilẹ̀ Adúláwọ̀}}、{{t|yo|Áfíríkà}}
* 扎扎其語:{{qualifier|Southern Zazaki}} {{t+|zza|Afrika}}
* 壯語:{{t|za|Feihcouh}}
* 祖魯語:{{t|zu|i-Afrika}}
{{trans-bottom}}
===形容詞===
{{head|zh|形容詞}}
# {{lb|zh|neologism|俚語|抽卡遊戲}} [[壞運]]
#: {{ant|zh|歐洲}}
{{zh-cat|大洲}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|Phi châu|sc=Hani}}
# {{han tu form of|Phi châu|}}
3x9vxl6of1qjs0c0xmzy8d9dr5xols2
辛巴威
0
145311
9759490
6761459
2026-05-14T20:52:12Z
TongcyDai
53191
9759490
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
===發音===
{{zh-pron
|m=Xīnbāwēi
|c=san1 baa1 wai1
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{lb|zh|臺灣}} {{place|zh|國家|r/南非|official=辛巴威共和國|capital=哈拉雷}}
====近義詞====
* {{qualifier|中國大陸}} {{zh-l|津巴布韋}}
====參見====
* {{qualifier|歷史}} {{zh-l|羅德西亞}}
gzoh8xso6v4sorm3xmkf38rdutcnndo
文革
0
146314
9760144
7767172
2026-05-15T06:06:05Z
Fglffer
55252
/* 日語 */
9760144
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===讀音===
{{zh-pron
|m=Wéngé
|c=man4 gaak3,man4 gaap3
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{zh-short|文化大革命}}
{{zh-cat|中國歷史|歷史事件|文化大革命}}
==日語==
{{ja-kanjitab|ぶん|かく|yomi=o}}
===發音===
{{ja-pron|ぶんかく|acc=0|acc_ref=DJR,NHK}}
===專有名詞===
{{ja-pos|proper|ぶんかく}}
# {{short for|ja|文化大革命}}
===參考資料===
<references/>
{{topic|ja|中國歷史|歷史事件|文化大革命|sort=ぶんかく}}
mmf6ecek7mmm05waoq93acsjjon3840
北美洲
0
151017
9759635
9115630
2026-05-14T23:27:47Z
TongcyDai
53191
9759635
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
===發音===
{{zh-pron
|m=Běiměizhōu
|c=bak1 mei5 zau1
|mn=Pak-bí-chiu
|mn-t=bag4 mui2 ziu1
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q49}}{{place|zh|構成[[美洲]]北部的<<大洲>>;位於[[太平洋]]以東、[[大西洋]]以西、[[南美洲]]以北(通常以[[巴拿馬運河]]為界)、[[北冰洋]]以南;為[[地球]]的七[[大洲]]之一|tcl=構成[[美洲]]北部的<<大洲>>}}
#: {{cot|zh|南美洲}}
# 地理名词,包括[[美国]]和[[加拿大]]及其附属岛屿(有时也包括[[格陵兰]])
#: {{cot|zh|拉丁美洲}}
====近義詞====
* {{zh-l|北美}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q49|大洲}}
* 南非語:{{t|af|Noord-Amerika}}
* 阿爾巴尼亞語:{{t|sq|Amerikë Veriore|f}}、{{t|sq|Amerika Veriore|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|ስሜን አሜሪካ}}
* 阿拉伯語:{{t+|ar|أَمْرِيكَا الشَّمَالِيَّة|f}}
* 亞美尼亞語:{{t|hy|Հյուսիսային Ամերիկա}}
* 亞述新亞拉姆語:{{t|aii|ܓܲܪܒܵܝ ܐܵܡܵܝܪܟܵܐ|f|tr=Gārbāy Amayrka}}
* 阿塞拜疆語:{{t+|az|Şimali Amerika}}
* 白俄羅斯語:{{t|be|Паўно́чная Аме́рыка|f}}
* 孟加拉語:{{t+|bn|উত্তর আমেরিকা}}
* 保加利亞語:{{t|bg|Се́верна Аме́рика|f}}
* 緬甸語:{{t|my|မြောက်အမေရိက}}
* 加泰羅尼亞語:{{t+|ca|Amèrica del Nord|f}}
* 切羅基語:{{t|chr|ᏧᏴᏢ ᎠᎹᏰᏟ}}
* 科西嘉語:{{t|co|America di u Nordu|f}}、{{t|co|America settentriunale|f}}
* 捷克語:{{t+|cs|Severní Amerika|f}}
* 丹麥語:{{t+|da|Nordamerika|n}}
* 荷蘭語:{{t+|nl|Noord-Amerika|n}}
* 英語:{{t+|en|North America}}
* 世界語:{{t+|eo|Nordameriko}}
* 愛沙尼亞語:{{t+|et|Põhja-Ameerika}}
* 法羅語:{{t|fo|Norðuramerika|f|n}}
* 芬蘭語:{{t+|fi|Pohjois-Amerikka}}
* 法語:{{t+|fr|Amérique du Nord|f}}
* 加利西亞語:{{t+|gl|América do Norte}}
* 格魯吉亞語:{{t|ka|ჩრდილოეთი ამერიკა}}、{{t|ka|ჩრდილო ამერიკა}}
* 德語:{{t+|de|Nordamerika|n}}
* 希臘語:{{t+|el|Βόρεια Αμερική|f}}
* 海地克里奧爾語:{{t|ht|Amerik dinò}}
* 哈爾彥維語:{{t|bgc|ओ॔टऱ्यामरेख्या}}
* 夏威夷語:{{t|haw|ʻAmelika ʻĀkau}}
* 希伯來語:{{t+|he|אָמֶרִיקָה הַצְּפוֹנִית|f|tr=amérika ha-ts'fonít}}、{{t|he|צְפוֹן אָמֶרִיקָה|f|tr=ts'fon amérika}}
* 印地語:{{t+|hi|उत्तर अमेरिका|m}}、{{t|hi|उत्तर अमरीका|m}}
* 匈牙利語:{{t+|hu|Észak-Amerika}}
* 冰島語:{{t+|is|Norður-Ameríka|f}}
* 伊多語:{{t+|io|Nord-Amerika}}
* 愛爾蘭語:{{t|ga|Meiriceá Thuaidh|m}}
* 意大利語:{{t+|it|America del Nord|f}}
* 日語:{{t+|ja|北アメリカ|tr=Kita Amerika}}、{{t+|ja|北米|tr=ほくべい, Hokubei}}
* 哈薩克語:{{t+|kk|Солтүстік Америка}}
* 高棉語:{{t|km|អាមេរិកខាងជើង}}
* 朝鮮語:{{t|ko|^북미(北美)}}、{{t+|ko|^북아메리카}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Amerîkaya Bakur}}
* 吉爾吉斯語:{{t+|ky|Түндүк Америка}}
* 拉科塔語:{{t|lkt|Khéya Wíta}}
* 老撾語:{{t+|lo|ອາເມລິກາເໜືອ}}
* 拉脫維亞語:{{t|lv|Ziemeļamerika|f}}
* 立陶宛語:{{t+|lt|Šiaurės Amerika|f}}
* 馬其頓語:{{t|mk|Северна Америка|f}}
* 馬來語:{{t+|ms|Amerika Utara}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Хойд Америк}}
* 納瓦霍語:{{t|nv|Náhookǫsjí Kéyah dah siʼánígíí}}
* 諾曼語:{{t|nrf|Améthique du Nord|f}} {{qualifier|澤西}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Nord-Amerika|n}}
* 奧克語:{{t+|oc|America del Nòrd|f}}
* 普什圖語:{{t|ps|شمالی امریکا|f|tr=šamāli amrikā}}
* 波斯語:{{t|fa|آمریکای شمالی|tr=âmrikâ-ye šomâli}}
* 波蘭語:{{t+|pl|Ameryka Północna|f}}
* 葡萄牙語:{{t+|pt|América do Norte|f}}
* 羅馬尼亞語:{{t+|ro|America de Nord|f}}
* 俄語:{{t+|ru|Се́верная Аме́рика|f}}
* 梵語:{{t|sa|उत्तरीयामरेखिका}}
* 蘇格蘭蓋爾語:{{t|gd|Aimeireaga-a-Tuath|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Се̏ве̄рна̄ Амѐрика|f}}、{{t|sh|Сје̏ве̄рна̄ Амѐрика|f}}
*: 拉丁字母:{{t|sh|Sȅvērnā Amèrika|f}}、{{t+|sh|Sjȅvērnā Amèrika|f}}
* 僧加羅語:{{t+|si|උතුරු ඇමෙරිකාව}}
* 斯洛伐克語:{{t+|sk|Severná Amerika|f}}
* 斯洛文尼亞語:{{t|sl|Severna Amerika|f}}
* 塞索托語:{{t|st|Amerika Leboya}}
* 西班牙語:{{t+|es|América del Norte|f}}、{{t+|es|Norteamérica}}
* 斯瓦希里語:{{t|sw|Amerika ya Kaskazini}}
* 瑞典語:{{t+|sv|Nordamerika|n}}
* 塔吉克語:{{t+|tg|Амрикои Шимолӣ}}
* 韃靼語:{{t|tt|Төньяк Америка}}
* 泰盧固語:{{t+|te|ఉత్తర అమెరికా}}
* 泰語:{{t|th|อเมริกาเหนือ}}
* 土耳其語:{{t+|tr|Kuzey Amerika}}
* 土庫曼語:{{t|tk|Demirgazyk Amerika}}
* 烏克蘭語:{{t|uk|Півні́чна Аме́рика|f}}
* 烏爾都語:{{t|ur|شمالی امریکہ|m|tr=śumālī amrīkā}}
* 維吾爾語:{{t|ug|شىمالىي ئامېرىكا}}
* 烏茲別克語:{{t+|uz|Shimoliy Amerika}}
* 越南語:{{t+|vi|Bắc Mỹ}} {{t|vi|北美}})
* 沃拉普克語:{{t+|vo|Nolüda-Merop}}
* 威爾士語:{{t+|cy|Gogledd America}}
* 西弗里斯蘭語:{{t|fy|Noard-Amearika|n}}、{{t|fy|Noard-Amerika|n}}
{{trans-bottom}}
{{zh-cat|北美洲}}
th4sl3n6ewlu76fy6628votgvk752of
砒霜
0
193348
9760151
8914576
2026-05-15T06:27:46Z
Fglffer
55252
/* 漢語 */
9760151
wikitext
text/x-wiki
==漢語==
{{zh-forms|alt=砒礵,磇霜,砒酸-台灣話}}
{{zh-wp}}
===發音===
{{zh-pron
|m=pīshuāng
|c=pei1 soeng1
|h=pfs=phî-sông
|md=piĕ-sŏng
|mn=phi-sng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|chemistry}} [[三氧化二砷]]
# {{lb|zh|mineral}} [[信石]]
====衍生詞====
{{col3|zh|壽星吃砒霜|蜜餞砒霜}}
hu7op2o54p1zc0kzez0f8peu18jyl0e
9760153
9760151
2026-05-15T06:33:05Z
Fglffer
55252
/* 漢語 */
9760153
wikitext
text/x-wiki
==漢語==
{{zh-forms|alt=砒礵,磇霜,砒酸-台灣話}}
{{zh-wp}}
===發音===
{{zh-pron
|m=pīshuāng
|c=pei1 soeng1
|h=pfs=phî-sông
|md=piĕ-sŏng
|mn=phi-sng/phī-sng/phīⁿ-sng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|chemistry}} [[三氧化二砷]]
# {{lb|zh|mineral}} [[信石]]
====衍生詞====
{{col3|zh|壽星吃砒霜|蜜餞砒霜}}
rxqbs2ogm166apr4tvknr3t08udt0yn
Antarktika
0
300875
9759644
9542983
2026-05-14T23:38:30Z
TongcyDai
53191
9759644
wikitext
text/x-wiki
{{also|Antarktíka|Antarktikā}}
==南非語==
{{wp|af:}}
===專有名詞===
源自 {{af-proper noun}}
# {{tcl|af|南極洲|id=Q51}}
====相關詞彙====
* {{l|en|Antarkties}}
===參見===
* {{l|af|Arktika}}
* {{l|af|Suidpool}}
==愛沙尼亞語==
{{wp|et:}}
===專有名詞===
{{head|et|專有名詞}}
# [[南極]]
====變格====
{{et-decl-ohutu|Antarktika|n=sg}}
====近義詞====
* {{l|et|Lõunamanner}}
====相關詞彙====
* {{l|et|Antarktis||南極洲}}
==德語==
===發音===
* {{IPA|de|/antˈʔaʁktika/}}
* {{audio|de|De-Antarktika.ogg|a=柏林}}
===專有名詞===
{{head|de|專有名詞|g=f|屬格|Antarktikas|or|Antarktika}}
# {{tcl|de|南極洲|id=Q51}}
====變格====
{{de-ndecl|f.sg}}
====派生詞彙====
* {{l|de|antarktisch}}
====相關詞彙====
* {{l|de|Antarktis}}
===參見===
{{list:continents/de}}
===延伸閱讀===
* {{pedia|lang=de}}
* {{R:de:DWDS}}
* {{R:de:Duden}}
* {{R:de:UniLeipzig}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA}}
* {{rhymes|hu|kɒ|s=4}}
* {{hyphenation|hu|An|tark|ti|ka}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|南極洲|id=Q51}}
====變格====
{{hu-infl-nom|Antarktiká|o|n=sg}}{{hu-pos-tok|Antarktiká|n=sg}}
===參見===
{{list:continents/hu}}
==伊多語==
{{wp|io:}}
===發音===
{{io-IPA}}
===專有名詞===
{{head|io|專有名詞}}
# {{tcl|io|南極洲|id=Q51}}
===參見===
{{list:continents/io}}
==印尼語==
{{wp|id:}}
===詞源===
{{bor+|id|nl|Antarctica}},源自{{der|id|la-new|Antarctica}},源自{{der|id|grc|ἀνταρκτικός}},源自 {{m|grc|ἀντ-|t=反}} + {{m|grc|ἀρκτικός|t=[[北極]]}},源自{{der|id|grc|ἄρκτος|t=[[bear]]}}。在2017年正寫法更動之前的拼寫為 {{m|id|Antartika}}。
===發音===
{{id-pr|+,antartika}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|南極洲|id=Q51}}
====其他形式====
* {{alt|id|Antartika||被取代}}
* {{alt|ms|Antartika||標準馬來語}}
====參見====
{{list:continents/id}}
===延伸閱讀===
* {{R:KBBI Daring}}
==拉脫維亞語==
{{swp|lv:}}
[[File:Antarctica-Region.png|thumb|250px|Antarktika]]
===詞源===
最终源自{{uder|lv|grc|ἀνταρκτικός}},源自 {{m|grc|ἀντί||反}} + {{m|grc|ἄρκτος||[[大熊座]];[[北]]}}。
===發音===
* {{audio|lv|lv-riga-Antarktika.ogg}}
===專有名詞===
{{lv-proper noun|f|4th}}
# [[南極]]
#: {{ux|lv|'''Antarktika''' sastāv no Antarktīdas un šelfa ledājiem, ūdeņiem un salām, kas atrodas Dienvidu okeānā, uz dienvidiem no Antarktiskās konverģences|'''Antarctic''' is made up of the continent of Antarctica, [[shelf]] [[glacier]]s, waters and islands that are located in the [[Southern Ocean]] southward of the [[Antarctic convergence]]|inline=1}}
====變格====
{{lv-decl-noun|Antarktik|a|4th|no-pl||||proper|extrawidth=-60}}
====近義詞====
* {{l|lv|Antarktīda}}
====相關詞彙====
* {{l|lv|antarktisks}}
====參見====
* {{l|lv|kontinents}}
{{list:continents/lv}}
==書面挪威語==
{{wp|no:}}
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|南極洲|id=Q51}}
====相關詞彙====
* {{l|nb|Antarktis}}
* {{l|nb|antarktisk}}
==新挪威語==
{{wp|nn:}}
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|南極洲|id=Q51}}
====相關詞彙====
* {{l|nn|Antarktis}}
* {{l|nn|antarktisk}}
==塞爾維亞-克羅地亞語==
===發音===
* {{IPA|sh|/antǎrktika/}}
* {{hyphenation|sh|Ant|ark|ti|ka}}
===專有名詞===
{{sh-propn|Antàrktika|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|南極洲|id=Q51}}
#: {{syn|sh|Antàrktik<ll:Bosnia,Serbia,or,口語>}}
====變格====
{{sh-decl-noun-unc
|Antarktika
|Antarktike
|Antarktici
|Antarktiku
|Antarktiko
|Antarktici
|Antarktikom
}}
==斯洛文尼亞語==
===發音===
* {{sl-IPA|Antárktika}}
===專有名詞===
{{sl-proper noun|Antárktika|f}}
# {{tcl|sl|南極洲|id=Q51}}
====變格====
{{sl-decl-noun-f|Antárktik|n=sg}}
==他加祿語==
===發音===
{{tl-pr|Antárktika}}
===專有名詞===
{{tl-proper noun|Antárktiká|b=+}}
# {{alt form|tl|Antartika}}
==土耳其語==
[[Image: Antarctica 6400px from Blue Marble.jpg|thumb|Antarktika]]
===專有名詞===
{{tr-proper noun}}
# {{tcl|tr|南極洲|id=Q51}}
====變格====
{{tr-decl-noun-unc
|Antarktika
|Antarktika'yı
|Antarktika'ya
|Antarktika'da
|Antarktika'dan
|Antarktika'nın
}}
====相關詞彙====
* {{l|tr|Güney Kutbu}}
tsegpfu0o07hpy3vgwkgv8mhlsechst
Algérie
0
318471
9759438
7656515
2026-05-14T15:59:44Z
TongcyDai
53191
9759438
wikitext
text/x-wiki
{{also|Algerie|Algerië}}
==法語==
{{wp|fr:}}
===詞源===
{{etymon|fr|:af|Alger|-ie|tree=1}}
源自 {{af|fr|Alger|-ie}}。{{etystub|fr}}
===發音===
* {{fr-IPA}}
* {{audio|fr|Fr-Algérie.ogg}}
* {{audio|fr|LL-Q150 (fra)-GrandCelinien-Algérie.wav|a=巴黎}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-Algérie.wav|a=孚日}}
* {{rhymes|fr|i|s=3}}
===專有名詞===
{{fr-proper noun|f}}
# {{tcl|fr|阿爾及利亞|id=Q262|place_caplc=Alger}}
====派生詞彙====
* {{l|fr|guerre d'Algérie}}
====相關詞彙====
* {{l|fr|algérien}}
===異序詞===
* {{l|fr|galerie}}、{{l|fr|gèlerai}}、{{l|fr|regelai}}
{{cln|fr|外名}}
==諾曼語==
===詞源===
{{rfe|nrf}}
===專有名詞===
{{nrf-proper noun|f}}
# {{tcl|nrf|阿爾及利亞|id=Q262}}
==越南語==
{{wp|lang=vi}}
===專有名詞===
{{vi-propn}}
# {{alt form|vi|An-giê-ri}}
{{cln|vi|外名}}
20ujhjh48zdc9fgiiwjitwjpw6yuhc7
bách chiến bách thắng
0
327616
9759463
8356395
2026-05-14T17:48:01Z
InternetArchiveBot
95668
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
9759463
wikitext
text/x-wiki
==越南語==
===詞源===
{{vi-etym-sino|百戰百勝}}。
===發音===
{{vi-IPA}}
===成語===
{{head|vi|成語}}
# [[百戰百勝]]
#* '''2020''', Nguyễn Hưng [https://web.archive.org/web/20250519124943/https://kinhtedothi.vn/thong-diep-tu-lich-su-pham-ngu-lao-vi-tuong-bach-chien-bach-thang.html " (Thông điệp từ lịch sử) Phạm Ngũ Lão - vị tướng '''bách chiến, bách thắng''' (來自歷史的消息) Phạm Ngũ Lão - '''百戰百勝'''的將軍"] ''Kinh Tế & Đô Thị (經濟與城市事務)''
#*: {{quote|vi|Điều đáng nói, vị tướng này dường như là truyền nhân của Hưng Đạo Đại Vương Trần Quốc Tuấn. Đây là vị tướng có nhiều nét tương đồng với Trần Quốc Tuấn, cả về tài năng chỉ huy quân sự, lẫn lòng trung thành với vua, với đất nước. Họ đều là những người bách chiến, bách thắng.|值得一提的是,這位將軍似乎是{{w|陳興道|興道王陳國峻}}的後人。這位將軍與陳國峻有許多相似之處,都善於指揮軍隊,並且忠於皇帝和國家。他們都是'''百戰百勝'''的人。}}
====近義詞====
* {{l|vi|trăm trận trăm thắng}}
{{C|vi|百}}
kpbub2zy7p2u11v9btlrlkiphmi8xes
Алжир
0
327826
9759434
9535266
2026-05-14T15:52:29Z
TongcyDai
53191
9759434
wikitext
text/x-wiki
==保加利亞語==
{{wp|bg:}}
{{wp|bg:+ (град),+ (област)}}
===詞源===
最终源自{{der|bg|ar|اَلْجَزَائِر||the islands}}。
===發音===
{{bg-pr|Алжи́р|a=[KK]}}
===專有名詞===
{{bg-proper noun|Алжи́р|mf|adj=алжи́рски|dem=алжи́рец|fdem=алжи́рка}}
# {{tcl|bg|阿爾及利亞|id=Q262}}
# {{tcl|bg|阿爾及爾|id=Q3561,Q141026}}
==哈薩克語==
{{kk-alt}}
{{wp|kk:}}
===專有名詞===
{{head|kk|專有名詞}}
# {{tcl|kk|阿爾及利亞|id=Q262}}
# {{tcl|kk|阿爾及爾|id=Q3561}}
==吉爾吉斯語==
{{wp|ky:}}
===專有名詞===
{{ky-prop}}
# {{tcl|ky|阿爾及利亞|id=Q262}}
====變格====
{{ky-decl-noun-sg}}
==馬其頓語==
===發音===
* {{mk-IPA}}
===專有名詞===
{{mk-proper noun|m|adj=алжирски}}
# {{tcl|mk|阿爾及利亞|id=Q262}}
# {{tcl|mk|阿爾及爾|id=Q3561}}
====派生詞彙====
* {{l|mk|Алжирец|g=m}}、{{l|mk|Алжирка|g=f}}
* {{l|mk|алжирец|g=m}}、{{l|mk|алжирка|g=f}}
==蒙古語==
{{wp|mn:}}
===發音===
{{mn-IPA|Алжи́р}}
===專有名詞===
{{mn-proper noun|ᠠᠯᠵᠢᠷ}}
# {{tcl|mn|阿爾及利亞|id=Q262}}
# {{tcl|mn|阿爾及爾|id=Q3561}}
==潘諾尼亞盧森尼亞語==
===詞源===
{{bor+|rsk|sh|Алжир//Alžir}}, probably from {{der|rsk|de|Algier}},最终源自{{der|rsk|ar|اَلْجَزَائِر}}。
===發音===
* {{rsk-IPA}}
* {{rhymes|rsk|alʒir|s=2}}
* {{hyph|rsk|Ал|жир}}
===專有名詞===
{{rsk-proper noun|m-in|adj=алжирски|dem=Алжирец|fdem=Алжирка}}
# {{tcl|rsk|阿爾及利亞|id=Q262}}
# {{tcl|rsk|阿爾及爾|id=Q3561,Q141026}}
====變格====
{{rsk-decl-noun-table
|Алжир|Алжиру|Алжиру|Алжир|Алжиром|Алжиру|Алжиру
}}
===參見===
{{list:countries in Africa/rsk}}
===參考資料===
* {{R:rsk:SRS|Алжир|832|2}}
{{cln|rsk|singularia tantum}}
==俄語==
{{wp|ru:}}
===其他形式===
* {{alt|ru|Алжи́ръ||ru-PRO}}
===發音===
* {{ru-IPA|Алжи́р}}
* {{audio|ru|Ru-Алжир.ogg}}
===專有名詞===
{{ru-proper noun+|Алжи́р|m|adj=алжи́рский}}
# {{tcl|ru|阿爾及利亞|id=Q262}}
# {{tcl|ru|阿爾及爾|id=Q3561}}
====變格====
{{ru-noun-table|Алжи́р|n=sg}}
====派生詞彙====
* {{l|ru|алжи́рец|g=m-an}}、{{l|ru|алжи́рка|g=f-an}}
====參見====
{{list:countries in Africa/ru}}
==塞爾維亞-克羅地亞語==
===發音===
* {{IPA|sh|/ǎlʒiːr/}}
* {{hyphenation|sh|Ал|жир}}
===專有名詞===
{{sh-propn|А̀лжӣр|m-in}}
# {{tcl|sh|阿爾及利亞|id=Q262}}
# {{tcl|sh|阿爾及爾|id=Q3561}}
====變格====
{{sh-decl-noun-unc
|А̀лжӣр
|Алжи́ра
|Алжиру
|Алжир
|Алжире
|Алжиру
|Алжиром
}}
==烏克蘭語==
{{wp|uk:}}
===其他形式===
* {{alt|uk|Альжі́р||1928-1933 spelling}}
===發音===
* {{uk-IPA|Алжи́р}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Алжир.wav}}
* {{rhymes|uk|ɪr|s=2}}
* {{hyphenation|uk|Ал|жир}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg.genu>|adj=алжи́рський}}
# {{tcl|uk|阿爾及利亞|id=Q262}}
====變格====
{{uk-ndecl|Алжи́р<sg.genu>}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg>|adj=алжи́рський}}
# {{tcl|uk|阿爾及爾|id=Q3561}}
====變格====
{{uk-ndecl|Алжи́р<sg>}}
====派生詞彙====
{{col3|uk|
|алжи́рець
|алжи́рка
}}
===參見===
{{list:countries in Africa/uk}}
===參考資料===
* {{R:uk:Horokh}}
5479gg788ji6m5qjfu01yvcyx25m84w
9759435
9759434
2026-05-14T15:52:53Z
TongcyDai
53191
9759435
wikitext
text/x-wiki
==保加利亞語==
{{wp|bg:}}
{{wp|bg:+ (град),+ (област)}}
===詞源===
最终源自{{der|bg|ar|اَلْجَزَائِر||島嶼}}。
===發音===
{{bg-pr|Алжи́р|a=[KK]}}
===專有名詞===
{{bg-proper noun|Алжи́р|mf|adj=алжи́рски|dem=алжи́рец|fdem=алжи́рка}}
# {{tcl|bg|阿爾及利亞|id=Q262}}
# {{tcl|bg|阿爾及爾|id=Q3561,Q141026}}
==哈薩克語==
{{kk-alt}}
{{wp|kk:}}
===專有名詞===
{{head|kk|專有名詞}}
# {{tcl|kk|阿爾及利亞|id=Q262}}
# {{tcl|kk|阿爾及爾|id=Q3561}}
==吉爾吉斯語==
{{wp|ky:}}
===專有名詞===
{{ky-prop}}
# {{tcl|ky|阿爾及利亞|id=Q262}}
====變格====
{{ky-decl-noun-sg}}
==馬其頓語==
===發音===
* {{mk-IPA}}
===專有名詞===
{{mk-proper noun|m|adj=алжирски}}
# {{tcl|mk|阿爾及利亞|id=Q262}}
# {{tcl|mk|阿爾及爾|id=Q3561}}
====派生詞彙====
* {{l|mk|Алжирец|g=m}}、{{l|mk|Алжирка|g=f}}
* {{l|mk|алжирец|g=m}}、{{l|mk|алжирка|g=f}}
==蒙古語==
{{wp|mn:}}
===發音===
{{mn-IPA|Алжи́р}}
===專有名詞===
{{mn-proper noun|ᠠᠯᠵᠢᠷ}}
# {{tcl|mn|阿爾及利亞|id=Q262}}
# {{tcl|mn|阿爾及爾|id=Q3561}}
==潘諾尼亞盧森尼亞語==
===詞源===
{{bor+|rsk|sh|Алжир//Alžir}}, probably from {{der|rsk|de|Algier}},最终源自{{der|rsk|ar|اَلْجَزَائِر}}。
===發音===
* {{rsk-IPA}}
* {{rhymes|rsk|alʒir|s=2}}
* {{hyph|rsk|Ал|жир}}
===專有名詞===
{{rsk-proper noun|m-in|adj=алжирски|dem=Алжирец|fdem=Алжирка}}
# {{tcl|rsk|阿爾及利亞|id=Q262}}
# {{tcl|rsk|阿爾及爾|id=Q3561,Q141026}}
====變格====
{{rsk-decl-noun-table
|Алжир|Алжиру|Алжиру|Алжир|Алжиром|Алжиру|Алжиру
}}
===參見===
{{list:countries in Africa/rsk}}
===參考資料===
* {{R:rsk:SRS|Алжир|832|2}}
{{cln|rsk|singularia tantum}}
==俄語==
{{wp|ru:}}
===其他形式===
* {{alt|ru|Алжи́ръ||ru-PRO}}
===發音===
* {{ru-IPA|Алжи́р}}
* {{audio|ru|Ru-Алжир.ogg}}
===專有名詞===
{{ru-proper noun+|Алжи́р|m|adj=алжи́рский}}
# {{tcl|ru|阿爾及利亞|id=Q262}}
# {{tcl|ru|阿爾及爾|id=Q3561}}
====變格====
{{ru-noun-table|Алжи́р|n=sg}}
====派生詞彙====
* {{l|ru|алжи́рец|g=m-an}}、{{l|ru|алжи́рка|g=f-an}}
====參見====
{{list:countries in Africa/ru}}
==塞爾維亞-克羅地亞語==
===發音===
* {{IPA|sh|/ǎlʒiːr/}}
* {{hyphenation|sh|Ал|жир}}
===專有名詞===
{{sh-propn|А̀лжӣр|m-in}}
# {{tcl|sh|阿爾及利亞|id=Q262}}
# {{tcl|sh|阿爾及爾|id=Q3561}}
====變格====
{{sh-decl-noun-unc
|А̀лжӣр
|Алжи́ра
|Алжиру
|Алжир
|Алжире
|Алжиру
|Алжиром
}}
==烏克蘭語==
{{wp|uk:}}
===其他形式===
* {{alt|uk|Альжі́р||1928-1933 spelling}}
===發音===
* {{uk-IPA|Алжи́р}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Алжир.wav}}
* {{rhymes|uk|ɪr|s=2}}
* {{hyphenation|uk|Ал|жир}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg.genu>|adj=алжи́рський}}
# {{tcl|uk|阿爾及利亞|id=Q262}}
====變格====
{{uk-ndecl|Алжи́р<sg.genu>}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg>|adj=алжи́рський}}
# {{tcl|uk|阿爾及爾|id=Q3561}}
====變格====
{{uk-ndecl|Алжи́р<sg>}}
====派生詞彙====
{{col3|uk|
|алжи́рець
|алжи́рка
}}
===參見===
{{list:countries in Africa/uk}}
===參考資料===
* {{R:uk:Horokh}}
rnzmk25ccbomce1wc0nyujoqph8o3tp
9759436
9759435
2026-05-14T15:53:16Z
TongcyDai
53191
9759436
wikitext
text/x-wiki
==保加利亞語==
{{wp|bg:}}
{{wp|bg:+ (град),+ (област)}}
===詞源===
最终源自{{der|bg|ar|اَلْجَزَائِر||島嶼}}。
===發音===
{{bg-pr|Алжи́р|a=[KK]}}
===專有名詞===
{{bg-proper noun|Алжи́р|mf|adj=алжи́рски|dem=алжи́рец|fdem=алжи́рка}}
# {{tcl|bg|阿爾及利亞|id=Q262}}
# {{tcl|bg|阿爾及爾|id=Q3561,Q141026}}
==哈薩克語==
{{kk-alt}}
{{wp|kk:}}
===專有名詞===
{{head|kk|專有名詞}}
# {{tcl|kk|阿爾及利亞|id=Q262}}
# {{tcl|kk|阿爾及爾|id=Q3561}}
==吉爾吉斯語==
{{wp|ky:}}
===專有名詞===
{{ky-prop}}
# {{tcl|ky|阿爾及利亞|id=Q262}}
====變格====
{{ky-decl-noun-sg}}
==馬其頓語==
===發音===
* {{mk-IPA}}
===專有名詞===
{{mk-proper noun|m|adj=алжирски}}
# {{tcl|mk|阿爾及利亞|id=Q262}}
# {{tcl|mk|阿爾及爾|id=Q3561}}
====派生詞彙====
* {{l|mk|Алжирец|g=m}}、{{l|mk|Алжирка|g=f}}
* {{l|mk|алжирец|g=m}}、{{l|mk|алжирка|g=f}}
==蒙古語==
{{wp|mn:}}
===發音===
{{mn-IPA|Алжи́р}}
===專有名詞===
{{mn-proper noun|ᠠᠯᠵᠢᠷ}}
# {{tcl|mn|阿爾及利亞|id=Q262}}
# {{tcl|mn|阿爾及爾|id=Q3561}}
==潘諾尼亞盧森尼亞語==
===詞源===
{{bor+|rsk|sh|Алжир//Alžir}},可能源自{{der|rsk|de|Algier}},最终源自{{der|rsk|ar|اَلْجَزَائِر}}。
===發音===
* {{rsk-IPA}}
* {{rhymes|rsk|alʒir|s=2}}
* {{hyph|rsk|Ал|жир}}
===專有名詞===
{{rsk-proper noun|m-in|adj=алжирски|dem=Алжирец|fdem=Алжирка}}
# {{tcl|rsk|阿爾及利亞|id=Q262}}
# {{tcl|rsk|阿爾及爾|id=Q3561,Q141026}}
====變格====
{{rsk-decl-noun-table
|Алжир|Алжиру|Алжиру|Алжир|Алжиром|Алжиру|Алжиру
}}
===參見===
{{list:countries in Africa/rsk}}
===參考資料===
* {{R:rsk:SRS|Алжир|832|2}}
{{cln|rsk|singularia tantum}}
==俄語==
{{wp|ru:}}
===其他形式===
* {{alt|ru|Алжи́ръ||ru-PRO}}
===發音===
* {{ru-IPA|Алжи́р}}
* {{audio|ru|Ru-Алжир.ogg}}
===專有名詞===
{{ru-proper noun+|Алжи́р|m|adj=алжи́рский}}
# {{tcl|ru|阿爾及利亞|id=Q262}}
# {{tcl|ru|阿爾及爾|id=Q3561}}
====變格====
{{ru-noun-table|Алжи́р|n=sg}}
====派生詞彙====
* {{l|ru|алжи́рец|g=m-an}}、{{l|ru|алжи́рка|g=f-an}}
====參見====
{{list:countries in Africa/ru}}
==塞爾維亞-克羅地亞語==
===發音===
* {{IPA|sh|/ǎlʒiːr/}}
* {{hyphenation|sh|Ал|жир}}
===專有名詞===
{{sh-propn|А̀лжӣр|m-in}}
# {{tcl|sh|阿爾及利亞|id=Q262}}
# {{tcl|sh|阿爾及爾|id=Q3561}}
====變格====
{{sh-decl-noun-unc
|А̀лжӣр
|Алжи́ра
|Алжиру
|Алжир
|Алжире
|Алжиру
|Алжиром
}}
==烏克蘭語==
{{wp|uk:}}
===其他形式===
* {{alt|uk|Альжі́р||1928-1933 spelling}}
===發音===
* {{uk-IPA|Алжи́р}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Алжир.wav}}
* {{rhymes|uk|ɪr|s=2}}
* {{hyphenation|uk|Ал|жир}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg.genu>|adj=алжи́рський}}
# {{tcl|uk|阿爾及利亞|id=Q262}}
====變格====
{{uk-ndecl|Алжи́р<sg.genu>}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg>|adj=алжи́рський}}
# {{tcl|uk|阿爾及爾|id=Q3561}}
====變格====
{{uk-ndecl|Алжи́р<sg>}}
====派生詞彙====
{{col3|uk|
|алжи́рець
|алжи́рка
}}
===參見===
{{list:countries in Africa/uk}}
===參考資料===
* {{R:uk:Horokh}}
riab32h9ty81i0pf5meza3nigna93xc
9759437
9759436
2026-05-14T15:53:41Z
TongcyDai
53191
9759437
wikitext
text/x-wiki
==保加利亞語==
{{wp|bg:}}
{{wp|bg:+ (град),+ (област)}}
===詞源===
最终源自{{der|bg|ar|اَلْجَزَائِر||島嶼}}。
===發音===
{{bg-pr|Алжи́р|a=[KK]}}
===專有名詞===
{{bg-proper noun|Алжи́р|mf|adj=алжи́рски|dem=алжи́рец|fdem=алжи́рка}}
# {{tcl|bg|阿爾及利亞|id=Q262}}
# {{tcl|bg|阿爾及爾|id=Q3561,Q141026}}
==哈薩克語==
{{kk-alt}}
{{wp|kk:}}
===專有名詞===
{{head|kk|專有名詞}}
# {{tcl|kk|阿爾及利亞|id=Q262}}
# {{tcl|kk|阿爾及爾|id=Q3561}}
==吉爾吉斯語==
{{wp|ky:}}
===專有名詞===
{{ky-prop}}
# {{tcl|ky|阿爾及利亞|id=Q262}}
====變格====
{{ky-decl-noun-sg}}
==馬其頓語==
===發音===
* {{mk-IPA}}
===專有名詞===
{{mk-proper noun|m|adj=алжирски}}
# {{tcl|mk|阿爾及利亞|id=Q262}}
# {{tcl|mk|阿爾及爾|id=Q3561}}
====派生詞彙====
* {{l|mk|Алжирец|g=m}}、{{l|mk|Алжирка|g=f}}
* {{l|mk|алжирец|g=m}}、{{l|mk|алжирка|g=f}}
==蒙古語==
{{wp|mn:}}
===發音===
{{mn-IPA|Алжи́р}}
===專有名詞===
{{mn-proper noun|ᠠᠯᠵᠢᠷ}}
# {{tcl|mn|阿爾及利亞|id=Q262}}
# {{tcl|mn|阿爾及爾|id=Q3561}}
==潘諾尼亞盧森尼亞語==
===詞源===
{{bor+|rsk|sh|Алжир//Alžir}},可能源自{{der|rsk|de|Algier}},最终源自{{der|rsk|ar|اَلْجَزَائِر}}。
===發音===
* {{rsk-IPA}}
* {{rhymes|rsk|alʒir|s=2}}
* {{hyph|rsk|Ал|жир}}
===專有名詞===
{{rsk-proper noun|m-in|adj=алжирски|dem=Алжирец|fdem=Алжирка}}
# {{tcl|rsk|阿爾及利亞|id=Q262}}
# {{tcl|rsk|阿爾及爾|id=Q3561,Q141026}}
====變格====
{{rsk-decl-noun-table
|Алжир|Алжиру|Алжиру|Алжир|Алжиром|Алжиру|Алжиру
}}
===參見===
{{list:countries in Africa/rsk}}
===參考資料===
* {{R:rsk:SRS|Алжир|832|2}}
{{cln|rsk|唯單名詞}}
==俄語==
{{wp|ru:}}
===其他形式===
* {{alt|ru|Алжи́ръ||ru-PRO}}
===發音===
* {{ru-IPA|Алжи́р}}
* {{audio|ru|Ru-Алжир.ogg}}
===專有名詞===
{{ru-proper noun+|Алжи́р|m|adj=алжи́рский}}
# {{tcl|ru|阿爾及利亞|id=Q262}}
# {{tcl|ru|阿爾及爾|id=Q3561}}
====變格====
{{ru-noun-table|Алжи́р|n=sg}}
====派生詞彙====
* {{l|ru|алжи́рец|g=m-an}}、{{l|ru|алжи́рка|g=f-an}}
====參見====
{{list:countries in Africa/ru}}
==塞爾維亞-克羅地亞語==
===發音===
* {{IPA|sh|/ǎlʒiːr/}}
* {{hyphenation|sh|Ал|жир}}
===專有名詞===
{{sh-propn|А̀лжӣр|m-in}}
# {{tcl|sh|阿爾及利亞|id=Q262}}
# {{tcl|sh|阿爾及爾|id=Q3561}}
====變格====
{{sh-decl-noun-unc
|А̀лжӣр
|Алжи́ра
|Алжиру
|Алжир
|Алжире
|Алжиру
|Алжиром
}}
==烏克蘭語==
{{wp|uk:}}
===其他形式===
* {{alt|uk|Альжі́р||1928-1933 spelling}}
===發音===
* {{uk-IPA|Алжи́р}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Алжир.wav}}
* {{rhymes|uk|ɪr|s=2}}
* {{hyphenation|uk|Ал|жир}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg.genu>|adj=алжи́рський}}
# {{tcl|uk|阿爾及利亞|id=Q262}}
====變格====
{{uk-ndecl|Алжи́р<sg.genu>}}
===專有名詞===
{{uk-proper noun|Алжи́р<sg>|adj=алжи́рський}}
# {{tcl|uk|阿爾及爾|id=Q3561}}
====變格====
{{uk-ndecl|Алжи́р<sg>}}
====派生詞彙====
{{col3|uk|
|алжи́рець
|алжи́рка
}}
===參見===
{{list:countries in Africa/uk}}
===參考資料===
* {{R:uk:Horokh}}
cnov47nl8hm79q0so3pxp421gahvps6
분홍색
0
426459
9759419
5248601
2026-05-14T14:56:41Z
Sayonzei
40728
9759419
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{ko-etym-sino|粉紅||色|}}。
===發音===
{{ko-IPA|l=y}}
===名詞===
{{ko-noun|hanja=粉紅色}}
# [[粉紅色]]
#: {{color panel|F52887|FF80BF}}
#: {{syn|ko|핑크색}}
===參見===
{{table:colors/ko}}
{{C|ko|粉色}}
gl96a2c2j2zvl8yxets84e31rs1kvu6
오렌지색
0
475834
9759417
5257412
2026-05-14T14:56:03Z
Sayonzei
40728
9759417
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{compound|ko|오렌지|색(色)}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# [[橙色]]
#: {{color panel|FF8000}}
====近義詞====
* {{l|ko|주황색(朱黃色)}}
===參見===
{{table:colors/ko}}
{{C|ko|彩虹顏色|橙色}}
t57j8vh80bk31ajfdum2ayj991tk2tb
주황색
0
525291
9759416
5573169
2026-05-14T14:55:58Z
Sayonzei
40728
9759416
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{ko-etym-sino|朱黃色}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=朱黃色}}
# [[橙色]]
#: {{color panel|FF8000}}
====近義詞====
* {{ko-l|오렌지색}}
===參見===
{{table:colors/ko}}
{{C|ko|彩虹顏色|橙色}}
i0o6pfz5yq7x4aj799oqc0o245hix72
초록색
0
538298
9759418
5265714
2026-05-14T14:56:24Z
Sayonzei
40728
9759418
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{ko-etym-sino|草綠||色|}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=草綠色}}
# [[草綠色]]
#: {{color panel|008000|00FF00}}
#: {{syn|ko|초록빛}}
===參見===
{{table:colors/ko}}
{{C|ko|彩虹顏色|綠色}}
978igkr3bykj4kkxambipe9e7knubem
阿爾及爾
0
573335
9759430
8937225
2026-05-14T15:45:09Z
TongcyDai
53191
9759430
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=阿尔及尔|gloss=-}}
{{zh-wp}}
===發音===
{{zh-pron
|m=Ā'ěrjí'ěr
|cat=pn
}}
===专有名词===
{{head|zh|专有名词}}
# {{sid|zh|Q3561}}{{place|zh|caplc|c/阿爾及利亞|r/北非}}
====翻譯====
{{trans-top|阿尔及利亚首都}}
* 南非語:{{t|af|Algiers}}
* 阿爾巴尼亞語:{{t|sq|Algjer|m}}
* 阿姆哈拉語:{{t|am|አልጀርስ}}
* 安地列斯克里奧爾語:{{t|gcf|Aljé}}
* 阿拉伯語:{{t+|ar|الْجَزَائِر|f-p}}
*: 阿爾及利亞阿拉伯語:{{t|arq|الدزاير|tr=ed-dzāyir}}
*: 埃及阿拉伯語:{{t|arz|الجزاير|tr=el-gazāyer}}
*: 摩洛哥阿拉伯語:{{t|ary|الجزائر|tr=el-jazāʔir}}、{{t|ary|الجزاير|tr=el-jazāyir}}
* 亞拉姆語:
*: 亞述新亞拉姆語:{{t|aii|ܓܙܐܝܪ}}
* 亞美尼亞語:{{t+|hy|Ալժիր}}
* 阿斯圖里亞斯語:{{t+|ast|Arxel}}
* 阿塞拜疆語:{{t+|az|Əlcəzair}}
* 巴什基爾語:{{t|ba|Алжир}}
* 白俄羅斯語:{{t|be|Алжы́р|m}}、{{t|be|Альжы́р|m}} {{qualifier|傳統正寫法}}
* 保加利亞語:{{t|bg|Алжи́р|m}}
* 緬甸語:{{t|my|[[အယ်လဂျီးယား]][[မြို့]]}}
* 加泰羅尼亞語:{{t+|ca|Alger|m}}
* 科西嘉語:{{t|co|Algeri|f}}
* 捷克語:{{t+|cs|Alžír|m}}
* 丹麥語:{{t+|da|Algier|n}}
* 荷蘭語:{{t+|nl|Algiers|n}}
* 英語:{{t+|en|Algiers}}
* 世界語:{{t+|eo|Alĝero}}
* 芬蘭語:{{t+|fi|Alger}}
* 法語:{{t+|fr|Alger|m|f}}
* 加利西亞語:{{t+|gl|Alxer}}
* 德語:{{t+|de|Algier|n}}
* 希臘語:{{t+|el|Αλγέρι|n}}
* 希伯來語:{{t|he|אַלְגִ׳יר|f|tr=aljír}}
* 印地語:{{t|hi|अल्जीयर्स|m}}
* 匈牙利語:{{t+|hu|Algír}}
* 冰島語:{{t|is|Algeirsborg}}
* 伊多語:{{t+|io|Aljer}}
* 印尼語:{{t|id|Aljir}}、{{t+|id|Aljazair}} {{qualifier|棄用}}
* 愛爾蘭語:{{t|ga|Cathair na hAilgéire|f}}
* 意大利語:{{t+|it|Algeri|f}}
* 日語:{{t+|ja|アルジェ|tr=Aruje}}
* 卡拜爾語:{{t|kab|ⴷⵣⴰⵢⴻ|tr=dzayer}}
* 哈薩克語:{{t+|kk|Алжир}}
* 高棉語:{{t+|km|អាល់ហ្សេ}}
* 朝鮮語:{{t|ko|^알제}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Cezayir}}
* 吉爾吉斯語:{{t+|ky|Алжир}}
* 拉丁語:{{t|la|Algeria|f}}
* 拉脫維亞語:{{t|lv|Alžīra}}
* 立陶宛語:{{t+|lt|Alžyras}}
* 馬其頓語:{{t+|mk|Алжир|m}}
* 馬爾他語:{{t|mt|Alġier}}
* 馬拉地語:{{t|mr|अॅल्जियर्स}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Алжир}}
* 納瓦霍語:{{t|nv|Áljiis}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Alger}}
*: 新挪威語:{{t|nn|Alger}}
* 奧克語:{{t|oc|Argièr|m}}、{{t|oc|Argèr|m}}、{{t|oc|Argèir|m}}、{{t|oc|Algièr|m}}
* 鄂圖曼土耳其語:{{t|ota|جزائر|tr=Cezâyir}}、{{t|ota|جزائر غرب|tr=Cezâyir-i Garb}}
* 普什圖語:{{t|ps|الجزيره|f|tr=alǰazirá}}
* 波斯語:{{t|fa|الجزیره|tr=aljazire}}
* 波蘭語:{{t+|pl|Algier|m}}
* 葡萄牙語:{{t+|pt|Argel|m}}
* 羅馬尼亞語:{{t+|ro|Alger}}
* 俄語:{{t+|ru|Алжи́р|m}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|А̀лжӣр|m}}
*: 拉丁字母:{{t+|sh|Àlžīr|m}}
* 西西里語:{{t|scn|Algeri|f}}
* 僧加羅語:{{t|si|ඇල්ජිරියස්}}
* 斯洛伐克語:{{t+|sk|Alžír|m}}
* 斯洛文尼亞語:{{t+|sl|Alžir|m}}
* 西班牙語:{{t+|es|Argel|m}}
* 瑞典語:{{t+|sv|Alger|n}}
* 他加祿語:{{t|tl|Arhel}}
* 塔吉克語:{{t|tg|Алҷазира}}
* 泰米爾語:{{t|ta|அல்ஜியர்ஸ்}}
* 韃靼語:{{t|tt|Әлҗәзаир}}
* 泰語:{{t|th|แอลเจียร์ส}}、{{t|th|อัลเจียร์ส}}
* 藏語:{{t|bo|ཨཱལ་ཇི་ཡར་སི}}
* 土耳其語:{{t+|tr|Cezayir}}
* 烏克蘭語:{{t+|uk|Алжи́р|m}}
* 烏爾都語:{{t|ur|الجزائر|m|tr=aljazā'ir}}
* 維吾爾語:{{t|ug|ئالجىر}}
* 烏茲別克語:{{t+|uz|Jazoir}}
* 越南語:{{t|vi|An-giê}}
* 意第緒語:{{t|yi|אַלזשיר|n}}
{{trans-bottom}}
md0qsv97ipv77tqvnrwjzuaeufy2cnq
9759433
9759430
2026-05-14T15:51:40Z
TongcyDai
53191
9759433
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=阿尔及尔|gloss=-}}
{{zh-wp}}
===發音===
{{zh-pron
|m=Ā'ěrjí'ěr
|cat=pn
}}
===专有名词===
{{head|zh|专有名词}}
# {{sid|zh|Q3561}}{{place|zh|caplc|c/阿爾及利亞|r/北非}}
# {{sid|zh|Q141026}}{{place|en|province|c/阿爾及利亞}}
====翻譯====
{{trans-top|阿尔及利亚首都}}
* 南非語:{{t|af|Algiers}}
* 阿爾巴尼亞語:{{t|sq|Algjer|m}}
* 阿姆哈拉語:{{t|am|አልጀርስ}}
* 安地列斯克里奧爾語:{{t|gcf|Aljé}}
* 阿拉伯語:{{t+|ar|الْجَزَائِر|f-p}}
*: 阿爾及利亞阿拉伯語:{{t|arq|الدزاير|tr=ed-dzāyir}}
*: 埃及阿拉伯語:{{t|arz|الجزاير|tr=el-gazāyer}}
*: 摩洛哥阿拉伯語:{{t|ary|الجزائر|tr=el-jazāʔir}}、{{t|ary|الجزاير|tr=el-jazāyir}}
* 亞拉姆語:
*: 亞述新亞拉姆語:{{t|aii|ܓܙܐܝܪ}}
* 亞美尼亞語:{{t+|hy|Ալժիր}}
* 阿斯圖里亞斯語:{{t+|ast|Arxel}}
* 阿塞拜疆語:{{t+|az|Əlcəzair}}
* 巴什基爾語:{{t|ba|Алжир}}
* 白俄羅斯語:{{t|be|Алжы́р|m}}、{{t|be|Альжы́р|m}} {{qualifier|傳統正寫法}}
* 保加利亞語:{{t|bg|Алжи́р|m}}
* 緬甸語:{{t|my|[[အယ်လဂျီးယား]][[မြို့]]}}
* 加泰羅尼亞語:{{t+|ca|Alger|m}}
* 科西嘉語:{{t|co|Algeri|f}}
* 捷克語:{{t+|cs|Alžír|m}}
* 丹麥語:{{t+|da|Algier|n}}
* 荷蘭語:{{t+|nl|Algiers|n}}
* 英語:{{t+|en|Algiers}}
* 世界語:{{t+|eo|Alĝero}}
* 芬蘭語:{{t+|fi|Alger}}
* 法語:{{t+|fr|Alger|m|f}}
* 加利西亞語:{{t+|gl|Alxer}}
* 德語:{{t+|de|Algier|n}}
* 希臘語:{{t+|el|Αλγέρι|n}}
* 希伯來語:{{t|he|אַלְגִ׳יר|f|tr=aljír}}
* 印地語:{{t|hi|अल्जीयर्स|m}}
* 匈牙利語:{{t+|hu|Algír}}
* 冰島語:{{t|is|Algeirsborg}}
* 伊多語:{{t+|io|Aljer}}
* 印尼語:{{t|id|Aljir}}、{{t+|id|Aljazair}} {{qualifier|棄用}}
* 愛爾蘭語:{{t|ga|Cathair na hAilgéire|f}}
* 意大利語:{{t+|it|Algeri|f}}
* 日語:{{t+|ja|アルジェ|tr=Aruje}}
* 卡拜爾語:{{t|kab|ⴷⵣⴰⵢⴻ|tr=dzayer}}
* 哈薩克語:{{t+|kk|Алжир}}
* 高棉語:{{t+|km|អាល់ហ្សេ}}
* 朝鮮語:{{t|ko|^알제}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Cezayir}}
* 吉爾吉斯語:{{t+|ky|Алжир}}
* 拉丁語:{{t|la|Algeria|f}}
* 拉脫維亞語:{{t|lv|Alžīra}}
* 立陶宛語:{{t+|lt|Alžyras}}
* 馬其頓語:{{t+|mk|Алжир|m}}
* 馬爾他語:{{t|mt|Alġier}}
* 馬拉地語:{{t|mr|अॅल्जियर्स}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Алжир}}
* 納瓦霍語:{{t|nv|Áljiis}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Alger}}
*: 新挪威語:{{t|nn|Alger}}
* 奧克語:{{t|oc|Argièr|m}}、{{t|oc|Argèr|m}}、{{t|oc|Argèir|m}}、{{t|oc|Algièr|m}}
* 鄂圖曼土耳其語:{{t|ota|جزائر|tr=Cezâyir}}、{{t|ota|جزائر غرب|tr=Cezâyir-i Garb}}
* 普什圖語:{{t|ps|الجزيره|f|tr=alǰazirá}}
* 波斯語:{{t|fa|الجزیره|tr=aljazire}}
* 波蘭語:{{t+|pl|Algier|m}}
* 葡萄牙語:{{t+|pt|Argel|m}}
* 羅馬尼亞語:{{t+|ro|Alger}}
* 俄語:{{t+|ru|Алжи́р|m}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|А̀лжӣр|m}}
*: 拉丁字母:{{t+|sh|Àlžīr|m}}
* 西西里語:{{t|scn|Algeri|f}}
* 僧加羅語:{{t|si|ඇල්ජිරියස්}}
* 斯洛伐克語:{{t+|sk|Alžír|m}}
* 斯洛文尼亞語:{{t+|sl|Alžir|m}}
* 西班牙語:{{t+|es|Argel|m}}
* 瑞典語:{{t+|sv|Alger|n}}
* 他加祿語:{{t|tl|Arhel}}
* 塔吉克語:{{t|tg|Алҷазира}}
* 泰米爾語:{{t|ta|அல்ஜியர்ஸ்}}
* 韃靼語:{{t|tt|Әлҗәзаир}}
* 泰語:{{t|th|แอลเจียร์ส}}、{{t|th|อัลเจียร์ส}}
* 藏語:{{t|bo|ཨཱལ་ཇི་ཡར་སི}}
* 土耳其語:{{t+|tr|Cezayir}}
* 烏克蘭語:{{t+|uk|Алжи́р|m}}
* 烏爾都語:{{t|ur|الجزائر|m|tr=aljazā'ir}}
* 維吾爾語:{{t|ug|ئالجىر}}
* 烏茲別克語:{{t+|uz|Jazoir}}
* 越南語:{{t|vi|An-giê}}
* 意第緒語:{{t|yi|אַלזשיר|n}}
{{trans-bottom}}
9q5c20uwsth5ujv7j2ed2sz7lj5tuh6
阿爾及利亞
0
573336
9759411
9728765
2026-05-14T14:35:57Z
TongcyDai
53191
9759411
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=阿尔及利亚|gloss=-}}
{{zh-wp}}
[[File:Flag of Algeria.svg|250px|thumb|阿爾及利亞國旗]]
===詞源===
源自{{bor|zh|en|Algeria}}。
===發音===
{{zh-pron
|m=Ā'ěrjílì亞
|c=aa3 ji5 kap6 lei6 aa3
|mn=xm,qz,tw:A-ní-ki̍p-lī-a/zz:A-jíⁿ-ki̍p-lī-a
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q262}}{{place|zh|國家|r/北非|[[地中海]]南岸|caplc=阿爾及爾|official=阿爾及利亞人民民主共和國}}。
====翻譯====
{{trans-top|id=Q262|國家}}
* 阿布哈兹语:{{t|ab|Алжир}}
* 亚齐语:{{t|ace|Aljazair}}
* 西切爾克斯語:{{t|ady|Алжир}}
* 南非语:{{t|af|Algerië}}
* 阿尔巴尼亚语:{{t+|sq|Algjeri|f}} {{qualifier|不定}}、{{t+|sq|Algjeria|f}}
* 阿姆哈拉语:{{t|am|አልጄሪያ}}
* 阿拉伯语:{{t+|ar|الْجَزَائِر|f-p}}
*: 阿爾及利亞阿拉伯语:{{t|arq|الدزَاير|tr=al-dzayir}}
*: 埃及阿拉伯语:{{t|arz|الجزاير|f|tr=el-gazayer}}
*: 摩洛哥阿拉伯语:{{t|ary|الجزاير|tr=el-jazāyir}}
* 阿拉贡语:{{t|an|Alcheria}}
* 亚美尼亚语:{{t+|hy|Ալժիր}}
* 阿萨姆语:{{t|as|আলজেৰিয়া|tr=alzeria}}
* 亚述新亚拉姆语:{{t|aii|ܓܵܙܲܥܝܼܪ|tr=gazāʾir}}
* 阿斯图里亚斯语:{{t+|ast|Arxelia|f}}
* 阿塞拜疆语:{{t+|az|Əlcəzair}}
* 巴什基尔语:{{t|ba|Алжир}}
* 巴斯克语:{{t|eu|Aljeria}}
* 白俄罗斯语:{{t|be|Алжы́р|m}}、{{t|be|Альжы́р|m}} {{qualifier|傳統正字法}}
* 孟加拉语:{{t+|bn|আলজেরিয়া}}
* 布列塔尼语:{{t+|br|Aljeria}}
* 保加利亚语:{{t|bg|Алжи́р|m}}
* 缅甸语:{{t|my|အယ်လ်ဂျီးရီးယား}}
* 加泰罗尼亚语:{{t+|ca|Algèria|f}}
* 中阿特拉斯柏柏尔语:{{t|tzm|ⵍⵣⵣⴰⵢⴻⵔ}}、{{t|tzm|ⴷⵣⴰⵢⴻⵔ}}
* 切罗基语:{{t|chr|ᎠᎵᏥᎵᏯ}}
* 科普特语:{{t|cop|ⲛⲓⲛⲏⲥⲟⲥ}}
* 康沃尔语:{{t|kw|Aljeri}}
* 科西嘉语:{{t|co|Algeria|f}}、{{t|co|Alghjeria|f}}
* 克里米亚鞑靼语:{{t|crh|Cezair}}
* 捷克语:{{t+|cs|Alžírsko|n}}
* 丹麦语:{{t+|da|Algeriet|n}}
* 迪维希语:{{t|dv|ޖަޒާއިރު}}
* 荷兰语:{{t+|nl|Algerije|n}}
* 英語:{{t+|en|Algeria}}
* 世界语:{{t+|eo|Alĝerio}}
* 爱沙尼亚语:{{t+|et|Alžeeria}}
* 法罗语:{{t|fo|Algeria|n}}
* 芬兰语:{{t+|fi|Algeria}}
* 法语:{{t+|fr|Algérie|f}}
* 加利西亚语:{{t+|gl|Alxeria|f}}
* 格鲁吉亚语:{{t+|ka|ალჟირი}}
* 德语:{{t+|de|Algerien|n}}
* 希腊语:{{t+|el|Αλγερία|f}}
* 海地克里奥尔语:{{t+|ht|Aljeri}}
* 豪萨语:{{t|ha|Aljeriya}}
* 夏威夷语:{{t|haw|ʻAlekelia}}
* 希伯来语:{{t|he|אַלְגִ׳ירְיָה|f|tr=aljírya}}
* 印地语:{{t+|hi|अल्जीरिया|m}}
* 匈牙利语:{{t+|hu|Algéria}}
* 冰岛语:{{t+|is|Alsír|n}}
* 印尼语:{{t+|id|Aljazair}}
* 因特语:{{t|ia|Algeria}}
* 爱尔兰语:{{t|ga|Ailgéir|f|alt=An Ailgéir}}
* 意大利语:{{t+|it|Algeria|f}}
* 日语:{{t+|ja|アルジェリア|tr=Arujeria}}
* 東切爾克斯語:{{t|kbd|Алджазаир}}
* 卡拜尔语:{{t|kab|Leddzayer}}
* 卡倫金語:{{t|kln|Aljeria}}
* 卡姆巴語:{{t|kam|Aljeria}}
* 卡纳达语:{{t|kn|ಅಲ್ಜೀರಿಯ}}
* 哈萨克语:{{t|kk|Алжир}}、{{t|kk|Жезаир}}
* 高棉语:{{t|km|អាល់ហ្សេរី}}
* 基库尤语:{{t|ki|Aljeria}}
* 朝鲜语:{{t+|ko|^알제리}}
* 库尔德语:
*: 中库尔德语:{{t|ckb|جەزایر}}
*: 北库尔德语:{{t+|kmr|Cezayir}}
* 吉尔吉斯语:{{t+|ky|Алжир}}
* 拉蒂诺语:{{t|lad|Arjelia}}
* 老挝语:{{t|lo|ອານເຍຣີ}}
* 拉丁语:{{t|la|Algerium}}
* 拉脱维亚语:{{t|lv|Alžīrija|f}}
* 立陶宛语:{{t+|lt|Alžyras|m}}
* 卢希亚语:{{t|luy|Aljeria}}
* 盧歐語:{{t|luo|Aljeria}}
* 卢森堡语:{{t|lb|Algerien}}
* 马其顿语:{{t+|mk|Алжир|m}}
* 马拉加斯语:{{t+|mg|Alzeria}}
* 马来语:{{t+|ms|Algeria}}
* 马拉雅拉姆语:{{t+|ml|അൾജീരിയ}}
* 马耳他语:{{t|mt|Alġerija|f|alt=l-Alġerija}}
* 毛利语:{{t|mi|Aratiria}}
* 梅魯語:{{t|mer|Aljeria}}
* 蒙古语:
*: 西里尔字母:{{t|mn|Алжир}}
* 瑙鲁语:{{t|na|Algeria}}
* 纳瓦霍语:{{t|nv|Aljííya}}
* 诺曼语:{{t|nrf|Algérie|f}}
* 挪威语:
*: 书面挪威语:{{t+|nb|Algerie}}
*: 新挪威语:{{t+|nn|Algerie}}
* 奥克语:{{t+|oc|Argeria|f}}
* 普什图语:{{t+|ps|الجزاير|m|tr=alǰazāyᶕr}}
* 波斯语:{{t+|fa|الجزایر|tr=aljazâyer}}
* 波兰语:{{t+|pl|Algieria|f}}
* 葡萄牙语:{{t+|pt|Argélia|f}}
* 罗马尼亚语:{{t+|ro|Algeria|f}}
* 罗曼什语:{{t|rm|Algeria}}
* 俄语:{{t+|ru|Алжи́р|m}}
* 低地苏格兰语:{{t|sco|Algerie}}
* 苏格兰盖尔语:{{t|gd|Algeria}}
* 塞尔维亚-克罗地亚语:
*: 西里尔字母:{{t|sh|А̀лжӣр|m}}
*: 罗马字母:{{t+|sh|Àlžīr|m}}
* 掸语:{{t|shn|မိူင်းဢႄးၵျီးရီးယႃး}}
* 西西里语:{{t|scn|Algirìa|f}}
* 僧伽罗语:{{t|si|ඇල්ජීරියාව}}
* 斯洛伐克语:{{t+|sk|Alžírsko|n}}
* 斯洛文尼亚语:{{t+|sl|Alžírija|f}}
* 西班牙语:{{t+|es|Argelia|f}}
* 斯瓦希里语:{{t+|sw|Algeria}}、{{t+|sw|Aljeria}}
* 瑞典语:{{t+|sv|Algeriet|n}}
* 他加禄语:{{t|tl|Arhelya}}
* 塔吉克语:{{t+|tg|Алҷазоир}}
* 泰米尔语:{{t|ta|அல்சீரியா}}
* 鞑靼语:{{t|tt|Әлҗәзаир}}、{{t|tt|Алжир}}
* 泰语:{{t+|th|แอลจีเรีย}}
* 藏语:{{t|bo|ཨཱལ་ཇི་རི་ཡ}}
* 提格里尼亚语:{{t|ti|ኣልጀርያ}}
* 土耳其语:{{t+|tr|Cezayir}}
* 土库曼语:{{t|tk|Alžir}}
* 乌克兰语:{{t+|uk|Алжи́р|m}}
* 乌尔都语:{{t|ur|الجزائر|m|tr=aljazā'ir}}、{{t|ur|الجیریا|m|tr=aljīriyā}}
* 维吾尔语:{{t+|ug|ئالجىرىيە}}
* 乌兹别克语:{{t+|uz|Jazoir}}
* 越南语:{{t|vi|An-giê-ri}}
* 佛罗语:{{t|vro|Alžeeriä}}
* 威尔士语:{{t+|cy|Algeria}}
* 西弗里斯兰语:{{t+|fy|Algerije}}
* 意第绪语:{{t|yi|אַלזשיר}}、{{t|yi|אַלגעריע}}
* 约鲁巴语:{{t|yo|Àlùgèríánì}}
{{trans-bottom}}
{{zh-cat|國家}}
0otjq25j43x8zl6u0tsr9qxtr4huouw
阿非利加
0
573348
9759534
7811395
2026-05-14T22:07:19Z
TongcyDai
53191
9759534
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
===詞源===
{{bor+|zh|en|Africa}}。
===發音===
{{zh-pron
|m=Āfēilìjiā
|c=aa3 fei1 lei6 gaa1
|md=Ā-hĭ-lé-gă
|mn=A-hui-lī-ka
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{lb|zh|棄用}} [[非洲]]
# {{sid|zh|Q181238}}{{lb|zh|historical}} {{place|zh|<<emp/羅馬帝國>>的一個<<行省>>,包括現在的<<c:also/突尼斯>>、<<c/阿爾及利亞>>東北部和<<c/利比亞>>沿海部分地區;從公元前146年(最初屬於羅馬共和國)到公元698年存在,但公元439年至534年被[[汪達爾人]]佔領|tcl=|<<emp/羅馬帝國>>的一個<<行省>>,包括現在的<<c:also/突尼斯>>以及<<c/阿爾及利亞>>、<<c/利比亞>>部分沿海地區}}
====近義詞====
* {{qualifier|棄用}} {{zh-l|亞非利加}}
====派生詞彙====
{{col3|zh|非洲}}
{{zh-cat|非洲|大洲}}
3h5pra9clb1z0vv4jmc9e075x5p9fi6
9759535
9759534
2026-05-14T22:07:40Z
TongcyDai
53191
9759535
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
===詞源===
{{bor+|zh|en|Africa}}。
===發音===
{{zh-pron
|m=Āfēilìjiā
|c=aa3 fei1 lei6 gaa1
|md=Ā-hĭ-lé-gă
|mn=A-hui-lī-ka
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{lb|zh|棄用}} [[非洲]]
# {{sid|zh|Q181238}}{{lb|zh|historical}} {{place|zh|<<emp/羅馬帝國>>的一個<<行省>>,包括現在的<<c:also/突尼斯>>、<<c/阿爾及利亞>>東北部和<<c/利比亞>>沿海部分地區;從公元前146年(最初屬於羅馬共和國)到公元698年存在,但公元439年至534年被[[汪達爾人]]佔領|tcl=<<emp/羅馬帝國>>的一個<<行省>>,包括現在的<<c:also/突尼斯>>以及<<c/阿爾及利亞>>、<<c/利比亞>>部分沿海地區}}
====近義詞====
* {{qualifier|棄用}} {{zh-l|亞非利加}}
====派生詞彙====
{{col3|zh|非洲}}
{{zh-cat|非洲|大洲}}
4ojsxg6ovt63czwsifudizxm1nphf3u
包莖
0
577752
9760162
9142265
2026-05-15T07:20:52Z
~2026-29195-68
133382
/* */
9760162
wikitext
text/x-wiki
包皮
==漢語==
{{zh-forms|s=包茎|alt=包徑}}
{{zh-wp}}
===發音===
{{zh-pron
|m=bāojīng,bāojìng,2nb=非標準或方言,2er=y
|c=baau1 ging3
|mn=pau-keng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|醫學}} 不能將人類[[陰莖]][[包皮]]拉到[[龜頭]]後面的[[病症]]
====翻譯====
{{trans-top|不能將人類陰莖包皮拉到龜頭後面的病症}}
* 加泰罗尼亚语:{{t|ca|fimosi|m}}
* 捷克语:{{t|cs|fimóza|f}}
* 荷兰语:{{t|nl|voorhuidsvernauwing|f}}
* 英語:{{t+|en|phimosis}}
* 世界语:{{t|eo|fimozo}}
* 法罗语:{{t|fo|likkutútur|m}}
* 芬兰语:{{t+|fi|fimoosi}}
* 法语:{{t+|fr|phimosis}}
* 德语:{{t+|de|Phimose|f}}
* 希腊语:
*: 古希臘語:{{t|grc|φίμωσις|f}}
* 匈牙利语:{{t+|hu|fitymaszűkület}}
* 意大利语:{{t+|it|fimosi|f}}
* 日语:{{t+|ja|包茎|tr=ほうけい, hōkei}}
* 拉丁语:{{t|la|phimosis}}
* 波兰语:{{t+|pl|stulejka|f}}
* 俄语:{{t+|ru|фимо́з|m}}
{{trans-bottom}}
===延伸閱讀===
* {{R:nan:tdj|44969|p=587}}
{{zh-cat|男科學|醫學徵象和症狀|生殖器}}
==日語==
{{ja-kanjitab|ほう|けい|yomi=on}}
===名詞===
{{ja-noun|ほうけい}}
# {{ja-kyujitai spelling of|包茎}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=포경}}
# {{hanja form of|포경}}
r4o4fns8yxh5a093985dwsljopnw5rk
9760164
9760162
2026-05-15T07:41:40Z
Fglffer
55252
撤销[[Special:Contributions/~2026-29195-68|~2026-29195-68]]([[User talk:~2026-29195-68|讨论]])的修订版本[[Special:Diff/9760162|9760162]]
9760164
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=包茎|alt=包徑}}
{{zh-wp}}
===發音===
{{zh-pron
|m=bāojīng,bāojìng,2nb=非標準或方言,2er=y
|c=baau1 ging3
|mn=pau-keng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|醫學}} 不能將人類[[陰莖]][[包皮]]拉到[[龜頭]]後面的[[病症]]
====翻譯====
{{trans-top|不能將人類陰莖包皮拉到龜頭後面的病症}}
* 加泰罗尼亚语:{{t|ca|fimosi|m}}
* 捷克语:{{t|cs|fimóza|f}}
* 荷兰语:{{t|nl|voorhuidsvernauwing|f}}
* 英語:{{t+|en|phimosis}}
* 世界语:{{t|eo|fimozo}}
* 法罗语:{{t|fo|likkutútur|m}}
* 芬兰语:{{t+|fi|fimoosi}}
* 法语:{{t+|fr|phimosis}}
* 德语:{{t+|de|Phimose|f}}
* 希腊语:
*: 古希臘語:{{t|grc|φίμωσις|f}}
* 匈牙利语:{{t+|hu|fitymaszűkület}}
* 意大利语:{{t+|it|fimosi|f}}
* 日语:{{t+|ja|包茎|tr=ほうけい, hōkei}}
* 拉丁语:{{t|la|phimosis}}
* 波兰语:{{t+|pl|stulejka|f}}
* 俄语:{{t+|ru|фимо́з|m}}
{{trans-bottom}}
===延伸閱讀===
* {{R:nan:tdj|44969|p=587}}
{{zh-cat|男科學|醫學徵象和症狀|生殖器}}
==日語==
{{ja-kanjitab|ほう|けい|yomi=on}}
===名詞===
{{ja-noun|ほうけい}}
# {{ja-kyujitai spelling of|包茎}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=포경}}
# {{hanja form of|포경}}
1rbgdcxufqcx27ptb9v21ioqnhdhfng
本邦
0
579450
9760159
6683191
2026-05-15T06:52:38Z
Hzy980512
19278
9760159
wikitext
text/x-wiki
==日语==
{{ja-kanjitab|ほん|ほう|k2=ぽう|yomi=o,kanon}}
===发音===
{{ja-pron|ほんぽう|acc=1|acc_ref=NHK,SMK7,DJR}}
===名词===
{{ja-noun|ほんぽう|hist=ほんぱう}}
# [[我国]]
====近义词====
* {{ja-r|我が国|わ が くに}}
===参考资料===
<references/>
:* {{R:Kanjipedia Kotoba|0006509900}}
{{C|ja|日本}}
==朝鲜语==
{{ko-hanjatab}}
===名词===
{{ko-noun|hangeul=본방}}
# {{hanja form of|본방|}}
o6gircgu0ugxt7i3gnqq0zzbwgrp172
9760165
9760159
2026-05-15T07:58:33Z
Fglffer
55252
9760165
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=běnbāng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[故鄉]],[[故國]]
#* {{zh-x|昔 w:韩安国\^韓.^安國 起 自 徒 中,w:朱買臣\^朱.^買臣 出於 幽賤,並 以 才 宜,還 守 本邦。||CL|ref=《[[s:後漢書/卷60下|後漢書·蔡邕傳]]》}}
==日语==
{{ja-kanjitab|ほん|ほう|k2=ぽう|yomi=o,kanon}}
===发音===
{{ja-pron|ほんぽう|acc=1|acc_ref=NHK,SMK7,DJR}}
===名词===
{{ja-noun|ほんぽう|hist=ほんぱう}}
# [[我國]]
====近义词====
* {{ja-r|我が国|わ が くに}}
===参考资料===
<references/>
:* {{R:Kanjipedia Kotoba|0006509900}}
{{C|ja|日本}}
==朝鲜语==
{{ko-hanjatab}}
===名词===
{{ko-noun|hangeul=본방}}
# {{hanja form of|본방}}
0vi5ztezr36l0sn4s02lq6kfp93sl09
比率
0
579918
9759716
8293266
2026-05-15T02:03:50Z
Jiba1219
110530
/* 日語 */
9759716
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===讀音===
{{zh-pron
|m=bǐlǜ
|c=bei2 leot6-2
|mn=pí-lu̍t
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[比照]],[[比例]]
# [[比值]]
{{zh-cat|數學}}
==日語==
{{ja-kanjitab|ひ|りつ|yomi=on,kanon}}
===詞源===
源自{{m|ja|比|tr=hi}} + {{m|ja|率|tr=ritsu}}。
===發音===
{{ja-pron|ひりつ}}
===名詞===
{{ja-noun|ひりつ}}
# [[比值]],[[比率#漢語|比率]]
====派生詞====
{{der-top}}
* {{ja-r|合併 比率|がっぺい ひりつ}}
* {{ja-r|直間 比率|ちょっかん ひりつ}}
* {{ja-r|自己 資本 比率|じこ しほん ひりつ}}
* {{ja-r|要素 比率 理論|ようそ ひりつ りろん}}
{{der-mid}}
* {{ja-r|負債 比率|ふさい ひりつ}}
* {{ja-r|資本 比率|しほん ひりつ}}
* {{ja-r|間隔 比率|かんかく ひりつ}}
{{der-bottom}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hj|hangeul=비율}}
# {{hanja form of|비율}}
9vm0cis1b9gtx4ci3mbvxbbeqiqc6ab
9760157
9759716
2026-05-15T06:45:25Z
Fglffer
55252
9760157
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=bǐlǜ
|c=bei2 leot6-2
|mn=pí-lu̍t
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[比值]];[[比照]],[[比例]]
====同義詞====
* {{qual|泉漳話}} {{zh-l|成數}}
====派生詞====
{{CJKV||j=比%率|ひ%りつ|비율|}}
==日語==
{{ja-kanjitab|ひ|りつ|yomi=on,kanon}}
===詞源===
源自{{m|ja|比|tr=hi}} + {{m|ja|率|tr=ritsu}}。
===發音===
{{ja-pron|ひりつ}}
===名詞===
{{ja-noun|ひりつ}}
# [[比值]];[[比照]],[[比例]]
====衍生詞====
{{col2|sort=0|ja
|{{ja-r|比%率%法|ひ%りつ%ほう}}
|{{ja-r|合%併%比%率|がっ%ぺい% ひ%りつ}}
|{{ja-r|間%隔%比%率|かん%かく% ひ%りつ}}
|{{ja-r|自%己%資%本%比%率|じ%こ% し%ほん% ひ%りつ}}
|{{ja-r|資%本%比%率|し%ほん% ひ%りつ}}
|{{ja-r|直%間%比%率|ちょっ%かん% ひ%りつ}}
|{{ja-r|負%債%比%率|ふ%さい% ひ%りつ}}
|{{ja-r|要%素%比%率%理%論|よう%そ% ひ%りつ% り%ろん}}
}}
===來源===
<references/>
:* {{R:Kanjipedia Kotoba|0005793600}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hj|hangeul=비율}}
# {{hanja form of|비율}}
lavbkupcdl30osp8zvxicvrtjghyhpf
9760171
9760157
2026-05-15T08:18:35Z
Sayonzei
40728
/* 日語 */
9760171
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=bǐlǜ
|c=bei2 leot6-2
|mn=pí-lu̍t
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[比值]];[[比照]],[[比例]]
====同義詞====
* {{qual|泉漳話}} {{zh-l|成數}}
====派生詞====
{{CJKV||j=比%率|ひ%りつ|비율|}}
==日語==
{{ja-kanjitab|ひ|りつ|yomi=on,kanon}}
===詞源===
源自{{m|ja|比|tr=hi}} + {{m|ja|率|tr=ritsu}}。
===發音===
{{ja-pron|ひりつ|acc=0|acc_ref=DJR,NHK,SMK7,NKD2}}
===名詞===
{{ja-noun|ひりつ}}
# [[比值]];[[比照]],[[比例]]
====衍生詞====
{{col2|sort=0|ja
|{{ja-r|比%率%法|ひ%りつ%ほう}}
|{{ja-r|合%併%比%率|がっ%ぺい% ひ%りつ}}
|{{ja-r|間%隔%比%率|かん%かく% ひ%りつ}}
|{{ja-r|自%己%資%本%比%率|じ%こ% し%ほん% ひ%りつ}}
|{{ja-r|資%本%比%率|し%ほん% ひ%りつ}}
|{{ja-r|直%間%比%率|ちょっ%かん% ひ%りつ}}
|{{ja-r|負%債%比%率|ふ%さい% ひ%りつ}}
|{{ja-r|要%素%比%率%理%論|よう%そ% ひ%りつ% り%ろん}}
}}
===來源===
<references/>
:* {{R:Kanjipedia Kotoba|0005793600}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hj|hangeul=비율}}
# {{hanja form of|비율}}
b8zn2948cgocwgksw3igmrro800koq9
大洋洲
0
598200
9759647
7811402
2026-05-14T23:45:05Z
TongcyDai
53191
9759647
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
{{zh-wp|zh|lzh|yue|wuu|gan|hak:Thai-yòng-chû|cdo:Dâi-iòng-ciŭ|nan:Tāi-iûⁿ-chiu}}
[[File:Oceania_(orthographic_projection).svg|thumb|大洋洲的位置]]
===發音===
{{zh-pron
|m=Dàyángzhōu
|c=daai6 joeng4 zau1
|h=pfs=Thai-yòng-chû
|md=Dâi-iòng-ciŭ
|mn=Tōa-iûⁿ-chiu/Tāi-iûⁿ-chiu
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q538}}{{place|zh|[[太平洋]]中部和南部的[[島嶼]]組成的<<大陸地區>>,主要分為[[美拉尼西亞]]、[[密克羅尼西亞]]和[[波利尼西亞]]/[[玻里尼西亞]],在某些定義中還包括[[澳大利亞]]和[[馬來群島]]。|tcl=由[[澳大利亞]]、[[紐西蘭]]/[[新西蘭]]、[[美拉尼西亞]]、[[密克羅尼西亞]]和[[波利尼西亞]]/[[玻里尼西亞]]組成的<<大洲>>或<<大陸地區>>}}.
# [[地球]]七大[[洲]]之一,位於[[亞洲]]、[[南極洲]]和[[美洲]]之間,橫跨[[東半球|東]][[西半球]]
====近義詞====
* {{zh-l|海洋洲}}
* {{qualifier|罕用}} {{zh-l|奧削尼亞}}
====局部詞====
* {{zh-l|澳大拉西亞}}
* {{zh-l|美拉尼西亞}}
* {{zh-l|密克羅尼西亞}}
* {{zh-l|玻里尼西亞}}
====參見====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q538|地理區域}}
* 南非語:{{t|af|Oseanië}}
* 阿爾巴尼亞語:{{t|sq|Oqeani}}
* 阿姆哈拉語:{{t|am|ኦሺያኒያ}}
* 阿拉伯語:{{t|ar|أُوقِيَانُوسِيَا|f|tr=ʔuqiyānusiyā}}
*: 漢志阿拉伯語:{{t|acw|أوقْيانوسْيا|f|tr=ʔōgyānūsya, ʔūgyānūsya}}
* 亞美尼亞語:{{t|hy|Օվկիանիա|sc=Armn}}
* 阿薩姆語:{{t|as|ওচেনিয়া}}
* 阿塞拜疆語:{{t|az|Okeaniya}}
* 巴斯克語:{{t+|eu|Ozeania}}
* 白俄羅斯語:{{t|be|Акія́нія|f}}
* 孟加拉語:{{t+|bn|ওশেনিয়া}}
* 保加利亞語:{{t|bg|Океа́ния|f}}
* 緬甸語:{{t|my|အိုရှန်းနီးယား}}
* 加泰羅尼亞語:{{t+|ca|Oceania|f}}
* 捷克語:{{t+|cs|Oceánie|f}}
* 丹麥語:{{t+|da|Oceanien}}
* 荷蘭語:{{t+|nl|Oceanië|n}}
* 英語:{{t+|en|Oceania}}
* 世界語:{{t|eo|Oceanio}}
* 愛沙尼亞語:{{t|et|Okeaania}}
* 法羅語:{{t|fo|Osiania}}
* 斐濟印地語:{{t|hif|Oceania}}
* 芬蘭語:{{t+|fi|Oseania}}
* 法語:{{t+|fr|Océanie|f}}
* 弗留利語:{{t|fur|Oceanie|f}}
* 加利西亞語:{{t+|gl|Oceanía|f}}
* 格魯吉亞語:{{t|ka|ოკეანეთი}}
* 德語:{{t+|de|Ozeanien|n}}
* 希臘語:{{t+|el|Ωκεανία|f}}
* 希伯來語:{{t|he|אוקיאניה|f|tr=okiánia}}
* 印地語:{{t+|hi|ओशिआनिया|m}}
* 匈牙利語:{{t+|hu|Óceánia}}
* 冰島語:{{t+|is|Eyjaálfa}}
* 印尼語:{{t+|id|Oseania}}
* 愛爾蘭語:{{t|ga|Aigéine|f|alt=an Aigéine}}
* 意大利語:{{t+|it|Oceania|f}}
* 日語:{{t+|ja|オセアニア|tr=Oseania}}、{{t+|ja|大洋州|tr=たいようしゅう, Taiyōshū}}
* 哈薩克語:{{t+|kk|Океания}}
* 高棉語:{{t|km|អូសេអានី}}
* 朝鮮語:{{t+|ko|^오세아니아}}、{{t|ko|대양주(大洋洲)}}、{{t|ko|^오세안주(오세안洲)}} {{qualifier|朝鮮}}
* 吉爾吉斯語:{{t|ky|Океания}}
* 拉蒂諾語:{{t|lad|Oseania}}
* 老撾語:{{t+|lo|ໂອເຊອານີ}}
* 拉丁語:{{t|la|Oceania|f}}
* 拉脫維亞語:{{t|lv|Okeānija|f}}
* 立陶宛語:{{t+|lt|Okeanija|f}}
* 馬其頓語:{{t|mk|Океанија|f}}
* 馬來語:{{t|ms|Oseania}}
* 馬爾他語:{{t|mt|[[il|L-]][[Oċeanja]]|f}}
* 馬拉地語:{{t|mr|ओशनिया}}
* 諾曼語:{{t|nrf|Ochéannie|f}}
* 北薩米語:{{t|se|Oseania}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Oseania}}
*: 新挪威語:{{t|nn|Oseania}}
* 奧克語:{{t+|oc|Oceania|f}}
* 奧利亞語:{{t|or|ଓସେନିଆ}}
* 普什圖語:{{t|ps|اوقيانوسيه|f|tr=oqeyānosyá}}
* 波斯語:{{t+|fa|اقیانوسیه|tr=oqyânusiye}}
* 波蘭語:{{t+|pl|Oceania|f}}
* 葡萄牙語:{{t+|pt|Oceania|f}}、{{t+|pt|Oceânia|f}}
* 羅馬尼亞語:{{t|ro|Oceania|f}}
* 俄語:{{t+|ru|Океа́ния|f}}
* 盧森尼亞語:{{t|rue|Океа́нія|f}}
* 低地蘇格蘭語:{{t|sco|Oceanie}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Океанија|f}}、{{t|sh|Оцеанија|f}} {{qualifier|克羅地亞/克羅埃西亞}}
*: 拉丁字母:{{t|sh|Okeanija|f}}、{{t+|sh|Oceanija|f}} {{qualifier|克羅地亞/克羅埃西亞}}
* 西里西亞語:{{t|szl|Uoceańijo|f}}
* 僧加羅語:{{t|si|ඕසියානාව}}
* 斯洛伐克語:{{t|sk|Oceánia|f}}
* 斯洛文尼亞語:{{t|sl|Oceanija|f}}
* 索布語:
*: 下索布語:{{t|dsb|Oceanija|f}}
* 西班牙語:{{t+|es|Oceanía|f}}
* 瑞典語:{{t+|sv|Oceanien}}
* 他加祿語:{{t|tl|Karagatanan}}
* 塔吉克語:{{t+|tg|Уқёнусия}}
* 泰米爾語:{{t|ta|ஓசியானியா}}
* 泰盧固語:{{t+|te|ఓషియానియా}}
* 德頓語:{{t|tet|Oseánia}}
* 泰語:{{t|th|โอเชียเนีย}}
* 藏語:{{t|bo|རྒྱ་མཚོ་ཆེན་པོའི་གླིང་ཆེན}}
* 土耳其語:{{t+|tr|Okyanusya}}
* 土庫曼語:{{t|tk|Okeaniýa}}
* 烏克蘭語:{{t|uk|Океа́нія|f}}
* 維吾爾語:{{t|ug|ئوكيانىيە}}
* 烏茲別克語:{{t+|uz|Okeaniya}}
* 維普斯語:{{t|vep|Valdmerimad}}
* 越南語:{{t|vi|Châu Đại Dương}} ({{t|vi|洲大洋}}), {{t|vi|Châu Úc}} ({{t|vi|洲澳}}), {{t|vi|Úc Châu}} ({{t|vi|澳洲}})
* 佛羅語:{{t|vro|Okõaania}}
* 沃洛夫語:{{t|wo|Oseyaani}}
* 意第緒語:{{t|yi|אָקעאַניע}}
{{trans-bottom}}
{{zh-cat|大洲|大洋洲}}
38ig2b64rc88zjqncmedb4b82y4iu97
9759648
9759647
2026-05-14T23:45:32Z
TongcyDai
53191
9759648
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
{{zh-wp|zh|lzh|yue|wuu|gan|hak:Thai-yòng-chû|cdo:Dâi-iòng-ciŭ|nan:Tāi-iûⁿ-chiu}}
[[File:Oceania_(orthographic_projection).svg|thumb|大洋洲的位置]]
===發音===
{{zh-pron
|m=Dàyángzhōu
|c=daai6 joeng4 zau1
|h=pfs=Thai-yòng-chû
|md=Dâi-iòng-ciŭ
|mn=Tōa-iûⁿ-chiu/Tāi-iûⁿ-chiu
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q538}}{{place|zh|[[太平洋]]中部和南部的[[島嶼]]組成的<<大陸地區>>,主要分為[[美拉尼西亞]]、[[密克羅尼西亞]]和[[波利尼西亞]]/[[玻里尼西亞]],在某些定義中還包括[[澳大利亞]]和[[馬來群島]];為[[地球]]七大[[洲]]之一|tcl=由[[澳大利亞]]、[[紐西蘭]]/[[新西蘭]]、[[美拉尼西亞]]、[[密克羅尼西亞]]和[[波利尼西亞]]/[[玻里尼西亞]]組成的<<大洲>>或<<大陸地區>>}}.
# [[地球]]七大[[洲]]之一,位於[[亞洲]]、[[南極洲]]和[[美洲]]之間,橫跨[[東半球|東]][[西半球]]
====近義詞====
* {{zh-l|海洋洲}}
* {{qualifier|罕用}} {{zh-l|奧削尼亞}}
====局部詞====
* {{zh-l|澳大拉西亞}}
* {{zh-l|美拉尼西亞}}
* {{zh-l|密克羅尼西亞}}
* {{zh-l|玻里尼西亞}}
====參見====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q538|地理區域}}
* 南非語:{{t|af|Oseanië}}
* 阿爾巴尼亞語:{{t|sq|Oqeani}}
* 阿姆哈拉語:{{t|am|ኦሺያኒያ}}
* 阿拉伯語:{{t|ar|أُوقِيَانُوسِيَا|f|tr=ʔuqiyānusiyā}}
*: 漢志阿拉伯語:{{t|acw|أوقْيانوسْيا|f|tr=ʔōgyānūsya, ʔūgyānūsya}}
* 亞美尼亞語:{{t|hy|Օվկիանիա|sc=Armn}}
* 阿薩姆語:{{t|as|ওচেনিয়া}}
* 阿塞拜疆語:{{t|az|Okeaniya}}
* 巴斯克語:{{t+|eu|Ozeania}}
* 白俄羅斯語:{{t|be|Акія́нія|f}}
* 孟加拉語:{{t+|bn|ওশেনিয়া}}
* 保加利亞語:{{t|bg|Океа́ния|f}}
* 緬甸語:{{t|my|အိုရှန်းနီးယား}}
* 加泰羅尼亞語:{{t+|ca|Oceania|f}}
* 捷克語:{{t+|cs|Oceánie|f}}
* 丹麥語:{{t+|da|Oceanien}}
* 荷蘭語:{{t+|nl|Oceanië|n}}
* 英語:{{t+|en|Oceania}}
* 世界語:{{t|eo|Oceanio}}
* 愛沙尼亞語:{{t|et|Okeaania}}
* 法羅語:{{t|fo|Osiania}}
* 斐濟印地語:{{t|hif|Oceania}}
* 芬蘭語:{{t+|fi|Oseania}}
* 法語:{{t+|fr|Océanie|f}}
* 弗留利語:{{t|fur|Oceanie|f}}
* 加利西亞語:{{t+|gl|Oceanía|f}}
* 格魯吉亞語:{{t|ka|ოკეანეთი}}
* 德語:{{t+|de|Ozeanien|n}}
* 希臘語:{{t+|el|Ωκεανία|f}}
* 希伯來語:{{t|he|אוקיאניה|f|tr=okiánia}}
* 印地語:{{t+|hi|ओशिआनिया|m}}
* 匈牙利語:{{t+|hu|Óceánia}}
* 冰島語:{{t+|is|Eyjaálfa}}
* 印尼語:{{t+|id|Oseania}}
* 愛爾蘭語:{{t|ga|Aigéine|f|alt=an Aigéine}}
* 意大利語:{{t+|it|Oceania|f}}
* 日語:{{t+|ja|オセアニア|tr=Oseania}}、{{t+|ja|大洋州|tr=たいようしゅう, Taiyōshū}}
* 哈薩克語:{{t+|kk|Океания}}
* 高棉語:{{t|km|អូសេអានី}}
* 朝鮮語:{{t+|ko|^오세아니아}}、{{t|ko|대양주(大洋洲)}}、{{t|ko|^오세안주(오세안洲)}} {{qualifier|朝鮮}}
* 吉爾吉斯語:{{t|ky|Океания}}
* 拉蒂諾語:{{t|lad|Oseania}}
* 老撾語:{{t+|lo|ໂອເຊອານີ}}
* 拉丁語:{{t|la|Oceania|f}}
* 拉脫維亞語:{{t|lv|Okeānija|f}}
* 立陶宛語:{{t+|lt|Okeanija|f}}
* 馬其頓語:{{t|mk|Океанија|f}}
* 馬來語:{{t|ms|Oseania}}
* 馬爾他語:{{t|mt|[[il|L-]][[Oċeanja]]|f}}
* 馬拉地語:{{t|mr|ओशनिया}}
* 諾曼語:{{t|nrf|Ochéannie|f}}
* 北薩米語:{{t|se|Oseania}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Oseania}}
*: 新挪威語:{{t|nn|Oseania}}
* 奧克語:{{t+|oc|Oceania|f}}
* 奧利亞語:{{t|or|ଓସେନିଆ}}
* 普什圖語:{{t|ps|اوقيانوسيه|f|tr=oqeyānosyá}}
* 波斯語:{{t+|fa|اقیانوسیه|tr=oqyânusiye}}
* 波蘭語:{{t+|pl|Oceania|f}}
* 葡萄牙語:{{t+|pt|Oceania|f}}、{{t+|pt|Oceânia|f}}
* 羅馬尼亞語:{{t|ro|Oceania|f}}
* 俄語:{{t+|ru|Океа́ния|f}}
* 盧森尼亞語:{{t|rue|Океа́нія|f}}
* 低地蘇格蘭語:{{t|sco|Oceanie}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Океанија|f}}、{{t|sh|Оцеанија|f}} {{qualifier|克羅地亞/克羅埃西亞}}
*: 拉丁字母:{{t|sh|Okeanija|f}}、{{t+|sh|Oceanija|f}} {{qualifier|克羅地亞/克羅埃西亞}}
* 西里西亞語:{{t|szl|Uoceańijo|f}}
* 僧加羅語:{{t|si|ඕසියානාව}}
* 斯洛伐克語:{{t|sk|Oceánia|f}}
* 斯洛文尼亞語:{{t|sl|Oceanija|f}}
* 索布語:
*: 下索布語:{{t|dsb|Oceanija|f}}
* 西班牙語:{{t+|es|Oceanía|f}}
* 瑞典語:{{t+|sv|Oceanien}}
* 他加祿語:{{t|tl|Karagatanan}}
* 塔吉克語:{{t+|tg|Уқёнусия}}
* 泰米爾語:{{t|ta|ஓசியானியா}}
* 泰盧固語:{{t+|te|ఓషియానియా}}
* 德頓語:{{t|tet|Oseánia}}
* 泰語:{{t|th|โอเชียเนีย}}
* 藏語:{{t|bo|རྒྱ་མཚོ་ཆེན་པོའི་གླིང་ཆེན}}
* 土耳其語:{{t+|tr|Okyanusya}}
* 土庫曼語:{{t|tk|Okeaniýa}}
* 烏克蘭語:{{t|uk|Океа́нія|f}}
* 維吾爾語:{{t|ug|ئوكيانىيە}}
* 烏茲別克語:{{t+|uz|Okeaniya}}
* 維普斯語:{{t|vep|Valdmerimad}}
* 越南語:{{t|vi|Châu Đại Dương}} ({{t|vi|洲大洋}}), {{t|vi|Châu Úc}} ({{t|vi|洲澳}}), {{t|vi|Úc Châu}} ({{t|vi|澳洲}})
* 佛羅語:{{t|vro|Okõaania}}
* 沃洛夫語:{{t|wo|Oseyaani}}
* 意第緒語:{{t|yi|אָקעאַניע}}
{{trans-bottom}}
{{zh-cat|大洲|大洋洲}}
pldv98fgwif0pue9jcejer0t98vumss
鼓舞
0
610360
9759723
8510066
2026-05-15T02:49:27Z
Jiba1219
110530
/* 日語 */
9759723
wikitext
text/x-wiki
==漢語==
{{zh-forms|ss=壴午}}
===發音===
{{zh-pron
|m=gǔwǔ
|c=gu2 mou5
|h=pfs=kú-vú
|mn=kó͘-bú
|mn-t=gou2 bhu2
|mc=y
|oc=y
|ma=Zh-guwu.ogg
|cat=v,a
}}
===動詞===
{{zh-verb}}
# [[鼓勵]]
# {{lb|zh|Classical|literally}} [[打鼓]]和[[跳舞]]
====同義詞====
{{syn-saurus|zh|鼓勵}}
===形容詞===
{{head|zh|形容詞}}
# [[激勵]][[人心]]
====同義詞====
* {{zh-l|振奮}}
===衍生詞===
{{col3|zh|鼓舞人心|歡欣鼓舞}}
===派生詞===
{{CJKV||こぶ|고무|cổ vũ}}
{{zh-cat|Elementary}}
==日語==
{{ja-kanjitab|こ|ぶ|yomi=o,kanon}}
===發音===
{{ja-pron|こぶ|acc=1|acc_ref=DJR}}
===名詞===
{{ja-noun|こぶ}}
# [[打鼓]][[跳舞]]
# [[鼓勵]]
===動詞===
{{ja-verb-suru|tr=trans|こぶ}}
# [[鼓勵]]
====活用====
{{ja-suru|こぶ}}
===來源===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=고무}}
# {{hanja form of|고무|}}
==越南語==
{{vi-hantutab}}
===動詞===
{{vi-verb|sc=Hani}}
# {{han tu form of|cổ vũ|}}
ia1fbj1h4o546cgc4v75m81v8719zw2
故国
0
610620
9760166
6684266
2026-05-15T08:05:59Z
Fglffer
55252
9760166
wikitext
text/x-wiki
==漢語==
{{zh-see|故國}}
==日語==
{{ja-kanjitab|こ|こく|yomi=o}}
===發音===
{{ja-pron|ここく|acc=1|acc_ref=DJR}}
===名詞===
{{ja-noun|ここく}}
# [[祖國]]
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0002047100}}
4kioicihzvq1coo589gjculkjdmgu75
9760172
9760166
2026-05-15T08:18:56Z
Sayonzei
40728
/* 日語 */
9760172
wikitext
text/x-wiki
==漢語==
{{zh-see|故國}}
==日語==
{{ja-kanjitab|こ|こく|yomi=o}}
===發音===
{{ja-pron|ここく|acc=1|acc_ref=DJR}}
===名詞===
{{ja-noun|ここく}}
# [[祖國]]
# [[故鄉]]
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0002047100}}
6c34whzd5fuf7j7exurxnuot44tow11
飞散
0
621033
9760147
6814911
2026-05-15T06:12:29Z
Fglffer
55252
重定向页面至[[飛散]]
9760147
wikitext
text/x-wiki
#REDIRECT [[飛散]]
gfzudrorj87hprd5p9mo965ox6o7ddl
荒誕
0
632185
9760156
8780266
2026-05-15T06:44:30Z
Apisite
85347
9760156
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=荒诞}}
===讀音===
{{zh-pron
|m=huāngdàn
|c=fong1 daan3
|mn=ml:hong-tān
|cat=a
}}
===釋義===
# {{rfdef|zh}}
{{syn-saurus|zh|荒謬}}
====派生詞====
{{CJKV||こうたん|황탄}}
===翻譯===
{{翻译-顶}}
* 俄語:[[невероятный]]; [[вымышленный]]; [[абсурдный]]
{{翻译-底}}
lunb10g1qft4l9gaa4zliv9shtkd75b
9760176
9760156
2026-05-15T08:26:24Z
Fglffer
55252
9760176
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=荒诞}}
===發音===
{{zh-pron
|m=huāngdàn
|c=fong1 daan3
|mn=ml:hong-tān/tw:hong-tàn
|mn-t=huang1 dang3
|cat=a
}}
===形容詞===
{{head|zh|形容詞}}
# [[誇張]][[虛假]];[[荒唐]][[虛妄]]
====同義詞====
{{syn-saurus|zh|荒謬}}
====衍生詞====
{{col3|zh|荒誕不經|荒誕無稽}}
====派生詞====
{{CJKV||こうたん|황탄}}
====參見====
* {{zh-l|放誕}}
==日語==
{{ja-kanjitab|こう|たん|yomi=kanon}}
===發音===
{{ja-pron|こうたん|acc=0|acc_ref=DJR}}
===名詞===
{{ja-noun|こうたん|hhira=くわうたん}}
# [[誇張]][[虛假]];[[荒唐]][[虛妄]]
===來源===
<references />
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=황탄}}
# {{hanja form of|황탄}}
qufekzufyqj35vgfbfhzl9aa73vvzmq
利比亞
0
661294
9759618
8288620
2026-05-14T23:05:02Z
TongcyDai
53191
9759618
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=利比亚|gloss=-}}
{{zh-wp}}
[[Image:Flag of Libya.svg|thumb|利比亚国旗]]
[[Image:LocationLibya.png|thumb|利比亚]]
===詞源===
源自{{der|zh|en|Libya}}。
===發音===
{{zh-pron
|m=Lìbǐ亞
|c=lei6 bei2 aa3
|h=pfs=Li-pí-â;gd=li4 bi3 a4
|mn=Lī-pí-a
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q1016}}{{place|zh|國家|r/北非|capital=的黎波里}}
====翻譯====
{{trans-top|id=Q1016|北非國家}}
* 南非語:{{t|af|Libië}}
* 阿坎語:{{t|ak|Libia}}
* 阿爾巴尼亞語:{{t|sq|Libi|f}}、{{t+|sq|Libia|f}} {{qualifier|definite}}
* 阿姆哈拉語:{{t|am|ሊቢያ}}
* 阿拉伯語:{{t+|ar|لِيبِيَا|f}}、{{t|ar|لُوبِيَا}} {{qualifier|古舊}}
*: 利比亞阿拉伯語:{{t|ayl|ليبيا|tr=Lībya}}
* 亞拉姆語:{{t|arc|ܠܘܒܐ}}
*: 亞述新亞拉姆語:{{t|aii|ܠܹܘܒ݂ܹܐ|tr=liuwe}}
* 亞美尼亞語:{{t+|hy|Լիբիա}}
* 阿斯圖里亞斯語:{{t+|ast|Libia|f}}
* 阿塞拜疆語:{{t+|az|Liviya}}
* 白俄羅斯語:{{t|be|Лі́вія|f}}
* 孟加拉語:{{t+|bn|লিবিয়া}}
* 布列塔尼語:{{t+|br|Libia}}
* 保加利亞語:{{t|bg|Ли́бия|f}}
* 緬甸語:{{t|my|လစ်ဗျား}}
* 加泰羅尼亞語:{{t+|ca|Líbia|f}}
* 中阿特拉斯柏柏爾語:{{t|tzm|ⵍⵉⴱⵢⴰ}}
* 車臣語:{{t|ce|Ливи}}
* 科普特語:{{t|cop|ⲗⲩⲃⲏ|f}}
* 克里米亞韃靼語:{{t|crh|Libiya}}
* 捷克語:{{t+|cs|Libye|f}}
* 丹麥語:{{t+|da|Libyen|n}}
* 迪維希語:{{t|dv|ލީބިޔާ}}
* 荷蘭語:{{t+|nl|Libië|n}}
* 英語:{{t+|en|Libya}}
* 世界語:{{t+|eo|Libio}}
* 愛沙尼亞語:{{t+|et|Liibüa}}
* 法拉法拉語:{{t|gur|Libia}}
* 法羅語:{{t|fo|Libya}}
* 芬蘭語:{{t+|fi|Libya}}
* 法語:{{t+|fr|Libye|f}}
*: 中古法語:{{t|frm|Lybie|f}}
* 加利西亞語:{{t+|gl|Libia|f}}
* 格魯吉亞語:{{t+|ka|ლიბია}}
* 德語:{{t+|de|Libyen|n}}
* 希臘語:{{t+|el|Λιβύη|f}}
*: 古希臘語:{{t|grc|Λιβύη|f}}
* 豪薩語:{{t|ha|Libya}}
* 希伯來語:{{t|he|לוּב|m|tr=luv}}
* 印地語:{{t+|hi|लीबिया|m}}
* 匈牙利語:{{t+|hu|Líbia}}
* 冰島語:{{t|is|Líbía|f}}
* 印尼語:{{t+|id|Libya}}
* 因特語:{{t|ia|Libya}}
* 愛爾蘭語:{{t|ga|Libia|f|alt=an Libia}}
* 意大利語:{{t+|it|Libia|f}}
* 日語:{{t+|ja|リビア|tr=Ribia}}
* 卡倫金語:{{t|kln|Libya}}
* 卡姆巴語:{{t|kam|Libya}}
* 卡納達語:{{t|kn|ಲಿಬಿಯಾ}}
* 哈薩克語:{{t|kk|Либия}}、{{t+|kk|Ливия}}
* 高棉語:{{t+|km|លីប៊ី}}
* 基庫尤語:{{t|ki|Libia}}
* 朝鮮語:{{t+|ko|^리비아}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Lîbya}}
* 吉爾吉斯語:{{t|ky|Ливия}}
* 老撾語:{{t|lo|ລີບີ}}、{{t|lo|ລີເບຍ}}
* 拉脫維亞語:{{t+|lv|Lībija|f}}
* 立陶宛語:{{t+|lt|Libija|f}}
* 盧歐語:{{t|luo|Libya}}
* 馬其頓語:{{t+|mk|Ли́бија|f}}
* 馬來語:{{t+|ms|Libya}}
* 馬拉雅拉姆語:{{t|ml|ലിബിയ}}
* 馬爾他語:{{t|mt|Libja|f|alt=Il-Libja}}
* 毛利語:{{t|mi|Rīpia}}
* 馬拉地語:{{t|mr|लिबिया}}
* 梅魯語:{{t|mer|Libya}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Ливи}}
* 納瓦霍語:{{t|nv|Łíbya}}
* 諾曼語:{{t|nrf|Libye|f}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Libya|n}}
* 奧克語:{{t+|oc|Libia|f}}
* 古波斯語:{{t|peo|𐎱𐎢𐎫𐎠𐎹𐎠|ts=Putāya}}
* 奧塞梯語:{{t|os|Ливи}}
* 普什圖語:{{t|ps|ليبيا|f|tr=libyā}}
* 波斯語:
*: 達里波斯語:{{t|prs|لِیبِیَا}}
*: 伊朗波斯語:{{t+|fa-ira|لیبی}}
* 波蘭語:{{t+|pl|Libia|f}}
* 葡萄牙語:{{t+|pt|Líbia|f}}
* 羅馬尼亞語:{{t+|ro|Libia|f}}
* 俄語:{{t+|ru|Ли́вия|f}}
* 薩莫吉提亞語:{{t|sgs|Lėbėjė}}、{{t|sgs|Libėjė}}
* 低地蘇格蘭語:{{t|sco|Libie}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Ли̑бија|f}}
*: 拉丁字母:{{t+|sh|Lȋbija|f}}
* 西里西亞語:{{t|szl|Libijo|f}}
* 僧加羅語:{{t|si|ලිබියාව}}
* 斯洛伐克語:{{t+|sk|Líbya|f}}
* 斯洛文尼亞語:{{t+|sl|Líbija|f}}
* 西班牙語:{{t+|es|Libia}}
* 斯瓦希里語:{{t+|sw|Libya}}
* 瑞典語:{{t+|sv|Libyen|n}}
* 他加祿語:{{t|tl|Libya}}
* 塔吉克語:{{t|tg|Либия}}
* 泰米爾語:{{t|ta|லிபியா}}
* 韃靼語:{{t|tt|Ливия}}
* 泰盧固語:{{t+|te|లిబియా}}
* 泰語:{{t+|th|ลิเบีย}}
* 提格里尼亞語:{{t|ti|ሊቢያ}}
* 土耳其語:{{t+|tr|Libya}}
* 土庫曼語:{{t|tk|Liwiýa}}
* 烏克蘭語:{{t+|uk|Лі́вія}}
* 烏爾都語:{{t|ur|لِیبِیا|m}}
* 維吾爾語:{{t|ug|لىۋىيە}}
* 烏茲別克語:{{t|uz|Liviya}}
* 越南語:{{t|vi|Li-bi}}
* 沃拉普克語:{{t+|vo|Lübän}}
* 雅庫特語:{{t|sah|Лиибийэ}}
* 意第緒語:{{t|yi|ליביע|f}}
* 約魯巴語:{{t|yo|Líbyà}}
* 祖魯語:{{t|zu|ILibiya}}
{{trans-bottom}}
b1cyemd5r4ff4c49x7v399pv360jfy5
美洲
0
676393
9759691
7620417
2026-05-15T00:33:59Z
TongcyDai
53191
9759691
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=Měizhōu
|c=mei5 zau1
|h=pfs=Mî-chû;hrs=h:muiˋ zhiuˋ
|mb=Mǐ-ciú
|md=Mī-ciŭ
|mn=Bí-chiu
|mn-t=mui2 ziu1
|w=sh:1me tseu
|x=mei3 zhou1
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q828}}{{place|zh|supercontinent|包含[[北美洲]]、[[中美洲]]和[[南美洲]]}}
#* {{quote-book|zh|author=w:zh:丁韙良<t:{{w|William Alexander Parsons Martin}}>|title=zh:西學考略|year=1882|publisher=zh:同文館|volume=zh:卷上|page=7|pageurl=https://commons.wikimedia.org/w/index.php?title=File%3AHarvard_drs_430575723_%E8%A5%BF%E5%AD%B8%E8%80%83%E7%95%A5_v.1.pdf&page=41}}
#*: {{zh-q|查 ^美洲 數 百 年 前 ^歐 人 未 至,其 地 已 有 開化 之 國,如 ^秘魯、^墨西哥 等,殆 自此 而 肇 其 端 也。||CL}}
====派生詞彙====
{{col3|zh|北美洲|拉丁美洲|美洲巨蟾蜍|美洲豹|美洲野牛|南美洲|中美洲|美洲小鴕|美洲旱獺|美洲獾}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=미주}}
# {{hanja form of|미주}}:
## {{tcl|ko|美洲|id=Q828|indent=##}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|Mĩ châu|sc=Hani}}
# {{vi-Han form of|Mĩ châu}}:
## {{tcl|vi|美洲|id=Q828|indent=##|nocat=1}}
m4z0swz16e0xflupxs8us2z47dewsq4
南極洲
0
681370
9759641
9612745
2026-05-14T23:33:34Z
TongcyDai
53191
9759641
wikitext
text/x-wiki
{{also|南极洲}}
==漢語==
{{zh-forms|s=南极洲|type=21}}
===發音===
{{zh-pron
|m=Nánjízhōu
|c=naam4 gik6 zau1
|h=pfs=Nàm-khi̍t-chû
|mn=xm,zz,tw:Lâm-ke̍k-chiu/qz:Lâm-kia̍k-chiu
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q51}}{{place|zh|位於[[南冰洋]]以南的最南端<<大洲>>,包含[[南極點]];為[[地球]]的七大[[洲]]之一}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q51|最南端的大陸}}
* 亞齊語:{{t|ace|Antartika}}
* 南非語:{{t|af|Antarktika}}
* 阿爾巴尼亞語:{{t|sq|Antarktidë|f}}
* 阿姆哈拉語:{{t|am|አንታርክቲካ}}
* 阿拉伯語:{{t+|ar|أَنْتَارْكِتِيكَا|f}}
*: 埃及阿拉伯語:{{t|arz|القطب الجنوبي|m|tr=el-quṭb el-ganūbi}}、{{t|arz|أنتارتكا|f|tr=ʔantārteka}}
* 阿拉貢語:{{t|an|Antarctida|f}}
* 亞美尼亞語:{{t+|hy|Անտարկտիդա}} {{qualifier|大陸}}、{{t+|hy|Անտարկտիկա}} {{qualifier|區域}}
* 亞述新亞拉姆語:{{t|aii|ܐܲܢܛܵܪܬܝܼܩܵܐ|f|tr=Ānṭartīqa}}
* 阿斯圖里亞斯語:{{t|ast|Antártida|f}}
* 阿塞拜疆語:{{t+|az|Antarktida}}
* 巴什基爾語:{{t|ba|Антарктида}}
* 巴斯克語:{{t+|eu|Antartika}}
* 巴伐利亞語:{{t|bar|Antarktika}}
* 白俄羅斯語:{{t|be|Антаркты́да|f}} {{qualifier|大陸}}、{{t|be|Анта́рктыка|f}} {{qualifier|區域}}
* 孟加拉語:{{t|bn|আন্টার্কটিকা}}
* 中比科爾語:{{t|bcl|Antartika}}
* 比斯拉馬語:{{t|bi|Antarktik}}
* 布列塔尼語:{{t|br|Antarktika}}
* 保加利亞語:{{t+|bg|Антаркти́да|f}} {{qualifier|大陸}}、{{t|bg|Анта́рктика|f}} {{qualifier|區域}}
* 緬甸語:{{t|my|အန္တာတိက}}
* 布里亞特語:{{t|bua|Антарктида}}
* 加泰羅尼亞語:{{t+|ca|Antàrtida|f}}
* 宿霧語:{{t|ceb|Antartika}}
* 中部法蘭克尼亞語:{{t|gmw-cfr|Süüdpool}}
* 車臣語:{{t|ce|Антарктида}}
* 切羅基語:{{t|chr|ᏧᏁᏍᏓᎸ}}
* 楚瓦什語:{{t|cv|Антарктида|alt=Антаркти́да}}
* 康沃爾語:{{t|kw|Antarktika}}
* 科西嘉語:{{t|co|Antartide|m}}
* 克里米亞韃靼語:{{t|crh|Antarktida}}
* 捷克語:{{t+|cs|Antarktida|f}}
* 丹麥語:{{t+|da|Antarktis}}
* 荷蘭語:{{t+|nl|Antarctica|n}}
* 宗喀語:{{t|dz|ཨེན་ཊཱག་ཊི་ཀ་}}
* 東馬里語:{{t|mhr|Антарктиде}}
* 英語;{{t+|en|Antarctica}}
* 世界語:{{t+|eo|Antarkto}}
* 愛沙尼亞語:{{t|et|Antarktis}}、{{t|et|Lõunamanner}} {{qualifier|比喻}}
* 埃斯特雷馬杜拉語:{{t|ext|Antáltia|f}}
* 法羅語:{{t|fo|Antarktis}}
* 芬蘭語:{{t+|fi|Etelämanner}}、{{t+|fi|Antarktis}}、{{t+|fi|Etelänapamanner}}
* 法蘭克-普羅旺斯語:{{t|frp|Antartica|f}}
* 法語:{{t+|fr|Antarctique|m}}
* 弗留利語:{{t|fur|Antartic|m}}
* 加利西亞語:{{t+|gl|Antártida}}
* 格魯吉亞語:{{t|ka|ანტარქტიდა}}
* 德語:{{t+|de|Antarktika|f}}
* 希臘語:{{t+|el|Ανταρκτική|f}}
* 格陵蘭語:{{t|kl|Qalasersuaq Kujalleq}}
* 巴拉圭瓜拉尼語:{{t|gug|Antártida}}
* 古吉拉特語:{{t|gu|ઍન્ટાર્કટિકા}}
* 海地克里奧爾語:{{t|ht|Antatik}}
* 夏威夷語:{{t|haw|‘Aneʻālika}}
* 希伯來語:{{t|he|אַנְטַרְקְטִיקָה|f|tr=antárqtíqa}}
* 印地語:{{t|hi|अंटार्कटिका}}
* 匈牙利語:{{t+|hu|Antarktisz}}、{{t+|hu|Antarktika}}
* 冰島語:{{t+|is|Suðurskautslandið|n}}、{{t|is|Suðurheimskautslandið|n}}、{{t+|is|Antarktíka|f}}、{{t+|is|Suðurskautsálfa|f}}
* 伊多語:{{t|io|Antarktika}}
* 伊博語:{{t|ig|Antarctica}}
* 伊洛卡諾語:{{t|ilo|Antartika}}
* 印尼語:{{t+|id|Antartika}}、{{t|id|Antarktika}}
* 印古什語:{{t|inh|Антарктида}}
* 因特語:{{t|ia|Antarctica}}
* 愛爾蘭語:{{t|ga|Antartaice|f}}
* 意大利語:{{t+|it|Antartide}}
* 牙買加克里奧爾語:{{t|jam|Antaatika}}
* 日語:{{t+|ja|南極|tr=なんきょく, nankyoku}} {{qualifier|區域}}、{{t|ja|[[南極]][[大陸]]|tr=なんきょくたいりく, nankyoku tairiku}} {{qualifier|大陸}}
* 爪哇語:{{t|jv|Antartika}}
* Kabiyé: {{t|kbp|Antarɩtiki}}
* 卡拜爾語:{{t|kab|Antraktika}}
* 卡爾梅克衛拉特語:{{t|xal|Антарктик}}
* 卡納達語:{{t|kn|ಅಂಟಾರ್ಕ್ಟಿಕ}}
* 卡拉恰伊-巴爾卡爾語:{{t|krc|Антарктида}}
* 卡拉卡爾帕克語:{{t|kaa|Antarktika}}
* 卡舒比語:{{t|csb|Antarktida|f}}
* 哈薩克語:{{t|kk|Антарктида}}
* 高棉語:{{t|km|អង់តាទិក}}
* 彼爾姆科米語:{{t|koi|Антарктида}}
* 朝鮮語:{{t+|ko|남극(南極)}} {{qualifier|區域}}、{{t+|ko|남극대륙}} {{qualifier|大陸}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Antarktîka}}
* 吉爾吉斯語:{{t|ky|Антарктида}}
* 拉登語:{{t-needed|lld}}
* 拉蒂諾語:{{t|lad|Antartika}}
* 老撾語:{{t+|lo|ອັນຕາກຕິກ}}
* 拉丁語:{{t|la|Antarctica}}
* 拉脫維亞語:{{t|lv|Antarktīda|f}}、{{t|lv|Antarktika|f}}
* 列茲金語:{{t|lez|Антарктида}}
* 利古里亞語:{{t|lij|Antartide|m}}
* 林堡語:{{t|li|Antarctica|n}}
* 立陶宛語:{{t+|lt|Antarktida}}
* 利維卡累利阿語:{{t|olo|Antarktidu}}
* 倫巴底語:{{t|lmo|Antartid|m}}
* 低地德語:
*: 德國低地德語:{{t|nds-de|Antarktika|f}}
* 盧森堡語:{{t+|lb|Antarktis|f}}
* 馬其頓語:{{t|mk|Анта́рктик|m}}
* 馬拉加斯語:{{t|mg|Antartika}}
* 馬來語:{{t|ms|Antartika}}
* 馬拉雅拉姆語:{{t|ml|അന്റാർട്ടിക്ക}}
* 馬爾他語:{{t-needed|mt}}
* 曼島語:{{t|gv|Antarctagh|f}}
* 毛利語:{{t|mi|Te Tiri o Te Moana}}
* 馬拉地語:{{t|mr|अंटार्क्टिका}}
* 米南佳保語:{{t|min|Antarktika}}
* 明格列爾語:{{t|xmf|ანტარქტიდა}}
* 米蘭德斯語:{{t|mwl|Antártica|f}}、{{t|mwl|Antártida|f}}
* 蒙古語:{{t+|mn|Антарктид}}
* 納瓦特爾語:{{t|nah|Antartida}}
* 納瓦霍語:{{t|nv|Shádiʼááhjí Honeezkʼazii|sc=Latn}}、{{t|nv|Shádiʼááhjí kéyah yistinígíí|sc=Latn}}
* 那不勒斯語:{{t|nap|Antartide|m}}
* 諾曼語:{{t|nrf|Antarctique|m}}
* 北弗里斯蘭語:{{t|frr|Antarktikaa}}
* 北薩米語:{{t|se|Antárktis}}
* 北塞索托語:{{t|nso|Antarctica}}
* 挪威語:
*: 書面挪威語:{{t|nb|Antarktika}}
*: 新挪威語:{{t|nn|Antarktika}}
* 奧克語:{{t+|oc|Antartida|f}}
* 奧利亞語:{{t|or|ଆଣ୍ଟର୍କଟିକା}}
* 奧塞梯語:{{t|os|Антарктидӕ|alt=Антарктидæ}}
* 帕皮阿門托語:{{t|pap|Antartica|f}}
* 波斯語:{{t+|fa|جنوبگان|tr=jonubegân}}
* 皮卡第語:{{t|pcd|Intarctike}}
* 皮埃蒙特語:{{t|pms|Antàrtide|m}}
* 皮特凱恩語:{{t|pih|Antarktida}}
* 波蘭語:{{t+|pl|Antarktyda|f}}
* 旁狄希臘語:{{t|pnt|Ανταρκτικήν}}
* 葡萄牙語:{{t+|pt|Antártica}}
* 旁遮普語:{{t|pa|ਅੰਟਾਰਕਟਿਕਾ}}
* 克丘亞語:{{t|qu|Antartika}}
* 羅馬尼亞語:{{t|ro|Antarctica}}、{{t|ro|Antarctida|f}}
* 俄語:{{t+|ru|Антаркти́да|f}} {{qualifier|大陸}}、{{t+|ru|Анта́рктика|f}} {{qualifier|區域}}
* 盧森尼亞語:{{t|rue|Антарктіда|f}}
* 盧旺達語:{{t|rw|Antarigitika}}
* 薩摩亞語:{{t|sm|Anetatika}}
* 薩莫吉提亞語:{{t|sgs|Antarktėda|f}}
* 桑塔利語:{{t|sat|ᱟᱱᱴᱟᱨᱠᱚᱴᱤᱠᱟ}}
* 撒丁語:{{t|sc|Antàrticu|m}}
* 薩特弗里斯蘭語:{{t|stq|Antarktikoa}}
* 低地蘇格蘭語:{{t|sco|Antarcticae}}
* 蘇格蘭蓋爾語:{{t|gd|Antargtaga}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Антарктик|m}}
*: 拉丁字母:{{t+|sh|Antarktik|m}}
* 修納語:{{t|sn|Antarctica}}
* 西西里語:{{t|scn|Antàrtidi|m}}
* 西里西亞語:{{t|szl|Antarktyda|f}}
* 僧加羅語:{{t|si|ඇන්ටාක්ටිකාව}}
* 斯洛伐克語:{{t+|sk|Antarktída|f}}
* 斯洛文尼亞語:{{t+|sl|Antárktika|f}}
* 索馬里語:{{t|so|Antarktika}}
* 索布語:
*: 下索布語:{{t|dsb|Antarktika|f}}
*: 上索布語:{{t+|hsb|Antarktika|f}}
* 西班牙語:{{t+|es|Antártida}}
* 巽他語:{{t|su|Antartika}}
* 斯瓦希里語:{{t|sw|Antaktika}}
* 瑞典語:{{t+|sv|Antarktis}}
* 他加祿語:{{t|tl|Antarctica}}
* 塔吉克語:{{t+|tg|Антарктида}}
* 泰米爾語:{{t|ta|அந்தாட்டிக்கா}}
* 塔倫蒂諾語:{{t|roa-tar|Antartide|m}}
* 韃靼語:{{t|tt|Антарктида}}
* 泰盧固語:{{t+|te|అంటార్కిటికా}}
* 德頓語:{{t|tet|Antártida}}
* 泰語:{{t|th|แอนตาร์กติกา}}
* 藏語:{{t|bo|ལྷོ་མཐའི་གླིང}}
* 提格里尼亞語:{{t|ti|ኣንታርቲካ}}
* 湯加語:{{t|to|ʻAnetātika}}
* 聰加語:{{t|ts|Antakthika}}
* 圖陸語:{{t|tcy|ಅಂಟಾರ್ಕ್ಟಿಕ}}
* 土耳其語:{{t+|tr|Antarktika}}
* 土庫曼語:{{t|tk|Antarktika}}、{{t+|tk|Antarktida}} {{qualifier|大陸}}
* 烏克蘭語:{{t+|uk|Антаркти́да|f}} {{qualifier|大陸}}、{{t+|uk|Анта́рктика|f}} {{qualifier|區域}}
* 烏爾都語:{{t|ur|انٹارکٹکا|m|tr=aṇṭārkṭikā}}
* 烏茲別克語:{{t+|uz|Antarktida}}
* 威尼斯語:{{t|vec|Antartide|m}}
* 維普斯語:{{t|vep|Antarktid}}
* 越南語:{{t|vi|Châu Nam Cực}} ({{t|vi|洲南極}})
* 沃拉普克語:{{t-needed|vo}}
* 佛羅語:{{t|vro|Antarktis}}
* 沃特語:{{t-needed|vot}}
* 瓦隆語:{{t+|wa|Antartike|m}}
* 瓦瑞瓦瑞語:{{t|war|Antartika}}
* 威爾士語:{{t|cy|Antarctig|f}}
* 西佛蘭德語:{{t|vls|Antarctica|n}}
* 西弗里斯蘭語:{{t|fy|Antarktika|n}}
* 沃洛夫語:{{t+|wo|Dottub Bëj-saalum}}
* 雅庫特語:{{t|sah|Антарктика}}
* 意第緒語:{{t|yi|אַנטאַרקטיקאַ}}
* 約魯巴語:{{t|yo|Antárktìkà}}
* 扎扎其語:{{t|zza|Antarktika}}
* 澤蘭語:{{t|zea|Antartica}}
* 壯語:{{t|za|Namzgigcouh}}
* 祖魯語:{{t|zu|i-Antaktika}}
{{trans-bottom}}
{{zh-cat|大洲}}
d3f52hqdmnjz9tfgw66imqaq7eend00
南美洲
0
681404
9759637
9728332
2026-05-14T23:29:46Z
TongcyDai
53191
9759637
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
===發音===
{{zh-pron
|m=nánměizhōu
|c=naam4 mei5 zau1
|mn=Lâm-bí-chiu
|mn-t=lam5 mui2 ziu1
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q18}}{{place|zh|構成[[美洲]]南部的<<大洲>>;位於[[太平洋]]以東,{[大西洋]}以西,[[北美洲]]以南,[[南極洲]]以北;為地球的七大洲之一|tcl=構成[[美洲]]南部的<<大洲>>}}
====近義詞====
* {{zh-l|南美}}
====相關詞彙====
{{table:continents/zh}}
====翻譯====
{{trans-top|id=Q18|美洲大陸南部的洲}}
* 西切爾克斯語:{{t|ady|Къыблэ Америкэ}}
* 南非語:{{t|af|Suid-Amerika}}
* 阿坎語:{{t|ak|Amerika Apueɛ}}
* 阿爾巴尼亞語:{{t|sq|Amerikë Jugore|f}}、{{t|sq|Amerika Jugore|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|ደቡብ አሜሪካ}}
* 阿拉伯語:{{t+|ar|أَمْرِيكَا الْجَنُوبِيَّة|f}}
* 亞美尼亞語:{{t|hy|Հարավային Ամերիկա}}
* 阿薩姆語:{{t|as|দক্ষিণ আমেৰিকা}}
* 亞述新亞拉姆語:{{t|aii|ܬܲܝܡܵܢ ܐܵܡܵܝܪܟܵܐ|f|tr=Tayman Amayrka}}
* 阿塞拜疆語:{{t+|az|Cənubi Amerika}}
* 巴什基爾語:{{t|ba|Көньяҡ Америка}}
* 白俄羅斯語:{{t|be|Паўднёвая Аме́рыка|f}}
* 孟加拉語:{{t|bn|দক্ষিণ মার্কিন}}
* 保加利亞語:{{t|bg|Ю́жна Аме́рика|f}}
* 緬甸語:{{t|my|တောင်အမေရိက}}
* 加泰羅尼亞語:{{t+|ca|Amèrica del Sud|f}}
* 捷克語:{{t+|cs|Jižní Amerika|f}}
* 丹麥語:{{t+|da|Sydamerika|n}}
* 荷蘭語:{{t+|nl|Zuid-Amerika|n}}
* 英語:{{t+|en|South America}}
* 世界語:{{t+|eo|Sudameriko}}
* 愛沙尼亞語:{{t|et|Lõuna-Ameerika}}
* 法羅語:{{t|fo|Suðuramerika|n}}
* 芬蘭語:{{t+|fi|Etelä-Amerikka}}
* 法語:{{t+|fr|Amérique du Sud|f}}
* 加利西亞語:{{t+|gl|América do Sur}}
* 格魯吉亞語:{{t|ka|სამხრეთი ამერიკა}}
* 德語:{{t+|de|Südamerika|n}}
* 希臘語:{{t+|el|Νότια Αμερική|f}}
* 古吉拉特語:{{t|gu|દક્ષિણ અમેરિકા}}
* 海地克里奧爾語:{{t|ht|Amerik disid}}
* 哈爾彥維語:{{t|bgc|दखिण्यामरेख्या}}
* 夏威夷語:{{t|haw|ʻAmelika Hema}}
* 希伯來語:{{t+|he|אָמֶרִיקָה הַדְּרוֹמִית|f|tr=amérika ha-dromít}}
* 印地語:{{t+|hi|दक्षिण अमेरिका|m}}、{{t|hi|दक्षिण अमरीका|m}}
* 匈牙利語:{{t+|hu|Dél-Amerika}}
* 冰島語:{{t+|is|Suður-Ameríka|f}}
* 伊多語:{{t+|io|Sud-Amerika}}
* 印尼語:{{t+|id|Amerika Selatan}}
* 愛爾蘭語:{{t|ga|Meiriceá Theas|m}}
* 意大利語:{{t|it|Sudamerica|f}}、{{t|it|America del sud|f}}
* 日語:{{t+|ja|南アメリカ|tr=Minami Amerika}}、{{t+|ja|南米|tr=なんべい, Nanbei}}
* 卡納達語:{{t+|kn|ದಕ್ಷಿಣ ಅಮೇರಿಕ}}
* 哈薩克語:{{t+|kk|Оңтүстік Америка}}
* 高棉語:{{t|km|អាមេរិកខាងត្បូង}}
* 朝鮮語:{{t+|ko|^남미(南美)}}、{{t+|ko|^남아메리카}}
* 庫爾德語:
*: 北庫爾德語:{{t+|kmr|Amerîkaya Başûr}}
* 吉爾吉斯語:{{t+|ky|Түштүк Америка}}
* 老撾語:{{t+|lo|ອາເມລິກາໃຕ້}}
* 拉丁語:{{t|la|America Austrālis|f}}
* 拉脫維亞語:{{t|lv|Dienvidamerika|f}}
* 立陶宛語:{{t+|lt|Pietų Amerika|f}}
* 盧森堡語:{{t+|lb|Südamerika|n}}
* 馬其頓語:{{t|mk|Јужна Америка|f}}
* 馬來語:{{t+|ms|Amerika Selatan}}
* 馬拉雅拉姆語:{{t|ml|തെക്കേ അമേരിക്ക}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Өмнөд Америк}}
* 納瓦霍語:{{t|nv|Shádiʼááhjí Kéyah dah siʼánígíí}}
* 諾曼語:{{t|nrf|Améthique du Sud|f}} {{qualifier|澤西}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Sør-Amerika|n}}
*: 新挪威語:{{t+|nn|Sør-Amerika|n}}
* 奧克語:{{t+|oc|America del Sud|f}}
* 奧利亞語:{{t|or|ଦକ୍ଷିଣ ଆମେରିକା}}
* 普什圖語:{{t|ps|سويلي امریکا|f|tr=soeli amrikā}}
* 波斯語:{{t|fa|آمریکای جنوبی|tr=âmrikâ-ye jonubi}}
* 波蘭語:{{t+|pl|Ameryka Południowa}}
* 葡萄牙語:{{t+|pt|América do Sul|f}}
* 羅馬尼亞語:{{t+|ro|America de Sud|f}}
* 俄語:{{t+|ru|Ю́жная Аме́рика|f}}
* 梵語:{{t|sa|दक्षिणीयामरेखिका}}
* 蘇格蘭蓋爾語:{{t|gd|Aimeireaga-a-Deas|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Ју̏жна̄ Амѐрика|f}}
*: 拉丁字母:{{t+|sh|Jȕžnā Amèrika|f}}
* 僧加羅語:{{t+|si|දකුණු ඇමෙරිකාව}}
* 斯洛伐克語:{{t+|sk|Južná Amerika|f}}
* 斯洛文尼亞語:{{t|sl|Južna Amerika|f}}
* 塞索托語:{{t|st|Amerika Borwa}}
* 西班牙語:{{t+|es|América del Sur|f}}、{{t+|es|Sudamérica|f}}、{{t+|es|Suramérica|f}}、{{t|es|América Meridional|f}}
* 斯瓦希里語:{{t|sw|Amerika ya Kusini}}
* 瑞典語:{{t+|sv|Sydamerika|n}}
* 他加祿語:{{t|tl|Timog Amerika}}
* 塔吉克語:{{t+|tg|Амрикои Ҷанубӣ}}
* 泰米爾語:{{t+|ta|தென் அமெரிக்கா}}
* 韃靼語:{{t|tt|Көньяк Америка}}
* 泰盧固語:{{t+|te|దక్షిణ అమెరికా}}
* 泰語:{{t|th|อเมริกาใต้}}
* 提格里尼亞語:{{t|ti|ደቡብ ኣመሪካ}}
* 土耳其語:{{t+|tr|Güney Amerika}}
* 土庫曼語:{{t|tk|Günorta Amerika}}
* 烏克蘭語:{{t+|uk|Півде́нна Аме́рика|f}}
* 烏爾都語:{{t|ur|جنوبی امریکہ|m|tr=junūbī amrīkā}}
* 維吾爾語:{{t|ug|جەنۇبىي ئامېرىكا}}
* 烏茲別克語:{{t+|uz|Janubiy Amerika}}
* 越南語:{{t+|vi|Nam Mỹ}} ({{t|vi|南美}})
* 沃拉普克語:{{t+|vo|Sulüda-Merop}}
* 威爾士語:{{t+|cy|De America|f}}
* 意第緒語:{{t|yi|דרום אַמעריקע|n|tr=dorem amerike}}
{{trans-bottom}}
{{zh-cat|南美洲}}
o3w2nl9pam85m1yz02rmwjki5fidlw7
南米
0
681406
9759638
7881142
2026-05-14T23:30:04Z
TongcyDai
53191
9759638
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|なん|べい|yomi=on}}
===發音===
{{ja-pron|なんべい|acc=0|acc_ref=NHK,SMK5}}
===專有名詞===
{{ja-pos|proper|なんべい}}
# {{tcl|ja|南美洲|id=Q18}}
====反義詞====
* {{ja-r|北米|^ほくべい}}
===參考資料===
<references/>
* {{R:Shogakukan}}
2t7p0dguvdstcur9xr4gabgyor5y2xq
こぶ
0
716343
9760160
6196583
2026-05-15T06:56:44Z
Fglffer
55252
9760160
wikitext
text/x-wiki
==日語==
===詞源1===
{{ja-kanjitab|alt=瘤}}
====發音====
{{ja-pron|acc=2|acc_ref=DJR}}
====名詞====
{{ja-noun|hhira=こぶ}}
# [[腫瘤]],[[腫塊]]
# [[樹瘤]]
# [[繩結]]
# [[累贅]],[[拖油瓶]] {{qual|指孩子}}
=====同義詞=====
* {{sense|腫瘤}} {{qual|非正式}} {{ja-r|たん瘤|たんこぶ}}
===詞源2===
{{ja-kanjitab|alt=媚ぶ}}
====發音====
{{ja-pron}}
====動詞====
{{ja-verb|type=kami ni}}
# [[諂媚]]
===詞源3===
{{ja-see-kango|戸部|鼓舞}}
===詞源4===
{{ja-see|昆布}}
===來源===
<references/>
jnj90btgmcfg5g3dyq8lhu90azlsgjk
せいち
0
725689
9760143
5447128
2026-05-15T06:03:42Z
Fglffer
55252
9760143
wikitext
text/x-wiki
==日語==
{{ja-see|聖地|精緻|整地|生地|制治|整治|棲遅|生知|生致|聖知|静置}}
l4ftsz816xhnjq2zf86x0q5rcgvypi2
リビア
0
754541
9759623
7818884
2026-05-14T23:14:32Z
TongcyDai
53191
9759623
wikitext
text/x-wiki
==日語==
{{wp|ja:}}
===發音===
{{ja-pron|acc=1|acc_ref=NHK,SMK5}}
===專有名詞===
{{ja-pos|proper}}
# {{tcl|ja|利比亞|id=Q1016}}
===參考資料===
<references />
4sjvl8mteednwf2pb98c72zy2djyrz6
Kernkraftwerk
0
781730
9759449
9546513
2026-05-14T17:13:25Z
Jeuwre
48455
/* 發音 */
9759449
wikitext
text/x-wiki
==德語==
===詞源===
源自 {{compound|de|Kern|Kraftwerk|gloss1=核子|gloss2=發電廠}}。
===發音===
* {{IPA|de|[ˈkɛʁnkʁaftˌvɛʁk]}}
* {{audio|de|De-Kernkraftwerk.ogg}}
* {{audio|de|De-Kernkraftwerk2.ogg|a=柏林}}
* {{hyph|de|Kern|kraft|werk}}
===名詞===
{{de-noun|n,(e)s}}
# [[核電站]],[[核電廠]]
#: {{syn|de|Atomkraftwerk}}
====變格====
{{de-ndecl|n,(e)s}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
{{C|de|核能|鈾}}
8mhd2a0cs7n1gt7yjbqmqepyybyb30p
материк
0
848862
9759654
9538281
2026-05-14T23:50:43Z
TongcyDai
53191
9759654
wikitext
text/x-wiki
==俄語==
{{slim-wikipedia|lang=ru}}
===詞源===
* 根據Erich Berneker和Max Vasmer的說法,其來自{{af|ru|ма́терь|-и́к}}。
* 根據Andrey Zaliznyak的說法,其來自{{af|ru|[[матёрый|матеро́й]]|-и́к}}帶有右重音替代主語後綴。同樣類似的例子有{{m|ru|временно́й}} → {{m|ru|временни́к}}、{{m|ru|мелочно́й}} → {{m|ru|мелочни́к}},但是{{m|ru|варёный}} → {{m|ru|варе́ник}}、{{m|ru|ры́жий}} → {{m|ru|ры́жик}}卻是例外。
===發音===
* {{ru-IPA|матери́к}}
* {{audio|ru|Ru-материк.ogg}}
===名詞===
{{ru-noun+|b|матери́к}}
# [[大洲]]
# [[大陸]]
# [[原生]][[土壤]]
# [[底土]]
# {{lb|ru|geology}} [[基質]],[[母岩]],[[脈石]]
# {{lb|ru|biology}} [[母體]][[組織]]
====變格====
{{ru-noun-table|b|матери́к}}
====近義詞====
* {{l|ru|контине́нт}}
===參考資料===
* {{R:ru:Vasmer}}
===延伸閱讀===
* {{R:ru:Dal}}
** 參見:{{R:ru:Dal|матерый}}
{{C|ru|地形}}
==烏克蘭語==
{{swp|uk:}}
===詞源===
和{{cog|ru|матери́к}}同源。
===發音===
* {{uk-IPA|матери́к}}
* {{audio|uk|Uk-материк.ogg}}
===名詞===
{{uk-noun|матери́к<b>}}
# {{lb|uk|地理學}} [[大洲]]
#: {{syn|uk|контине́нт|g=m}}
====變格====
{{uk-ndecl|матери́к<b>}}
===延伸閱讀===
* {{R:uk:SUM-11}}
* {{R:uk:Horokh}}
* {{R:uk:Kyiv}}
* {{R:uk:Slovnyk}}
{{C|uk|地形}}
hsj8onvdte2tfehio42a0350v0edfad
América
0
887118
9759693
9531052
2026-05-15T00:35:06Z
TongcyDai
53191
9759693
wikitext
text/x-wiki
{{also|America|Amèrica|americà}}
==阿斯圖里亞斯語==
===詞源===
源自{{der|ast|la-new|America}}。
===發音===
* {{ast-pr}}
===專有名詞===
{{head|ast|專有名詞|g=f}}
# {{lb|ast|also|in the plural}} {{tcl|ast|美洲|id=Q828}}
====相關詞彙====
{{col3|ast|facer l'América|americanu|América nueva|facer Les Amériques|Les Amériques nueves}}
==加利西亞語==
{{wp|gl:}}
===詞源===
源自{{der|gl|la-new|America}}。
===發音===
* {{audio|gl|Gl-América.ogg}}
===專有名詞===
{{head|gl|專有名詞|g=f}}
# {{tcl|gl|美洲|id=Q828}}
====派生詞彙====
{{col3|gl|América Latina
|Latinoamérica
|América del Norte
|Norteamérica
|América del Sur
|Suramérica
|América meridional
|América Central
|Centroamérica
|América Anglosajona
}}
===參見===
{{list:continents/gl}}
==利古里亞語==
===其他形式===
* {{alter|lij|Mérica}}
===詞源===
源自{{der|lij|la|America}}。
===發音===
* {{IPA|lij|/aˈmerika/}}
===專有名詞===
{{lij-proper noun|f}}
# {{tcl|lij|美國|id=Q30}}
# {{tcl|lij|美洲|id=Q828}}
====派生詞彙====
* {{l|lij|América do Nòrd}}
* {{l|lij|América do Sùd}}
====相關詞彙====
* {{l|lij|americàn}}
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|A|mé|ri|ca}}
===詞源1===
{{bor+|pt|la-new|America}}。
====專有名詞====
{{pt-proper noun|f|+}}
# {{tcl|pt|美洲|id=Q828}}
#: {{syn|pt|Américas}}
#* {{quote-book|pt|year=2005|author=Gil Felippe|title=No Rastro de Afrodite – Plantas Afrodisíacas e Culinária|pageurl=http://books.google.com.br/books?id=bP-96-3CEi8C&pg=PA33#v=onepage&q&f=false|isbn=9788574802329|page=33|publisher=Ateliê Editorial|text=Havia formas já selecionadas de abacaxi ou ananás na época pré-colombiana. É considerado o fruto mais saboroso da '''América''' e os primeiros indícios de seu cultivo são do México.
|translation=There were selected forms already of ''abacaxi'' or pineapple on pre-Columbian times. It is considered the tastiest fruit of '''America''', and the first signs of its cultivation are from Mexico}}
# {{lb|pt|chiefly Portugal|非正式}} {{tcl|pt|America|id=Q30|place_full=Estados Unidos da América}}
#: {{syn|pt|Estados Unidos|EUA}}
===詞源2===
====專有名詞====
{{pt-proper noun|f|+|m=+}}
# {{given name|pt|女性}}
==西班牙語==
{{wp|es:}}
===詞源===
{{bor+|es|la-new|America}}。
===發音===
{{es-pr}}
===專有名詞===
{{es-prop|f}}
# {{tcl|es|美洲|id=Q828}}
#: {{ux|es|Los Estados Unidos es el país más poblado de '''América'''.|The United States is the most populous country in '''America'''.}}
# {{lb|es|proscribed|西班牙}} {{tcl|es|美國|id=Q30|place_full=Estados Unidos de América}}
#* {{quote-journal|es|author=Jordan Valinsky|title=Google Maps cambiará el nombre del golfo de México por el de "golfo de Estados Unidos"|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2025/01/28/eeuu/google-maps-golfo-de-mexico-por-el-golfo-de-america-trax|date=2025-01-28|passage=Y en un guiño a las contribuciones del golfo de México a la economía estadounidense, Trump está “ordenando que se le cambie oficialmente el nombre a golfo de '''América'''”.
|translation=And at a twist from the Gulf of Mexico's contributions to the Usonian economy, Trump is “ordering to officially change its name to ''Gulf of'' '''''America'''''”.}}
====派生詞彙====
{{col|es|América Latina
|Latinoamérica
|América del Norte
|avestruz de América
|Norteamérica
|América del Sur
|Sudamérica
|Suramérica|golfo de América|América Meridional
|América Central
|Centroamérica|Pulgarcito de América
|América Anglosajona
|hacerse la América
|urraca de América
}}
====相關詞彙====
{{col|es|americano}}
====派生語彙====
* {{desc|gug|Amérika|bor=1}}
===參見===
{{list:continents/es}}
* {{l|es|Estados Unidos de América}}
* {{l|es|Estados Unidos}}
* {{l|es|Nuevo Mundo}}
===延伸閱讀===
* {{R:es:DRAE}}
r85yf6cys57jpwn6ni6rcxb8udkr3tt
9759694
9759693
2026-05-15T00:36:08Z
TongcyDai
53191
9759694
wikitext
text/x-wiki
{{also|America|Amèrica|americà}}
==阿斯圖里亞斯語==
===詞源===
源自{{der|ast|la-new|America}}。
===發音===
* {{ast-pr}}
===專有名詞===
{{head|ast|專有名詞|g=f}}
# {{lb|ast|also|in the plural}} {{tcl|ast|美洲|id=Q828}}
====相關詞彙====
{{col3|ast|facer l'América|americanu|América nueva|facer Les Amériques|Les Amériques nueves}}
==加利西亞語==
{{wp|gl:}}
===詞源===
源自{{der|gl|la-new|America}}。
===發音===
* {{audio|gl|Gl-América.ogg}}
===專有名詞===
{{head|gl|專有名詞|g=f}}
# {{tcl|gl|美洲|id=Q828}}
====派生詞彙====
{{col3|gl|América Latina
|Latinoamérica
|América del Norte
|Norteamérica
|América del Sur
|Suramérica
|América meridional
|América Central
|Centroamérica
|América Anglosajona
}}
===參見===
{{list:continents/gl}}
==利古里亞語==
===其他形式===
* {{alter|lij|Mérica}}
===詞源===
源自{{der|lij|la|America}}。
===發音===
* {{IPA|lij|/aˈmerika/}}
===專有名詞===
{{lij-proper noun|f}}
# {{tcl|lij|美國|id=Q30}}
# {{tcl|lij|美洲|id=Q828}}
====派生詞彙====
* {{l|lij|América do Nòrd}}
* {{l|lij|América do Sùd}}
====相關詞彙====
* {{l|lij|americàn}}
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|A|mé|ri|ca}}
===詞源1===
{{bor+|pt|la-new|America}}。
====專有名詞====
{{pt-proper noun|f|+}}
# {{tcl|pt|美洲|id=Q828}}
#: {{syn|pt|Américas}}
#* {{quote-book|pt|year=2005|author=Gil Felippe|title=No Rastro de Afrodite – Plantas Afrodisíacas e Culinária|pageurl=http://books.google.com.br/books?id=bP-96-3CEi8C&pg=PA33#v=onepage&q&f=false|isbn=9788574802329|page=33|publisher=Ateliê Editorial|text=Havia formas já selecionadas de abacaxi ou ananás na época pré-colombiana. É considerado o fruto mais saboroso da '''América''' e os primeiros indícios de seu cultivo são do México.
|translation=There were selected forms already of ''abacaxi'' or pineapple on pre-Columbian times. It is considered the tastiest fruit of '''America''', and the first signs of its cultivation are from Mexico}}
# {{lb|pt|chiefly Portugal|非正式}} {{tcl|pt|America|id=Q30|place_full=Estados Unidos da América}}
#: {{syn|pt|Estados Unidos|EUA}}
===詞源2===
====專有名詞====
{{pt-proper noun|f|+|m=+}}
# {{given name|pt|女性}}
==西班牙語==
{{wp|es:}}
===詞源===
{{bor+|es|la-new|America}}。
===發音===
{{es-pr}}
===專有名詞===
{{es-prop|f}}
# {{tcl|es|美洲|id=Q828}}
#: {{ux|es|Los Estados Unidos es el país más poblado de '''América'''.|美國是'''美洲'''人口最多的國家。}}
# {{lb|es|proscribed|西班牙}} {{tcl|es|美國|id=Q30|place_full=Estados Unidos de América}}
#* {{quote-journal|es|author=Jordan Valinsky|title=Google Maps cambiará el nombre del golfo de México por el de "golfo de Estados Unidos"|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2025/01/28/eeuu/google-maps-golfo-de-mexico-por-el-golfo-de-america-trax|date=2025-01-28|passage=Y en un guiño a las contribuciones del golfo de México a la economía estadounidense, Trump está “ordenando que se le cambie oficialmente el nombre a golfo de '''América'''”.
|translation=與墨西哥灣對美國經濟的貢獻截然相反,川普「下令正式將其更名為'''美國'''灣」。}}
====派生詞彙====
{{col|es|América Latina
|Latinoamérica
|América del Norte
|avestruz de América
|Norteamérica
|América del Sur
|Sudamérica
|Suramérica|golfo de América|América Meridional
|América Central
|Centroamérica|Pulgarcito de América
|América Anglosajona
|hacerse la América
|urraca de América
}}
====相關詞彙====
{{col|es|americano}}
====派生語彙====
* {{desc|gug|Amérika|bor=1}}
===參見===
{{list:continents/es}}
* {{l|es|Estados Unidos de América}}
* {{l|es|Estados Unidos}}
* {{l|es|Nuevo Mundo}}
===延伸閱讀===
* {{R:es:DRAE}}
mh35dkzqpqff36jzc45v8cdpjllwk4m
colonia
0
890145
9760150
7771053
2026-05-15T06:22:12Z
Apisite
85347
9760150
wikitext
text/x-wiki
{{also|Colonia|colónia|colònia|colônia|Colónia|Colònia|Colônia}}
==英語==
[[Category:英語]]
[[Category:英語名詞]]
缺少地方政府的服務及照管、大多數為貧窮成員組成的「墨西哥及美人社區」
==西班牙語==
[[Category:西班牙語]]
[[Category:西班牙語名詞]]
f. 移民,殖民地,花露水
4ke4ex3x5a1nblri0nlo6ifw53opak1
Libia
0
897556
9759619
9010483
2026-05-14T23:06:42Z
TongcyDai
53191
9759619
wikitext
text/x-wiki
{{also|libia|líbia|Líbia|Líbía}}
==阿斯圖里亞斯語==
{{wp|ast:}}
===專有名詞===
{{ast-proper noun|f}}
# {{tcl|ast|利比亞|id=Q1016}}
====相關詞彙====
* {{l|ast|libiu}}
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{tcl|nch|利比亞|id=Q1016}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{tcl|nhn|利比亞|id=Q1016}}
==加利西亞語==
===其他形式===
* {{alt|gl|Líbia||重新融入主義}}
===專有名詞===
{{gl-proper noun}}
# {{tcl|gl|利比亞|id=Q1016}}
====相關詞彙====
* {{l|gl|libio}}
==愛爾蘭語==
===專有名詞===
{{ga-proper noun|f|head=An Libia|Libia}}
# {{tcl|ga|利比亞|id=Q1016}}
====派生詞彙====
* {{l|ga|Libiach|gloss=利比亞的}}
====相關詞彙====
* {{l|ga|Daon-Phoblacht Mhór Shóisialach Arabach na Libia}}
* {{l|ga|Seamaithír Mhór Shóisialach Arabach na Libia}}
* {{l|ga|Tripilí||Tripoli}}
==意大利語==
{{wp|it:}}
===發音===
{{it-pr|Lìbia}}
{{rfap|it}}
===專有名詞===
{{it-proper noun|f}}
# {{tcl|it|利比亞|id=Q1016}}
====派生詞彙====
* {{l|it|libico}}
===異序詞===
* {{anagrams|it|a=abiil|abili|alibi|bilia}}
==古英語==
===詞源===
{{bor+|ang|la|Libya}},源自{{der|ang|grc|Λιβύη}}。
===專有名詞===
{{ang-proper noun}}
# [[利比亞]]
#* '''9世紀晚期''', [https://archive.org/details/kingalfredsorosi79oros/page/12/mode/2up translation] of [[w:Orosius|Orosius’]] ''History Against the Pagans''
#*: {{quote|ang|Sēo Ægȳptus þe is nēar ūs, bē norþan hire is þæt land Palastine, ⁊ bē ēastan hiere Sarracene þæt land, ⁊ bē westan hire '''Libia''' þæt land, ⁊ bē sūþan hire sē beorg þe mon hǣt Climax.|我們附近的埃及(下埃及)北鄰巴勒斯坦,東接撒拉遜人之地,西連利比亞,南臨克萊馬克斯山。}}
==波蘭語==
{{wp|pl:}}
===發音===
{{pl-pr|a=Pl-Libia.ogg}}
===專有名詞===
{{pl-proper noun|f|adj=libijski}}
# {{tcl|pl|利比亞|id=Q1016}}
====變格====
{{pl-decl-noun-sing
|Libia
|Libii
|Libii
|Libię
|Libią
|Libii
|Libio
}}
====派生詞彙====
{{col|pl|Libijczyk|Libijka}}
===參見===
{{list:countries in Africa/pl}}
===延伸閱讀===
* {{R:pl:PWN}}
==西班牙語==
{{wp|es:}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-Libia.wav<a:Spain>><audio:LL-Q1321 (spa)-Rodrigo5260-Libia.wav<a:Peru>>}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|利比亞|id=Q1016}}
====相關詞彙====
{{col|es|libio}}
==威爾士語==
{{wp|cy:}}
===專有名詞===
{{cy-proper noun|f}}
# {{tcl|cy|利比亞|id=Q1016}}
====相關詞彙====
* {{l|cy|Libiad||Libyan|pos=n}}
* {{l|cy|Libiaidd||Libyan|pos=a}}
===參見===
{{list:countries in Africa/cy}}
===延伸閱讀===
* {{R:cy:GyrA|2=Libya}}
==西瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nhw|專有名詞}}
# {{tcl|nhw|利比亞|id=Q1016}}
==約魯巴語==
{{swp|yo:[[Líbyà|Líbíà]]}}
[[File:Libya in its region.svg|thumb|'''Líbíà''']]
===詞源===
{{bor+|yo|en|利比亞}}。
===發音===
* {{yo-IPA|Líbíà}}
===專有名詞===
{{yo-prop|Líbíà}}
# {{tcl|yo|利比亞|id=Q1016}}
fvkve83fx0bvojsw8j8rmfwn1ybl712
sudamericano
0
903663
9759708
7675785
2026-05-15T00:42:12Z
TongcyDai
53191
9759708
wikitext
text/x-wiki
==意大利語==
===發音===
{{it-pr|sùdamericàno,sùddamericàno<r:Olivetti><r:DiPI:Sud>}}
===形容詞===
{{it-adj}}
# [[南美洲]]的
===名詞===
{{it-noun|m|f=+}}
# [[南美洲]]居民
===參考資料===
<references />
==西班牙語==
===發音===
{{es-pr}}
===形容詞===
{{es-adj}}
# [[南美洲]]的
====派生詞彙====
{{col|es
|gaviotín sudamericano
}}
===名詞===
{{es-noun|m|f=+}}
# [[南美洲]]居民
===延伸閱讀===
* {{R:es:DRAE}}
gf3bc2yr9ktzohsnlpi034w3wuye51c
儀式
0
930286
9759429
8296965
2026-05-14T15:27:19Z
P1ayer
5118
/* 衍生詞 */
9759429
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=仪式}}
{{zh-wp}}
===發音===
{{zh-pron
|m=yíshì
|ma=Zh-yíshì.ogg
|c=ji4 sik1
|ca=LL-Q9186-Luilui6666-仪式.wav
|h=pfs=ngì-sṳt
|mn=qz:gî-siak/tw,xm:gî-sek/zz:gî-sit/tw:gī-sek
|mn-t=ngi5 sêg4
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[舉行]][[典禮]]的[[秩序]]、[[形式]] {{zh-mw|m:個|m:場}}
#: {{zh-x|簽約 儀式|}}
#: {{zh-x|剪彩 儀式|}}
#: {{zh-x|升旗 儀式|}}
====同義詞====
{{syn-saurus|zh|儀式}}
====衍生詞====
{{col3|zh|茶儀式|儀式感}}
====相關詞====
* {{zh-l|儀軌}}
{{zh-cat|Intermediate}}
{{C|zh|宗教}}
==日語==
{{ja-kanjitab|ぎ|しき|yomi=o}}
===發音===
{{ja-pron|ぎしき|acc=a|dev=2|acc_ref=NHK,DJR}}
===名詞===
{{ja-noun|ぎしき}}
# [[舉行]][[典禮]]的[[秩序]]、[[形式]]
====參見====
* {{ja-r|式典|しきてん}}
===來源===
<references/>
{{topics|ja|宗教|sort=ぎしき}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=의식|mr=ŭisik|y=ūysik}}
# {{hanja form of|의식|}}
==越南語==
{{vi-hantutab}}
===名詞===
{{vi-noun|sc=Hani}}
# {{han tu form of|nghi thức|}}
kgieh4um36mhzmfsbwqexrh357p4rv3
飛散
0
984441
9760141
7756105
2026-05-15T05:23:22Z
Apisite
85347
9760141
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=飞散}}
===發音===
{{zh-pron
|m=fēisàn
|cat=v
}}
===釋義===
{{zh-verb}}
# {{rfdef|zh}}
===翻譯===
{{翻译-顶}}
* 俄语:1) [[разлетаться]], [[рассеиваться]] ([[в]] [[воздухе]]); 2) ''[[геол.]]'' [[выдувание]]
{{翻译-底}}
[[Category:漢語|飞00攴08]]
==日語==
飛散【ひさん】
# 名·自他サ 飛散。
[[Category:日語]]
9paul0qewq137280ig07x0xi8xvxe12
9760148
9760141
2026-05-15T06:15:38Z
Fglffer
55252
9760148
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=飞散}}
===發音===
{{zh-pron
|m=fēisàn
|cat=v
}}
===動詞===
{{zh-verb}}
# [[飛揚]][[四散]]
==日語==
{{ja-kanjitab|ひ|さん|yomi=o}}
===發音===
{{ja-pron|ひさん|acc=0|acc_ref=DJR}}
===名詞===
{{ja-noun|ひさん}}
# [[飛揚]][[四散]]
===動詞===
{{ja-verb-suru|ひさん}}
# [[飛揚]][[四散]]
====活用====
{{ja-suru|ひさん}}
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0005820500}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=비산}}
# {{hanja form of|비산}}
332en5go4vtwyiddg06hr2dq0133sbr
9760169
9760148
2026-05-15T08:17:59Z
Sayonzei
40728
/* 日語 */
9760169
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=飞散}}
===發音===
{{zh-pron
|m=fēisàn
|cat=v
}}
===動詞===
{{zh-verb}}
# [[飛揚]][[四散]]
==日語==
{{ja-kanjitab|ひ|さん|yomi=o}}
===發音===
{{ja-pron|ひさん|acc=0|acc_ref=DJR}}
===名詞===
{{ja-noun|ひさん}}
# [[飛揚]][[四散]]
===動詞===
{{ja-verb-suru|tr=both|ひさん}}
# [[飛揚]][[四散]]
====活用====
{{ja-suru|ひさん}}
====參見====
* {{ja-r|飛び散る|とびちる}}
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0005820500}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=비산}}
# {{hanja form of|비산}}
pgctmcqrl1t9oar1guhsn1soehflrfx
北米
0
989189
9759636
7872092
2026-05-14T23:27:54Z
TongcyDai
53191
9759636
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|ほく|べい|yomi=on}}
===發音===
{{ja-pron|ほくべい|acc=0|acc_ref=NHK,SMK5}}
===專有名詞===
{{ja-pos|proper|ほくべい}}
# {{tcl|ja|北美洲|id=Q49}}
====反義詞====
* {{ja-r|南米|^なんべい}}
===參考資料===
* {{R:Shogakukan}}
<references/>
3g7xtokx03l1r8rzjcx6j3d3vedqowv
África
0
1014699
9759536
6223624
2026-05-14T22:08:31Z
TongcyDai
53191
9759536
wikitext
text/x-wiki
{{also|africa|Africa|áfrica|africà|Àfrica}}
==阿斯圖里亞斯語==
{{wp|ast:}}
===詞源===
{{rfe|ast}}
===專有名詞===
{{head|ast|專有名詞|g=f}}
# {{tcl|ast|非洲|id=Q15}}
====相關詞彙====
* {{l|ast|africanu}}
==加利西亞語==
{{wp|gl:}}
===詞源===
{{rfe|gl}}
===發音===
* {{audio|gl|Gl-África.ogg}}
===專有名詞===
{{gl-proper noun|f}}
# {{tcl|gl|非洲|id=Q15}}
# {{tcl|gl|阿非利加|id=Q181238}}
====同類詞彙====
{{list:continents/gl}}
====相關詞彙====
* {{l|gl|africano}}
* {{l|gl|africana}}
==米蘭德斯語==
{{wp|mwl:}}
{{rfquote|mwl}}
===詞源===
{{rfe|mwl}}
===發音===
{{mwl-pr|hmp=áfrica}}
===專有名詞===
{{head|mwl|專有名詞|g=f}}
# {{tcl|mwl|非洲|id=Q15}}
==葡萄牙語==
{{wp|pt:}}
===詞源===
{{rfe|pt}}
===發音===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-MedK1-África.wav|a=Caipira}}
* {{rhymes|pt|afɾikɐ|s=3}}
* {{hyph|pt|Á|fri|ca}}
===專有名詞===
{{pt-proper noun|f}}
# {{tcl|pt|非洲|id=Q15}}
# {{tcl|pt|阿非利加|id=Q181238}}
====用法說明====
{{pt-placename-without-article}}
====同類詞彙====
{{list:continents/pt}}
====派生詞彙====
{{col|pt|Euráfrica|África do Sul}}
====相關詞彙====
{{col|pt|africano|africâner|afro|afro-|ábrego//ávrego|áfrico}}
==西班牙語==
===詞源===
{{rfe|es}}
===發音===
{{es-pr}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|非洲|id=Q15}}
#* {{quote-journal|es|author=John Malathronas|title=¿Cuáles son los idiomas más fáciles (y difíciles) de aprender para los hablantes nativos de inglés?|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2021/04/26/idiomas-aprender-hablantes-nativos-de-ingles-trax|date=2021-04-26|passage=Del mismo modo, el suajili evolucionó como lengua comercial en '''África''' oriental y se describe como un vocabulario árabe sobre una gramática africana.}}
# {{tcl|es|阿非利加|id=Q181238}}
# {{given name|es|女性|from=拉丁語}},為 {{m|es|[[María]] (de) África}} 之縮寫,聖母瑪利亞的稱號之一
====用法說明====
{{es-note-noun-f-starting-with-stressed-a}}
====派生詞彙====
* {{l|es|África del Sudoeste}}、{{l|es|África del Suroeste}}
* {{l|es|Cuerno de África}}
* {{l|es|Sudáfrica}}
====相關詞彙====
{{col|es|africano}}
===參見===
{{list:continents/es}}
* {{pedia|lang=es}}
bffe8pzzjggjys9cycuacxlbw7oiero
Cidade do México
0
1016814
9759451
4827763
2026-05-14T17:13:59Z
TongcyDai
53191
9759451
wikitext
text/x-wiki
==葡萄牙語==
{{wp|pt:}}
===詞源===
{{calque|pt|es-MX|Ciudad de México}}。
===發音===
{{pt-IPA|[x:sh]}}
===專有名詞===
{{pt-proper noun|f|head=[[cidade|Cidade]] [[do]] [[México]]}}
# {{tcl|pt|墨西哥城|id=Q1489}}
{{cln|pt|外名}}
atxnm67p2sik9h6q75dq9w7vacaltzr
Líbia
0
1022618
9759620
8103081
2026-05-14T23:13:46Z
TongcyDai
53191
9759620
wikitext
text/x-wiki
{{also|libia|Libia|líbia|Líbía}}
==加泰羅尼亞語==
{{wp|ca:}}
===發音===
* {{ca-IPA}}
* {{audio|ca|LL-Q7026 (cat)-Millars-Líbia.wav|a=Valencia}}
* {{audio|ca|LL-Q7026 (cat)-Marvives-Líbia.wav|a=Barcelona}}
===專有名詞===
{{ca-proper noun|f}}
# {{tcl|ca|利比亞|id=Q1016}}
====相關詞彙====
* {{l|ca|libi}}
==匈牙利語==
{{swp|hu:}}
[[Image:LocationLibya.png|thumb|'''Líbia''']]
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Lí|bia}}
* {{rhymes|hu|jɒ|s=3}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|利比亞|id=Q1016|place_official=hu:Líbia Állam}}
====變格====
{{hu-infl-nom|Líbiá|o|n=sg}}{{hu-pos-tok|Líbiá|n=sg}}
====變格====
* {{l|hu|líbiai}}
===參見===
{{list:countries in Africa/hu}}
==葡萄牙語==
{{wp|pt:}}
[[Image:Flag of Libya.svg|thumb|Líbia]]
===發音===
{{pt-IPA}}
* {{rhyme|pt|ibiɐ<s:3>|ibjɐ<s:2>}}
* {{hmp|pt|líbia}}
* {{hyph|pt|Lí|bi|a}}
===專有名詞===
{{pt-proper noun|f}}
# {{tcl|pt|利比亞|id=Q1016}}
====相關詞彙====
* {{l|pt|líbio}}
8dze97ifpu8z03pt9k47mzops3yju5m
砒酸
0
1040124
9760154
8469384
2026-05-15T06:35:41Z
Fglffer
55252
9760154
wikitext
text/x-wiki
==漢語==
{{zh-see|砒霜}}
===參考資料===
* {{R:nan:tdj|110719|p=670}}
* {{R:nan:tdj|46806|p=670}}
==日語==
{{ja-kanjitab|ひ|さん|yomi=kan,o|alt=ヒ酸}}
{{swp|ja:ヒ酸}}
===詞源===
{{blend|ja|砒素|酸|tr1=hiso|tr2=san|t1=[[砷]]}}。
===發音===
{{ja-pron|acc=0|ひさん|devm=1|acc_ref=DJR}}
===名詞===
{{ja-noun|ひさん}}
# [[砷酸]]
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0005816700|<sup>▲</sup>砒酸}}
{{topics|ja|酸|無機化合物}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=비산}}
# {{hanja form of|비산}}
pj5r7z471shbkidkj4yj626duysapra
守宮
0
1062469
9759387
8298359
2026-05-14T12:02:20Z
Tony85poon
62011
/* 漢語 */ wiki
9759387
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=守宫}}
{{wiki}}
===發音===
{{zh-pron
|m=shǒugōng
|c=sau2 gung1
|mn=tp:siú-kiong
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[壁虎]]
====同義詞====
{{zh-dial|壁虎}}
====派生詞====
{{CJKV||しゅ%きゅう|j=守%宮|수궁}}
{{zh-cat|蜥蜴}}
==日語==
===詞源1===
{{ja-kanjitab|yomi=irr|sort=やもり}}
{{wikipedia|lang=ja|ヤモリ科}}
{{wikipedia|lang=ja|ヤモリ下目}}
{{rfe|ja|是否為熟字訓?也許對應{{ja-r|家守|やもり}}“看家”;對比{{ja-r|不知火|しらぬい}}}}
====發音====
{{ja-pron|やもり|acc=1|acc_ref=DJR,NHK}}
====替代寫法====
* {{ja-l|家守}}
====名詞====
{{ja-noun|やもり|ヤモリ}}
# [[壁虎]]
=====衍生詞=====
* {{ja-r|トッケイ守宮|トッケイ ヤモリ}}
===詞源2===
{{ja-kanjitab|しゅ|きゅう|yomi=o}}
====發音====
{{ja-pron|しゅきゅう|acc=0|acc_ref=DJR}}
====名詞====
{{ja-noun|しゅきゅう}}
# [[壁虎]]
===來源===
<references/>
[[Category:日語 蜥蜴|やもり]]
34wxc1i02lm2kvwoae0zctsdn2858i8
贊比亞
0
1088469
9759421
8195809
2026-05-14T15:14:34Z
TongcyDai
53191
9759421
wikitext
text/x-wiki
{{also|赞比亚}}
==漢語==
{{zh-forms|s=赞比亚|gloss=-}}
===發音===
{{zh-pron
|m=Zànbǐ亞
|c=zaan3 bei2 aa3
|mn=ml:Chàn-pí-a
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{sid|zh|Q953}}{{lb|zh|中國大陸}} {{place|zh|國家|r/南非|capital=盧薩卡|official=尚比亞共和國}}
====近義詞====
* {{qualifier|臺灣}} {{zh-l|尚比亞}}
====翻譯====
{{trans-top|id=Q953|country in Southern Africa}}
* 南非語:{{t+|af|Zambië}}
* 阿姆哈拉語:{{t|am|ዛምቢያ}}
* 阿拉伯語:{{t+|ar|زَامْبِيَا|f|tr=zambiyā}}
* 亞美尼亞語:{{t+|hy|Զամբիա}}
* 阿斯圖里亞斯語:{{t+|ast|Zambia}}
* 巴厘語:{{t|ban|Zambia}}
* 白俄羅斯語:{{t|be|За́мбія|f}}
* 孟加拉語:{{t+|bn|জাম্বিয়া}}
* 伯塔維語:{{t|bew|Sambia}}
* 布列塔尼語:{{t+|br|Zambia}}
* 保加利亞語:{{t|bg|За́мбия|f}}
* 緬甸語:{{t|my|ဇမ်ဘီယာ}}
* 切羅基語:{{t|chr|ᏌᎻᏈᏯ}}
* 齊切瓦語:{{t|ny|Zambia}}
* 捷克語:{{t+|cs|Zambie|f}}
* 丹麥語:{{t|da|Zambia}}
* 荷蘭語:{{t+|nl|Zambia}}
* 英語:{{t+|en|Zambia}}
* 世界語:{{t+|eo|Zambio}}
* 法羅語:{{t|fo|Sambia|n}}
* 芬蘭語:{{t+|fi|Sambia}}
* 法語:{{t+|fr|Zambie|f}}
* 格魯吉亞語:{{t+|ka|ზამბია}}
* 德語:{{t+|de|Sambia|n}}
* 希臘語:{{t+|el|Ζάμπια|f}}
* 豪薩語:{{t|ha|Zambiya}}
* 印地語:{{t+|hi|ज़ाम्बिया}}
* 匈牙利語:{{t+|hu|贊比亞}}
* 印尼語:{{t+|id|贊比亞}}
* 愛爾蘭語:{{t|ga|Saimbia|alt=an tSaimbia|f}}
* 意大利語:{{t+|it|贊比亞|m}}
* 日語:{{t+|ja|ザンビア|tr=Zanbia}}
* 爪哇語:{{t|jv|贊比亞}}
* 卡倫金語:{{t|kln|贊比亞}}
* 卡姆巴語:{{t|kam|贊比亞}}
* 哈薩克語:{{t+|kk|Замбия}}
* 高棉語:{{t+|km|ហ្សំប៊ី}}
* 基庫尤語:{{t|ki|贊比亞}}
* 朝鮮語:{{t+|ko|^잠비아}}
* 吉爾吉斯語:{{t+|ky|Замбия}}
* 老撾語:{{t|lo|ຊຳບີ}}
* 拉脫維亞語:{{t+|lv|Zambija|f}}
* 立陶宛語:{{t+|lt|Zambija|f}}
* 盧希亞語:{{t|luy|贊比亞}}
* 盧歐語:{{t|luo|贊比亞}}
* 馬其頓語:{{t+|mk|За́мбија|f}}
* 馬拉雅拉姆語:{{t|ml|സാംബിയ}}、{{t|ml|ജംബിയ}}
* 馬爾他語:{{t|mt|Żambja|alt=iż-Żambja}}
* 毛利語:{{t|mi|Tāmipia}}
* 梅魯語:{{t|mer|贊比亞}}
* 蒙古語:{{t|mn|Замби}}
* 諾曼語:{{t|nrf|贊比亞}} {{qualifier|澤西}}
* 挪威語:
*: 書面挪威語:{{t+|nb|贊比亞}}
*: 新挪威語:{{t+|nn|贊比亞}}
* 波斯語:{{t|fa|زامبیا|tr=zâmbiyâ}}
* 波蘭語:{{t+|pl|贊比亞|f}}
* 葡萄牙語:{{t+|pt|Zâmbia|f}}
* 羅馬尼亞語:{{t+|ro|贊比亞|f}}
* 俄語:{{t+|ru|За́мбия|f}}
* 低地蘇格蘭語:{{t|sco|Zambie}}
* 塞爾維亞-克羅地亞語:*: 西里爾字母:{{t|sh|Замбија|f}}
*: 拉丁語:{{t+|sh|Zambija|f}}
* 僧加羅語:{{t|si|සැම්බියා}}
* 斯洛伐克語:{{t|sk|贊比亞|f}}
* 斯洛文尼亞語:{{t+|sl|Zámbija|f}}
* 西班牙語:{{t+|es|贊比亞|f}}
* 巽他語:{{t|su|贊比亞}}
* 斯瓦希里語:{{t+|sw|贊比亞}}
* 瑞典語:{{t+|sv|贊比亞}}
* 他加祿語:{{t|tl|Sambiya}}
* 塔吉克語:{{t|tg|Замбия}}
* 泰米爾語:{{t+|ta|சாம்பியா}}、{{t|ta|ஜம்பியா}}
* 泰盧固語:{{t+|te|జాంబియా}}
* 泰語:{{t+|th|แซมเบีย}}
* 藏語:{{t|bo|ཛམ་བི་ཡ}}
* 提格里尼亞語:{{t|ti|ዛምቢያ}}
* 土耳其語:{{t+|tr|Zambiya}}
* 烏克蘭語:{{t+|uk|За́мбія|f}}
* 烏爾都語:{{t|ur|زامبیا|tr=zāmbiyā}}
* 維吾爾語:{{t|ug|زامبىيە}}
* 烏茲別克語:{{t+|uz|Zambiya}}
* 越南語:{{t|vi|Dăm-bi-a}}
* 約魯巴語:{{t|yo|Sáńbíà}}
* 壯語:{{t|za|Canbijya}}
{{trans-bottom}}
bnp5h89j1sf3d60ll9u8ui890ml7now
9759422
9759421
2026-05-14T15:14:52Z
TongcyDai
53191
9759422
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=赞比亚|gloss=-}}
===發音===
{{zh-pron
|m=Zànbǐ亞
|c=zaan3 bei2 aa3
|mn=ml:Chàn-pí-a
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{sid|zh|Q953}}{{lb|zh|中國大陸}} {{place|zh|國家|r/南非|capital=盧薩卡|official=尚比亞共和國}}
====近義詞====
* {{qualifier|臺灣}} {{zh-l|尚比亞}}
====翻譯====
{{trans-top|id=Q953|南部非洲國家}}
* 南非語:{{t+|af|Zambië}}
* 阿姆哈拉語:{{t|am|ዛምቢያ}}
* 阿拉伯語:{{t+|ar|زَامْبِيَا|f|tr=zambiyā}}
* 亞美尼亞語:{{t+|hy|Զամբիա}}
* 阿斯圖里亞斯語:{{t+|ast|Zambia}}
* 巴厘語:{{t|ban|Zambia}}
* 白俄羅斯語:{{t|be|За́мбія|f}}
* 孟加拉語:{{t+|bn|জাম্বিয়া}}
* 伯塔維語:{{t|bew|Sambia}}
* 布列塔尼語:{{t+|br|Zambia}}
* 保加利亞語:{{t|bg|За́мбия|f}}
* 緬甸語:{{t|my|ဇမ်ဘီယာ}}
* 切羅基語:{{t|chr|ᏌᎻᏈᏯ}}
* 齊切瓦語:{{t|ny|Zambia}}
* 捷克語:{{t+|cs|Zambie|f}}
* 丹麥語:{{t|da|Zambia}}
* 荷蘭語:{{t+|nl|Zambia}}
* 英語:{{t+|en|Zambia}}
* 世界語:{{t+|eo|Zambio}}
* 法羅語:{{t|fo|Sambia|n}}
* 芬蘭語:{{t+|fi|Sambia}}
* 法語:{{t+|fr|Zambie|f}}
* 格魯吉亞語:{{t+|ka|ზამბია}}
* 德語:{{t+|de|Sambia|n}}
* 希臘語:{{t+|el|Ζάμπια|f}}
* 豪薩語:{{t|ha|Zambiya}}
* 印地語:{{t+|hi|ज़ाम्बिया}}
* 匈牙利語:{{t+|hu|贊比亞}}
* 印尼語:{{t+|id|贊比亞}}
* 愛爾蘭語:{{t|ga|Saimbia|alt=an tSaimbia|f}}
* 意大利語:{{t+|it|贊比亞|m}}
* 日語:{{t+|ja|ザンビア|tr=Zanbia}}
* 爪哇語:{{t|jv|贊比亞}}
* 卡倫金語:{{t|kln|贊比亞}}
* 卡姆巴語:{{t|kam|贊比亞}}
* 哈薩克語:{{t+|kk|Замбия}}
* 高棉語:{{t+|km|ហ្សំប៊ី}}
* 基庫尤語:{{t|ki|贊比亞}}
* 朝鮮語:{{t+|ko|^잠비아}}
* 吉爾吉斯語:{{t+|ky|Замбия}}
* 老撾語:{{t|lo|ຊຳບີ}}
* 拉脫維亞語:{{t+|lv|Zambija|f}}
* 立陶宛語:{{t+|lt|Zambija|f}}
* 盧希亞語:{{t|luy|贊比亞}}
* 盧歐語:{{t|luo|贊比亞}}
* 馬其頓語:{{t+|mk|За́мбија|f}}
* 馬拉雅拉姆語:{{t|ml|സാംബിയ}}、{{t|ml|ജംബിയ}}
* 馬爾他語:{{t|mt|Żambja|alt=iż-Żambja}}
* 毛利語:{{t|mi|Tāmipia}}
* 梅魯語:{{t|mer|贊比亞}}
* 蒙古語:{{t|mn|Замби}}
* 諾曼語:{{t|nrf|贊比亞}} {{qualifier|澤西}}
* 挪威語:
*: 書面挪威語:{{t+|nb|贊比亞}}
*: 新挪威語:{{t+|nn|贊比亞}}
* 波斯語:{{t|fa|زامبیا|tr=zâmbiyâ}}
* 波蘭語:{{t+|pl|贊比亞|f}}
* 葡萄牙語:{{t+|pt|Zâmbia|f}}
* 羅馬尼亞語:{{t+|ro|贊比亞|f}}
* 俄語:{{t+|ru|За́мбия|f}}
* 低地蘇格蘭語:{{t|sco|Zambie}}
* 塞爾維亞-克羅地亞語:*: 西里爾字母:{{t|sh|Замбија|f}}
*: 拉丁語:{{t+|sh|Zambija|f}}
* 僧加羅語:{{t|si|සැම්බියා}}
* 斯洛伐克語:{{t|sk|贊比亞|f}}
* 斯洛文尼亞語:{{t+|sl|Zámbija|f}}
* 西班牙語:{{t+|es|贊比亞|f}}
* 巽他語:{{t|su|贊比亞}}
* 斯瓦希里語:{{t+|sw|贊比亞}}
* 瑞典語:{{t+|sv|贊比亞}}
* 他加祿語:{{t|tl|Sambiya}}
* 塔吉克語:{{t|tg|Замбия}}
* 泰米爾語:{{t+|ta|சாம்பியா}}、{{t|ta|ஜம்பியா}}
* 泰盧固語:{{t+|te|జాంబియా}}
* 泰語:{{t+|th|แซมเบีย}}
* 藏語:{{t|bo|ཛམ་བི་ཡ}}
* 提格里尼亞語:{{t|ti|ዛምቢያ}}
* 土耳其語:{{t+|tr|Zambiya}}
* 烏克蘭語:{{t+|uk|За́мбія|f}}
* 烏爾都語:{{t|ur|زامبیا|tr=zāmbiyā}}
* 維吾爾語:{{t|ug|زامبىيە}}
* 烏茲別克語:{{t+|uz|Zambiya}}
* 越南語:{{t|vi|Dăm-bi-a}}
* 約魯巴語:{{t|yo|Sáńbíà}}
* 壯語:{{t|za|Canbijya}}
{{trans-bottom}}
kh9zuc44ae0wae1fyguvegtix91mt9l
9759424
9759422
2026-05-14T15:15:49Z
TongcyDai
53191
9759424
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=赞比亚|gloss=-}}
===發音===
{{zh-pron
|m=Zànbǐ亞
|c=zaan3 bei2 aa3
|mn=ml:Chàn-pí-a
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{sid|zh|Q953}}{{lb|zh|中國大陸}} {{place|zh|國家|r/南非|capital=盧薩卡|official=贊比亞共和國}}
====近義詞====
* {{qualifier|臺灣}} {{zh-l|尚比亞}}
====翻譯====
{{trans-top|id=Q953|南部非洲國家}}
* 南非語:{{t+|af|Zambië}}
* 阿姆哈拉語:{{t|am|ዛምቢያ}}
* 阿拉伯語:{{t+|ar|زَامْبِيَا|f|tr=zambiyā}}
* 亞美尼亞語:{{t+|hy|Զամբիա}}
* 阿斯圖里亞斯語:{{t+|ast|Zambia}}
* 巴厘語:{{t|ban|Zambia}}
* 白俄羅斯語:{{t|be|За́мбія|f}}
* 孟加拉語:{{t+|bn|জাম্বিয়া}}
* 伯塔維語:{{t|bew|Sambia}}
* 布列塔尼語:{{t+|br|Zambia}}
* 保加利亞語:{{t|bg|За́мбия|f}}
* 緬甸語:{{t|my|ဇမ်ဘီယာ}}
* 切羅基語:{{t|chr|ᏌᎻᏈᏯ}}
* 齊切瓦語:{{t|ny|Zambia}}
* 捷克語:{{t+|cs|Zambie|f}}
* 丹麥語:{{t|da|Zambia}}
* 荷蘭語:{{t+|nl|Zambia}}
* 英語:{{t+|en|Zambia}}
* 世界語:{{t+|eo|Zambio}}
* 法羅語:{{t|fo|Sambia|n}}
* 芬蘭語:{{t+|fi|Sambia}}
* 法語:{{t+|fr|Zambie|f}}
* 格魯吉亞語:{{t+|ka|ზამბია}}
* 德語:{{t+|de|Sambia|n}}
* 希臘語:{{t+|el|Ζάμπια|f}}
* 豪薩語:{{t|ha|Zambiya}}
* 印地語:{{t+|hi|ज़ाम्बिया}}
* 匈牙利語:{{t+|hu|贊比亞}}
* 印尼語:{{t+|id|贊比亞}}
* 愛爾蘭語:{{t|ga|Saimbia|alt=an tSaimbia|f}}
* 意大利語:{{t+|it|贊比亞|m}}
* 日語:{{t+|ja|ザンビア|tr=Zanbia}}
* 爪哇語:{{t|jv|贊比亞}}
* 卡倫金語:{{t|kln|贊比亞}}
* 卡姆巴語:{{t|kam|贊比亞}}
* 哈薩克語:{{t+|kk|Замбия}}
* 高棉語:{{t+|km|ហ្សំប៊ី}}
* 基庫尤語:{{t|ki|贊比亞}}
* 朝鮮語:{{t+|ko|^잠비아}}
* 吉爾吉斯語:{{t+|ky|Замбия}}
* 老撾語:{{t|lo|ຊຳບີ}}
* 拉脫維亞語:{{t+|lv|Zambija|f}}
* 立陶宛語:{{t+|lt|Zambija|f}}
* 盧希亞語:{{t|luy|贊比亞}}
* 盧歐語:{{t|luo|贊比亞}}
* 馬其頓語:{{t+|mk|За́мбија|f}}
* 馬拉雅拉姆語:{{t|ml|സാംബിയ}}、{{t|ml|ജംബിയ}}
* 馬爾他語:{{t|mt|Żambja|alt=iż-Żambja}}
* 毛利語:{{t|mi|Tāmipia}}
* 梅魯語:{{t|mer|贊比亞}}
* 蒙古語:{{t|mn|Замби}}
* 諾曼語:{{t|nrf|贊比亞}} {{qualifier|澤西}}
* 挪威語:
*: 書面挪威語:{{t+|nb|贊比亞}}
*: 新挪威語:{{t+|nn|贊比亞}}
* 波斯語:{{t|fa|زامبیا|tr=zâmbiyâ}}
* 波蘭語:{{t+|pl|贊比亞|f}}
* 葡萄牙語:{{t+|pt|Zâmbia|f}}
* 羅馬尼亞語:{{t+|ro|贊比亞|f}}
* 俄語:{{t+|ru|За́мбия|f}}
* 低地蘇格蘭語:{{t|sco|Zambie}}
* 塞爾維亞-克羅地亞語:*: 西里爾字母:{{t|sh|Замбија|f}}
*: 拉丁語:{{t+|sh|Zambija|f}}
* 僧加羅語:{{t|si|සැම්බියා}}
* 斯洛伐克語:{{t|sk|贊比亞|f}}
* 斯洛文尼亞語:{{t+|sl|Zámbija|f}}
* 西班牙語:{{t+|es|贊比亞|f}}
* 巽他語:{{t|su|贊比亞}}
* 斯瓦希里語:{{t+|sw|贊比亞}}
* 瑞典語:{{t+|sv|贊比亞}}
* 他加祿語:{{t|tl|Sambiya}}
* 塔吉克語:{{t|tg|Замбия}}
* 泰米爾語:{{t+|ta|சாம்பியா}}、{{t|ta|ஜம்பியா}}
* 泰盧固語:{{t+|te|జాంబియా}}
* 泰語:{{t+|th|แซมเบีย}}
* 藏語:{{t|bo|ཛམ་བི་ཡ}}
* 提格里尼亞語:{{t|ti|ዛምቢያ}}
* 土耳其語:{{t+|tr|Zambiya}}
* 烏克蘭語:{{t+|uk|За́мбія|f}}
* 烏爾都語:{{t|ur|زامبیا|tr=zāmbiyā}}
* 維吾爾語:{{t|ug|زامبىيە}}
* 烏茲別克語:{{t+|uz|Zambiya}}
* 越南語:{{t|vi|Dăm-bi-a}}
* 約魯巴語:{{t|yo|Sáńbíà}}
* 壯語:{{t|za|Canbijya}}
{{trans-bottom}}
n9zsxwoffonm4gxy1jhcxoqm9jn1ytb
玄參
0
1089420
9759537
8173403
2026-05-14T22:19:16Z
P1ayer
5118
內容擴充
9759537
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=玄参|t2=玄蔘|alt=玄薓}}
{{zh-wp}}
===發音===
{{zh-pron
|m=xuánshēn
|c=jyun4 sam1
|mn=goân-sim/hiân-som
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 玄參科植物{{w|玄參}}({{taxlink|Scrophularia ningpoensis|species}}),多年生[[草本植物]]
# {{lb|zh|TCM}} 上述植物的乾燥根,作為[[藥材]]有清熱涼血、瀉火解毒、滋陰之效
====近義詞====
* {{zh-l|元參}}
====派生詞====
{{col3|zh|黑玄參}}
agbpyqb14144l8fl53gpricic9nfcps
玄明粉
0
1089669
9759431
6920146
2026-05-14T15:49:10Z
P1ayer
5118
內容擴充
9759431
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=xuánmíngfěn
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|TCM}} 硫酸鹽礦物{{w|芒硝}} (Na<sub>2</sub>SO<sub>4</sub>·10H<sub>2</sub>O) 風化脫水製成,主要成分為{{w|無水芒硝|無水硫酸鈉}}(Na<sub>2</sub>SO<sub>4</sub>),作為[[藥材]]有瀉熱通便、軟堅散結、清熱解毒、清肺解暑、消積和胃之效
02yey5eiql70twrlg9750r05foj1giy
9759717
9759431
2026-05-15T02:35:27Z
Sayonzei
40728
/* 漢語 */
9759717
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=xuánmíngfěn
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|TCM}} 硫酸鹽礦物[[芒硝]] (Na<sub>2</sub>SO<sub>4</sub>·10H<sub>2</sub>O) 風化脫水製成,主要成分為{{w|無水芒硝|無水硫酸鈉}}(Na<sub>2</sub>SO<sub>4</sub>),作為[[藥材]]有瀉熱通便、軟堅散結、清熱解毒、清肺解暑、消積和胃之效
0kjyx67yhq908evqfo6fnchagd3gw6n
異象
0
1116072
9760140
8780259
2026-05-15T05:21:06Z
Apisite
85347
/* 漢語 */ + 莆仙語
9760140
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=异象}}
===讀音===
{{zh-pron
|m=yìxiàng
|c=ji6 zoeng6
|h=pfs=yi-siong
|mn=tw:ī-siōng/twv:īⁿ-siōng
|px=pt:i5 *syorng5/xy:i5 *syoeng5
|cat=n
}}
===釋義===
# {{lb|zh|religion}} {{rfdef|zh}}
===翻譯===
{{翻译-顶}}
* 俄語:[[странный]] [[вид]], [[необычная]] [[внешность]]; [[странное]] [[явление]], [[чудо]]
{{翻译-底}}
3zc9dabtcseoihtn5a0xdygpqo9fr09
9760155
9760140
2026-05-15T06:39:54Z
Fglffer
55252
9760155
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=异象}}
{{wp|zh:}}
===發音===
{{zh-pron
|m=yìxiàng
|c=ji6 zoeng6
|h=pfs=yi-siong
|mn=tw:ī-siōng/twv:īⁿ-siōng
|px=pt:i5 *syorng5/xy:i5 *syoeng5
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|religion}} [[傳達]][[啟示]]的[[超自然]][[現象]]
====派生詞====
{{CJKV|||이상}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=이상}}
# {{hanja form of|이상}}
m83rn0xc2p3v2omctw28iyi3n50fb32
9760175
9760155
2026-05-15T08:24:31Z
Sayonzei
40728
/* 派生詞 */
9760175
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=异象}}
{{wp|zh:}}
===發音===
{{zh-pron
|m=yìxiàng
|c=ji6 zoeng6
|h=pfs=yi-siong
|mn=tw:ī-siōng/twv:īⁿ-siōng
|px=pt:i5 *syorng5/xy:i5 *syoeng5
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|religion}} [[傳達]][[啟示]]的[[超自然]][[現象]]
====派生詞====
{{CJKV||j=異%象|い%しょう|이상}}
==日語==
{{ja-kanjitab|い|しょう|yomi=o}}
===發音===
{{ja-pron|いしょう|acc=0|acc_ref=NKD2}}
===名詞===
{{ja-noun|いしょう|hhira=いしやう}}
# [[不可思議]]的[[現象]],[[奇妙]]的現象
===參考資料===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=이상}}
# {{hanja form of|이상}}
kwhjnv4i1mz1cj49butlx60prp2cha6
南投
0
1150936
9759396
7764131
2026-05-14T12:54:30Z
TongcyDai
53191
9759396
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|lzh|gan|hak:Nàm-thèu-yen|cdo:Nàng-dàu|nan:Lâm-tâu}}
[[File:Taiwan ROC political division map Nantou County.svg|thumb|]]
===詞源===
來自{{bor|zh|ppu|Ramtau}}。
===發音===
{{zh-pron
|m=Nántóu
|c=naam4 tau4
|h=pfs=Nàm-thèu
|md=Nàng-dàu
|mn=tw:Lâm-tâu/xm,zz:Lâm-tô͘/qz:Lâm-tiô
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{zh-div|縣}} {{sid|zh|Q82357}}{{place|zh|縣|中部|c/臺灣}}
# {{zh-div|市}} {{sid|zh|Q715171}}{{place|zh|市|county/南投|c/臺灣}}
{{zh-cat|臺灣城市}}
==日語==
{{ja-kanjitab|なん|とう|yomi=o}}
===專有名詞===
{{ja-pos|proper|なんとう}}
# {{place|ja|縣/市|c/臺灣}}
{{C|ja|城市|臺灣}}
dhh2arccqv3hib5db4btdlh8cr67v77
9759397
9759396
2026-05-14T12:54:48Z
TongcyDai
53191
9759397
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|lzh|gan|hak:Nàm-thèu-yen|cdo:Nàng-dàu|nan:Lâm-tâu}}
[[File:Taiwan ROC political division map Nantou County.svg|thumb|]]
===詞源===
來自{{bor|zh|ppu|Ramtau}}。
===發音===
{{zh-pron
|m=Nántóu
|c=naam4 tau4
|h=pfs=Nàm-thèu
|md=Nàng-dàu
|mn=tw:Lâm-tâu/xm,zz:Lâm-tô͘/qz:Lâm-tiô
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q82357}}{{zh-div|縣}} {{place|zh|縣|中部|c/臺灣}}
# {{sid|zh|Q715171}}{{zh-div|市}} {{place|zh|市|county/南投|c/臺灣}}
{{zh-cat|臺灣城市}}
==日語==
{{ja-kanjitab|なん|とう|yomi=o}}
===專有名詞===
{{ja-pos|proper|なんとう}}
# {{place|ja|縣/市|c/臺灣}}
{{C|ja|城市|臺灣}}
gih5slv4nugwz7i37qkqn7urkbzvsas
9759398
9759397
2026-05-14T12:56:52Z
TongcyDai
53191
9759398
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|lzh|gan|hak:Nàm-thèu-yen|cdo:Nàng-dàu|nan:Lâm-tâu}}
[[File:Taiwan ROC political division map Nantou County.svg|thumb|]]
===詞源===
來自{{bor|zh|ppu|Ramtau}}。
===發音===
{{zh-pron
|m=Nántóu
|c=naam4 tau4
|h=pfs=Nàm-thèu
|md=Nàng-dàu
|mn=tw:Lâm-tâu/xm,zz:Lâm-tô͘/qz:Lâm-tiô
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q82357}}{{zh-div|縣}} {{place|zh|縣|中部|c/臺灣}}
# {{sid|zh|Q715171}}{{zh-div|市}} {{place|zh|市/行政中心|county/南投|c/臺灣}}
{{zh-cat|臺灣城市}}
==日語==
{{ja-kanjitab|なん|とう|yomi=o}}
===專有名詞===
{{ja-pos|proper|なんとう}}
# {{place|ja|縣/市|c/臺灣}}
{{C|ja|城市|臺灣}}
raay85k06v6refc8tiysjc6itypqdfd
9759399
9759398
2026-05-14T13:00:26Z
TongcyDai
53191
9759399
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|lzh|gan|hak:Nàm-thèu-yen|cdo:Nàng-dàu|nan:Lâm-tâu}}
[[File:Taiwan ROC political division map Nantou County.svg|thumb|]]
===詞源===
來自{{bor|zh|ppu|Ramtau}}。
===發音===
{{zh-pron
|m=Nántóu
|c=naam4 tau4
|h=pfs=Nàm-thèu;hrs=h:nam teu
|md=Nàng-dàu
|mn=tw:Lâm-tâu/xm,zz:Lâm-tô͘/qz:Lâm-tiô
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q82357}}{{zh-div|縣}} {{place|zh|縣|中部|c/臺灣}}
# {{sid|zh|Q715171}}{{zh-div|市}} {{place|zh|市/行政中心|county/南投|c/臺灣}}
==日語==
{{ja-kanjitab|なん|とう|yomi=o}}
===專有名詞===
{{ja-pos|proper|なんとう}}
# {{tcl|ja|南投|id=Q82357,Q715171}}
cioxb5eknk7itunfiafw76zrb288ste
墨西哥城
0
1168073
9759447
6969885
2026-05-14T17:11:57Z
TongcyDai
53191
9759447
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=31|Mexico}}
===發音===
{{zh-pron
|m=Mòxīgēchéng
|c=mak6 sai1 go1 sing4
|cat=propn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q1489}}{{place|zh|caplc|c/墨西哥}}
====近義詞====
* {{zh-l|墨城}}
* {{zh-l|墨京}}
====翻譯====
{{trans-top|墨西哥的首都}}
* 南非語:{{t|af|Meksikostad}}
* 阿爾巴尼亞語:{{t|sq|Meksiko}}
* 阿穆茲戈語:
*: 格雷羅阿穆茲戈語:{{t|amu|Sndá'}}
* 阿拉伯語:{{t|ar|مَكْسِيكُو|m}}、{{t|ar|مَدِينَة مَكْسِيكُو|f}}、{{t|ar|مِكْسِيكُو سِيتِي|m}}
* 亞美尼亞語:{{t|hy|Մեխիկո}}
* 阿薩姆語:{{t|as|মেক্সিকো চহৰ}}
* 阿斯圖里亞斯語:{{t+|ast|Ciudá de México}}、{{t+|ast|Ciudá de Méxicu}}
* 阿塞拜疆語:{{t|az|Mexiko}}
* 巴斯克語:{{t|eu|Mexiko Hiria}}
* 白俄羅斯語:{{t|be|Ме́хіка|m}}、{{t|be|Мэ́хіка|m}}
* 布列塔尼語:{{t+|br|Mec'hiko}}
* 保加利亞語:{{t+|bg|Ме́ксико|m}}
* 加泰羅尼亞語:{{t|ca|ciutat de Mèxic|f}}、{{t+|ca|Mèxic|m}}
* 捷克語:{{t+|cs|Mexiko|n}}
* 丹麥語:{{t|da|Mexico City}}
* 荷蘭語:{{t+|nl|Mexico|n}}、{{t|nl|Mexico-Stad|n}}
* 英語:{{t+|en|Mexico City}}
* 世界語:{{t+|eo|Meksikurbo}}
* 愛沙尼亞語:{{t+|et|México}}
* 法拉法拉語:{{t|gur|Mehiko-gãn}}
* 法羅語:{{t|fo|Meksikobýur|m}}
* 芬蘭語:{{t+|fi|México}}、{{t+|fi|Mexico City}}
* 法語:{{t+|fr|Mexico|f}} {{qualifier|cf. {{t|fr|Ville de Mexico|f}}}}
* 加利西亞語:{{t+|gl|Cidade de México|f}}
* 格魯吉亞語:{{t|ka|ქალაქი მექსიკა}}、{{t|ka|მეხიკო}}
* 德語:{{t+|de|Mexiko-Stadt|n}}、{{t+|de|Mexiko|n}} {{qualifier|過時}}
* 希臘語:{{t|el|Πόλη του Μεξικό|f}}
* 希伯來語:{{t|he|מקסיקו סיטי|f|tr=meksiko siti}}
* 印地語:{{t|hi|मेक्सिको नगर}}
* 匈牙利語:{{t+|hu|Mexikóváros}}
* 因特語:{{t+|ia|Mexico}}、{{t|ia|citate de Mexico}}
* 愛爾蘭語:{{t|ga|Cathair Mheicsiceo|f}}
* 意大利語:{{t+|it|Città del Messico|f}}
* 日語:{{t|ja|メキシコ市|tr=Mekishiko-shi}}、{{t+|ja|メキシコシティ|tr=Mekishiko-shiti}}
* 哈薩克語:{{t|kk|Мехико}}
* 朝鮮語:{{t|ko|^멕시코시티}}
* 吉爾吉斯語:{{t|ky|Мехико}}
* 拉科塔語:{{t|lkt|Spaóla Otȟúŋwahe|lit=Mexican's city}}
* 拉丁語:{{t|la|Mexicopolis}}、{{t|la|Mexicum}}
* 拉脫維亞語:{{t|lv|Mehiko}}
* 立陶宛語:{{t|lt|Meksikas|m}}
* 馬其頓語:{{t|mk|Mexico|m|alt=Мексико}}
* 馬來語:{{t|ms|Kota Mexico}}
* 馬爾他語:{{t|mt|Belt tal-Messiku|alt=il-Belt tal-Messiku}}
* 馬特拉爾辛卡語:{{t|mat|Imtojáti}}
* 米斯特克語支:
*: 阿爾科紹卡米斯特克語:{{t|xta|Kǒ'yo}}
* 納瓦特爾語:
*: 中瓦斯特卡納瓦特爾語:{{t|nch|Mexkoaltepetl}}
*: 中納瓦特爾語:{{t|nhn|Altepetl Mexihco}}
*: 古典納瓦特爾語:{{t|nci|Altepetl Mexihco}}
*: 西瓦斯特卡納瓦特爾語:{{t|nhw|Mexkoaltepetl}}
* 納瓦霍語:{{t|nv|Naakaii Bikin Haalʼá}}
* 挪威語:*: 書面挪威語:{{t|nb|Mexico by}}
*: 新挪威語:{{t|nn|Mexico by}}
* 波斯語:{{t|fa|مکزیکوسیتی|tr=mekziko-siti}}
* 波蘭語:{{t+|pl|Meksyk|m-in}}、{{t|pl|Miasto Meksyk|n}}
* 葡萄牙語:{{t+|pt|México|m}}、{{t+|pt|Cidade do México|f}}
* 羅馬尼亞語:{{t+|ro|Mexico}}
* 俄語:{{t+|ru|Ме́хико|m-in}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Мексико}}、{{t|sh|Мексико Сити|m}}
*: 拉丁字母:{{t+|sh|Meksiko}}、{{t|sh|Meksiko Siti|m}}
* 西西里語:{{t|scn|Cità dû Mèssicu|f}}
* 斯洛伐克語:{{t|sk|Mexiko|n}}
* 斯洛文尼亞語:{{t|sl|Meksiko|m}}
* 西班牙語:{{t+|es|México|m}}、{{t+|es|Ciudad de México|f}}
* 斯瓦希里語:{{t|sw|mji wa Meksiko}}
* 瑞典語:{{t+|sv|Mexico City|n}}
* 他加祿語:{{t|tl|Lungsod ng Mehiko}}
* 塔吉克語:{{t|tg|Мехико}}
* 泰語:{{t|th|เม็กซิโกซิตี้|tr=mék-sí-goo-sí-dtii}}
* 土耳其語:{{t|tr|Meksika Kenti}}、{{t+|tr|Meksika Şehri}}、{{t+|tr|Meksiko}}
* 土庫曼語:{{t|tk|Mehiko}}
* 烏克蘭語:{{t+|uk|Ме́хіко|m}}
* 烏茲別克語:{{t+|uz|Mexiko}}
{{trans-bottom}}
ps7kzdqc6j2nu6lz3hihvu2bxymuzkw
對沖基金
0
1183034
9759442
6975751
2026-05-14T16:45:52Z
P1ayer
5118
內容擴充
9759442
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=对冲基金|type=22}}
{{zh-wp}}
===讀音===
{{zh-pron
|m=duìchōng jījīn
|c=deoi3 cung1 gei1 gam1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{zh-alt-name|避險基金}}
===翻譯===
{{翻譯-頂}}
* {{en}}:hedge fund;
{{翻譯-底}}
{{C|zh|金融|股票市場}}
4wnu3vzh9edkej5smi2k7uqlh8iu7fy
9759718
9759442
2026-05-15T02:36:38Z
Sayonzei
40728
9759718
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=对冲基金|type=22}}
{{zh-wp}}
===發音===
{{zh-pron
|m=duìchōng jījīn
|c=deoi3 cung1 gei1 gam1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|金融}} 由金融[[期貨]]、金融[[選擇權]]等[[衍生]]性金融[[商品]]與金融[[組織]][[結合]]後,以[[盈利]]為目的的金融基金
#: {{syn|zh|避險基金}}
====翻譯====
{{trans-top|金融基金}}
* 保加利亞語:{{t|bg|хедж фонд|m}}
* 荷蘭語:{{t+|nl|hedgefonds|n}}
* 英語:{{t+|en|hedge fund}}
* 芬蘭語:{{t|fi|hedge-rahasto}}、{{t|fi|vipurahasto}}、{{t|fi|suojausrahasto}}
* 法語:{{t+|fr|fonds spéculatif|m}}
* 格魯吉亞語:{{t|ka|ჰეჯ-ფონდი}}
* 德語:{{t+|de|Hedgefonds|m}}
* 冰島語:{{t|is|vogunarsjóður|m}}
* 日語:{{t|ja|ヘッジファンド|tr=hejji fando}}
* 挪威語:{{t|no|hekkefond|n}}
* 俄語:{{t+|ru|хедж-фонд|m}}
* 西班牙語:{{t|es|fondo de cobertura|m}}
* 瑞典語:{{t+|sv|hedgefond|c}}
{{trans-bottom}}
{{C|zh|股票市場}}
bb0gokpla9vhc3q1m6rwti1e8487u78
新北
0
1227523
9759402
8814769
2026-05-14T13:56:21Z
TongcyDai
53191
9759402
wikitext
text/x-wiki
==漢語==
{{zh-forms|2=short for {{zh-l|*臺北}}}}
{{zh-wp|zh|yue|lzh:新北市|hak:Sîn-pet-sṳ|cdo:Sĭng-báe̤k|nan:Sin-pak|wuu:新北市}}
[[File:Taiwan ROC political division map New Taipei City.svg|thumb|]]
===詞源===
{{l|zh|新}} + {{l|zh|臺北}}。
===發音===
{{zh-pron
|m=Xīnběi
|c=san1 bak1
|h=pfs=Sîn-pet
|md=Sĭng-báe̤k
|mn=Sin-pak
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q244898}}{{zh-div|市}} {{place|zh|直轄市|北部|c/臺灣}}
====同義詞====
* {{qualifier|舊名}} {{zh-l|[[臺北]][[縣]]}}
====派生詞====
{{CJKV||j=新%北|^しん%ほく|^신북|Tân Bắc}}
'''其他''':
* {{desc|bor=y|en|New Taipei}}
* {{desc|bor=y|ko|신베이}}
====翻譯====
{{trans-top|位於臺灣北部的直轄市}}
* 南非語:{{t|af|Nieu-Taipei}}
* 捷克語:{{t|cs|Nová Tchaj-pej|f}}
* 英語:{{t+|en|New Taipei}}
* 法語:{{t|fr|Nouveau Taipei|f}}
* 德語:{{t|de|Neu-Taipeh|n}}
* 印尼語:{{t|id|Taipei Baru}}
* 日語:{{t|ja|新北|tr=しんほく, Shinhoku}}
* 朝鮮語:{{t|ko|신베이시}}
* 越南語:{{t|vi|Tân Bắc}} ({{t|vi|新北}})
{{trans-bottom}}
==日語==
{{ja-kanjitab|しん|ほく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんほく}}
# {{place|ja|直轄市|p/臺灣|c/中華民國}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hangeul=신북|rv=Sinbuk}}
# {{hanja form of|신북|}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Tân Bắc|}}
bw26osmsyc4lwl8442xlllsn65ri5yb
9759403
9759402
2026-05-14T13:57:24Z
TongcyDai
53191
9759403
wikitext
text/x-wiki
==漢語==
{{zh-forms|2=short for {{zh-l|*臺北}}}}
{{zh-wp|zh|yue|lzh:新北市|hak:Sîn-pet-sṳ|cdo:Sĭng-báe̤k|nan:Sin-pak|wuu:新北市}}
[[File:Taiwan ROC political division map New Taipei City.svg|thumb|]]
===詞源===
{{l|zh|新}} + {{l|zh|臺北}}。
===發音===
{{zh-pron
|m=Xīnběi
|c=san1 bak1
|h=pfs=Sîn-pet
|md=Sĭng-báe̤k
|mn=Sin-pak
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q244898}}{{zh-div|市}} {{place|zh|special municipality|北部|c/臺灣}}
====同義詞====
* {{qualifier|舊名}} {{zh-l|[[臺北]][[縣]]}}
====派生詞====
{{CJKV||j=新%北|^しん%ほく|^신북|Tân Bắc}}
'''其他''':
* {{desc|bor=y|en|New Taipei}}
* {{desc|bor=y|ko|신베이}}
====翻譯====
{{trans-top|位於臺灣北部的直轄市}}
* 南非語:{{t|af|Nieu-Taipei}}
* 捷克語:{{t|cs|Nová Tchaj-pej|f}}
* 英語:{{t+|en|New Taipei}}
* 法語:{{t|fr|Nouveau Taipei|f}}
* 德語:{{t|de|Neu-Taipeh|n}}
* 印尼語:{{t|id|Taipei Baru}}
* 日語:{{t|ja|新北|tr=しんほく, Shinhoku}}
* 朝鮮語:{{t|ko|신베이시}}
* 越南語:{{t|vi|Tân Bắc}} ({{t|vi|新北}})
{{trans-bottom}}
==日語==
{{ja-kanjitab|しん|ほく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんほく}}
# {{place|ja|直轄市|p/臺灣|c/中華民國}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hangeul=신북|rv=Sinbuk}}
# {{hanja form of|신북|}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Tân Bắc|}}
2dlupqdtu42f8vnt4hkgi3kyu9o1hjf
新竹
0
1228618
9759405
7768623
2026-05-14T14:04:29Z
TongcyDai
53191
9759405
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp|zh|yue|lzh|cdo:Sĭng-dé̤ṳk|nan:Sin-tek}}
[[File:Taiwan ROC political division map Hsinchu County.svg|thumb|]]
===詞源===
來自{{l|zh|新}} + {{l|zh|竹塹}},源自1878年[[:w:臺灣清治時期|清治臺灣]]的新政改革。新竹[[轄區]]包括{{w|竹塹堡}}週遭[[腹地]]。
===發音===
{{zh-pron
|m=Xīnzhú
|c=san1 zuk1
|h=pfs=Sîn-chuk
|md=Sĭng-dé̤ṳk
|mn=tw:Sin-tek/xm,qz,zz:Sin-tiok
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q249994}}{{zh-div|市}} {{place|en|city|西北部|c/臺灣}}
# {{sid|zh|Q74054}}{{zh-div|縣}} {{place|en|county|西北部|c/臺灣}}
====同義詞====
* {{zh-l|風城}}
====派生詞====
* {{desc|bor=1|en|Hsinchu}}, {{l|en|Hsin-chu}}, {{l|en|Xinzhu}}
{{zh-cat|臺灣城市}}
==日語==
{{ja-kanjitab|しん|ちく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんちく}}
# {{place|ja|市/和/縣|西北部|c/臺灣}}
[[Category:日語 城市|しんちく]]
oz3szq80i26znksqoz9ay2aplb7oymd
9759406
9759405
2026-05-14T14:07:35Z
TongcyDai
53191
9759406
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp|zh|yue|lzh|cdo:Sĭng-dé̤ṳk|nan:Sin-tek}}
[[File:Taiwan ROC political division map Hsinchu County.svg|thumb|]]
===詞源===
來自{{l|zh|新}} + {{l|zh|竹塹}},源自1878年[[:w:臺灣清治時期|清治臺灣]]的新政改革。新竹[[轄區]]包括{{w|竹塹堡}}週遭[[腹地]]。
===發音===
{{zh-pron
|m=Xīnzhú
|c=san1 zuk1
|h=pfs=Sîn-chuk
|md=Sĭng-dé̤ṳk
|mn=tw:Sin-tek/xm,qz,zz:Sin-tiok
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q249994}}{{zh-div|市}} {{place|en|city|西北部|c/臺灣}}
# {{sid|zh|Q74054}}{{zh-div|縣}} {{place|en|county|西北部|c/臺灣}}
====同義詞====
* {{zh-l|風城}}
====派生詞====
* {{desc|bor=1|en|Hsinchu}}, {{l|en|Hsin-chu}}, {{l|en|Xinzhu}}
==日語==
{{ja-kanjitab|しん|ちく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんちく}}
# {{tcl|ja|Hsinchu|id=Q249994,Q74054}}
eylwq6kctn1z9lvw5hat3uraki0jg68
9759407
9759406
2026-05-14T14:07:46Z
TongcyDai
53191
9759407
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp|zh|yue|lzh|cdo:Sĭng-dé̤ṳk|nan:Sin-tek}}
[[File:Taiwan ROC political division map Hsinchu County.svg|thumb|]]
===詞源===
來自{{l|zh|新}} + {{l|zh|竹塹}},源自1878年[[:w:臺灣清治時期|清治臺灣]]的新政改革。新竹[[轄區]]包括{{w|竹塹堡}}週遭[[腹地]]。
===發音===
{{zh-pron
|m=Xīnzhú
|c=san1 zuk1
|h=pfs=Sîn-chuk
|md=Sĭng-dé̤ṳk
|mn=tw:Sin-tek/xm,qz,zz:Sin-tiok
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q249994}}{{zh-div|市}} {{place|en|city|西北部|c/臺灣}}
# {{sid|zh|Q74054}}{{zh-div|縣}} {{place|en|county|西北部|c/臺灣}}
====同義詞====
* {{zh-l|風城}}
====派生詞====
* {{desc|bor=1|en|Hsinchu}}, {{l|en|Hsin-chu}}, {{l|en|Xinzhu}}
==日語==
{{ja-kanjitab|しん|ちく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんちく}}
# {{tcl|ja|新竹|id=Q249994,Q74054}}
haqgrt1kopzgbyjruusm3okmwser2l0
9759409
9759407
2026-05-14T14:10:39Z
TongcyDai
53191
9759409
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp|zh|yue|lzh|cdo:Sĭng-dé̤ṳk|nan:Sin-tek}}
[[File:Taiwan ROC political division map Hsinchu County.svg|thumb|]]
===詞源===
來自{{l|zh|新}} + {{l|zh|竹塹}},源自1878年[[:w:臺灣清治時期|清治臺灣]]的新政改革。新竹[[轄區]]包括{{w|竹塹堡}}週遭[[腹地]]。
===發音===
{{zh-pron
|m=Xīnzhú
|c=san1 zuk1
|h=pfs=Sîn-chuk
|md=Sĭng-dé̤ṳk
|mn=tw:Sin-tek/xm,qz,zz:Sin-tiok
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q249994}}{{zh-div|市}} {{place|zh|city|西北部|c/臺灣}}
# {{sid|zh|Q74054}}{{zh-div|縣}} {{place|zh|county|西北部|c/臺灣}}
====同義詞====
* {{zh-l|風城}}
====派生詞====
* {{desc|bor=1|en|Hsinchu}}, {{l|en|Hsin-chu}}, {{l|en|Xinzhu}}
==日語==
{{ja-kanjitab|しん|ちく|yomi=o}}
===專有名詞===
{{ja-pos|proper|しんちく}}
# {{tcl|ja|新竹|id=Q249994,Q74054}}
m9rvlofyxptu5u0uzw8u6aigt4zevxr
歐亞大陸
0
1264983
9759681
7615100
2026-05-15T00:22:57Z
TongcyDai
53191
9759681
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=欧亚大陆|type=22}}
{{zh-wp}}
[[Image:Eurasia (orthographic projection).svg|250px|thumb]]
===發音===
{{zh-pron
|m=Ōu-Yà dàlù,Ōu-Yǎ dàlù,1nb=中國大陸和臺灣標準,2nb=常見異讀
|c=au1 aa3 daai6 luk6
|cat=propn
}}
===專有名詞===
{{zh-proper noun}}
# {{senseid|zh|Q5401}}{{place|zh|由[[歐洲]]和[[亞洲]]組成的<<supercontinent>,是[[地球]]上面積最大、人口最多的[[陸地]];有時也包括鄰近的島嶼|tcl=包含[[歐洲]]和[[亞洲]]的<<supercontinent>>}}
====同義詞====
* {{zh-l|亞歐大陸}}
====翻譯====
{{trans-top|id=Q5401|亞洲和歐洲的合稱}}
* 南非語:{{t|af|Eurasië}}
* 阿爾巴尼亞語:{{t|sq|Eurazi|f}}、{{t|sq|Eurazia|f}} {{qualifier|定形}}
* 阿拉伯語:{{t|ar|يُورَاسِيَا|f}}
* 亞美尼亞語:{{t+|hy|Եվրասիա}}
* 阿塞拜疆語:{{t+|az|Avrasiya}}
* 白俄羅斯語:{{t|be|Еўра́зія|f}}、{{t|be|Эўра́зія|f}}
* 孟加拉語:{{t|bn|ইউরেশিয়া}}
* 保加利亞語:{{t|bg|Евра́зия|f}}
* 緬甸語:{{t|my|ယူရေးရှား}}
* 加泰羅尼亞語:{{t+|ca|Euràsia|f}}
* 捷克語:{{t+|cs|Eurasie|f}}
* 丹麥語:{{t|da|Eurasien|n}}
* 荷蘭語:{{t+|nl|Eurazië|n}}
* 英語:{{t+|en|Eurasia}}
* 世界語:{{t|eo|Eŭrazio}}
* 愛沙尼亞語:{{t|et|Euraasia}}
* 法羅語:{{t|fo|Evrasia|n}}
* 芬蘭語:{{t+|fi|Euraasia}}
* 法語:{{t+|fr|Eurasie|f}}
* 加利西亞語:{{t+|gl|Eurasia|f}}
* 格魯吉亞語:{{t|ka|ევრაზია}}
* 德語:{{t+|de|Eurasien|n}}
* 希臘語:{{t+|el|Ευρασία|f}}
* 希伯來語:{{t+|he|אֵירוֹאַסְיָה|f|tr=eiroásia}}
* 印地語:{{t|hi|यूरेशिया|m}}
* 匈牙利語:{{t+|hu|Eurázsia}}
* 冰島語:{{t+|is|Evrasía|f}}
* 印尼語:{{t|id|Eurasia}}
* 愛爾蘭語:{{t|ga|Eoráise|f|alt=an Eoráise}}
* 意大利語:{{t+|it|Eurasia|f}}
* 日語:{{t+|ja|ユーラシア|tr=Yūrasia}}、{{t+|ja|亜欧|tr=あおう, Aō}}、{{t+|ja|欧亜|tr=おうあ, Ōa}}
* 哈薩克語:{{t|kk|Еуразия}}
* 高棉語:{{t|km|អឺរ៉ាស៊ី}}
* 朝鮮語:{{t+|ko|^유라시아}}、{{t+|ko|^아구(亞歐)}}
* 吉爾吉斯語:{{t|ky|Евразия}}
* 老撾語:{{t|lo|ຢູເຣເຊຍ}}
* 拉丁語:{{t|la|Eurasia|f}}
* 拉脫維亞語:{{t|lv|Eirāzija|f}}
* 立陶宛語:{{t+|lt|Eurazija|f}}
* 馬其頓語:{{t|mk|Евроа́зија|f}}
* 馬來語:{{t|ms|Eurasia}}
* 馬爾他語:{{t|mt|Ewrasja}}
* 馬拉地語:{{t|mr|युरेशिया|m}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Еврази}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Eurasia|n}}
* 普什圖語:{{t|ps|اوراسيا|f|tr=orāsyā}}
* 波斯語:{{t|fa|اُوراسیا|tr=orâsiyâ}}
* 波蘭語:{{t+|pl|Eurazja|f}}
* 葡萄牙語:{{t+|pt|Eurásia|f}}
* 羅馬尼亞語:{{t|ro|Eurasia|f}}
* 俄語:{{t+|ru|Евра́зия|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Евроазија}}、{{t|sh|Евразија|f}}
*: 拉丁字母:{{t|sh|Euroazija|f}}、{{t+|sh|Eurazija|f}}
* 斯洛伐克語:{{t|sk|Eurázia|f}}
* 斯洛文尼亞語:{{t+|sl|Evrazija|f}}
* 西班牙語:{{t+|es|Eurasia|f}}
* 斯瓦希里語:{{t|sw|Urasia}}
* 瑞典語:{{t+|sv|Eurasien|n}}
* 塔吉克語:{{t|tg|Евросиё}}、{{t|tg|Авросиё}}
* 韃靼語:{{t|tt|Ауразия}}
* 泰語:{{t|th|ยูเรเชีย}}
* 土耳其語:{{t+|tr|Avrasya}}
* 土庫曼語:{{t|tk|Ýewraziýa}}
* 烏克蘭語:{{t+|uk|Євра́зія|f}}
* 烏茲別克語:{{t+|uz|Yevrosiyo}}
* 越南語:{{t|vi|[[lục địa]] [[Á-Âu]]}} ({{t|vi|[[陸地]][[亞歐]]}}), {{t|vi|[[lục địa]] [[Âu-Á]]}} ({{t|vi|[[陸地]][[歐亞]]}}), {{t|vi|[[đại lục]] [[Á Âu]]}} ({{t|vi|[[大陸]][[亞歐]]}}), {{t|vi|[[đại lục]] [[Âu Á]]}} ({{t|vi|[[大陸]][[歐亞]]}})
* 西弗里斯蘭語:{{t|fy|Jeraazje}}
{{trans-bottom}}
{{zh-cat|亞洲|歐亞大陸|歐洲|大洲}}
fo2u47gt9bo09ml607wq82wa54ms2wo
9759682
9759681
2026-05-15T00:23:16Z
TongcyDai
53191
9759682
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=欧亚大陆|type=22}}
{{zh-wp}}
[[Image:Eurasia (orthographic projection).svg|250px|thumb]]
===發音===
{{zh-pron
|m=Ōu-Yà dàlù,Ōu-Yǎ dàlù,1nb=中國大陸和臺灣標準,2nb=常見異讀
|c=au1 aa3 daai6 luk6
|cat=propn
}}
===專有名詞===
{{zh-proper noun}}
# {{senseid|zh|Q5401}}{{place|zh|由[[歐洲]]和[[亞洲]]組成的<<supercontinent>>,是[[地球]]上面積最大、人口最多的[[陸地]];有時也包括鄰近的島嶼|tcl=包含[[歐洲]]和[[亞洲]]的<<supercontinent>>}}
====同義詞====
* {{zh-l|亞歐大陸}}
====翻譯====
{{trans-top|id=Q5401|亞洲和歐洲的合稱}}
* 南非語:{{t|af|Eurasië}}
* 阿爾巴尼亞語:{{t|sq|Eurazi|f}}、{{t|sq|Eurazia|f}} {{qualifier|定形}}
* 阿拉伯語:{{t|ar|يُورَاسِيَا|f}}
* 亞美尼亞語:{{t+|hy|Եվրասիա}}
* 阿塞拜疆語:{{t+|az|Avrasiya}}
* 白俄羅斯語:{{t|be|Еўра́зія|f}}、{{t|be|Эўра́зія|f}}
* 孟加拉語:{{t|bn|ইউরেশিয়া}}
* 保加利亞語:{{t|bg|Евра́зия|f}}
* 緬甸語:{{t|my|ယူရေးရှား}}
* 加泰羅尼亞語:{{t+|ca|Euràsia|f}}
* 捷克語:{{t+|cs|Eurasie|f}}
* 丹麥語:{{t|da|Eurasien|n}}
* 荷蘭語:{{t+|nl|Eurazië|n}}
* 英語:{{t+|en|Eurasia}}
* 世界語:{{t|eo|Eŭrazio}}
* 愛沙尼亞語:{{t|et|Euraasia}}
* 法羅語:{{t|fo|Evrasia|n}}
* 芬蘭語:{{t+|fi|Euraasia}}
* 法語:{{t+|fr|Eurasie|f}}
* 加利西亞語:{{t+|gl|Eurasia|f}}
* 格魯吉亞語:{{t|ka|ევრაზია}}
* 德語:{{t+|de|Eurasien|n}}
* 希臘語:{{t+|el|Ευρασία|f}}
* 希伯來語:{{t+|he|אֵירוֹאַסְיָה|f|tr=eiroásia}}
* 印地語:{{t|hi|यूरेशिया|m}}
* 匈牙利語:{{t+|hu|Eurázsia}}
* 冰島語:{{t+|is|Evrasía|f}}
* 印尼語:{{t|id|Eurasia}}
* 愛爾蘭語:{{t|ga|Eoráise|f|alt=an Eoráise}}
* 意大利語:{{t+|it|Eurasia|f}}
* 日語:{{t+|ja|ユーラシア|tr=Yūrasia}}、{{t+|ja|亜欧|tr=あおう, Aō}}、{{t+|ja|欧亜|tr=おうあ, Ōa}}
* 哈薩克語:{{t|kk|Еуразия}}
* 高棉語:{{t|km|អឺរ៉ាស៊ី}}
* 朝鮮語:{{t+|ko|^유라시아}}、{{t+|ko|^아구(亞歐)}}
* 吉爾吉斯語:{{t|ky|Евразия}}
* 老撾語:{{t|lo|ຢູເຣເຊຍ}}
* 拉丁語:{{t|la|Eurasia|f}}
* 拉脫維亞語:{{t|lv|Eirāzija|f}}
* 立陶宛語:{{t+|lt|Eurazija|f}}
* 馬其頓語:{{t|mk|Евроа́зија|f}}
* 馬來語:{{t|ms|Eurasia}}
* 馬爾他語:{{t|mt|Ewrasja}}
* 馬拉地語:{{t|mr|युरेशिया|m}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Еврази}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Eurasia|n}}
* 普什圖語:{{t|ps|اوراسيا|f|tr=orāsyā}}
* 波斯語:{{t|fa|اُوراسیا|tr=orâsiyâ}}
* 波蘭語:{{t+|pl|Eurazja|f}}
* 葡萄牙語:{{t+|pt|Eurásia|f}}
* 羅馬尼亞語:{{t|ro|Eurasia|f}}
* 俄語:{{t+|ru|Евра́зия|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Евроазија}}、{{t|sh|Евразија|f}}
*: 拉丁字母:{{t|sh|Euroazija|f}}、{{t+|sh|Eurazija|f}}
* 斯洛伐克語:{{t|sk|Eurázia|f}}
* 斯洛文尼亞語:{{t+|sl|Evrazija|f}}
* 西班牙語:{{t+|es|Eurasia|f}}
* 斯瓦希里語:{{t|sw|Urasia}}
* 瑞典語:{{t+|sv|Eurasien|n}}
* 塔吉克語:{{t|tg|Евросиё}}、{{t|tg|Авросиё}}
* 韃靼語:{{t|tt|Ауразия}}
* 泰語:{{t|th|ยูเรเชีย}}
* 土耳其語:{{t+|tr|Avrasya}}
* 土庫曼語:{{t|tk|Ýewraziýa}}
* 烏克蘭語:{{t+|uk|Євра́зія|f}}
* 烏茲別克語:{{t+|uz|Yevrosiyo}}
* 越南語:{{t|vi|[[lục địa]] [[Á-Âu]]}} ({{t|vi|[[陸地]][[亞歐]]}}), {{t|vi|[[lục địa]] [[Âu-Á]]}} ({{t|vi|[[陸地]][[歐亞]]}}), {{t|vi|[[đại lục]] [[Á Âu]]}} ({{t|vi|[[大陸]][[亞歐]]}}), {{t|vi|[[đại lục]] [[Âu Á]]}} ({{t|vi|[[大陸]][[歐亞]]}})
* 西弗里斯蘭語:{{t|fy|Jeraazje}}
{{trans-bottom}}
{{zh-cat|亞洲|歐亞大陸|歐洲|大洲}}
k6jpeksds8znvxf5amxbtig3520vue9
津巴布韋
0
1274596
9759489
6998966
2026-05-14T20:51:59Z
TongcyDai
53191
9759489
wikitext
text/x-wiki
{{also|津巴布韦}}
==漢語==
{{zh-forms|s=津巴布韦|gloss=-}}
===發音===
{{zh-pron
|m=Jīnbābùwéi
|c=zeon1 baa1 bou3 wai4,zeon1 baa1 bou3 wai5
|mn=xm:Chin-pa-pò͘-ûi/qz:Tin-pa-pò͘-ûi/zz:Chin-pa-pò͘-úi
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q954}}{{lb|zh|中國大陸|香港}} {{place|zh|國家|r/南非|official=津巴布韋共和國|capital=哈拉雷}}
====近義詞====
* {{qualifier|臺灣}} {{zh-l|辛巴威}}
====參見====
* {{qualifier|歷史}} {{zh-l|羅德西亞}}
====翻譯====
{{trans-top|id=Q954|南部非洲國家}}
* 南非語:{{t+|af|Zimbabwe}}
* 阿爾巴尼亞語:{{t+|sq|Zimbabveja|f}}
* 阿姆哈拉語:{{t|am|ዚምባብዌ}}
* 阿拉伯語:{{t|ar|زِيمْبَابْوِي|m}}
* 亞拉姆語:
*: 亞述新亞拉姆語:{{t|aii|ܙܝܼܡܒܵܒܘܹܐ|f}}
* 亞美尼亞語:{{t+|hy|Զիմբաբվե}}
* 阿斯圖里亞斯語:{{t+|ast|Zimbabue}}
* 阿塞拜疆語:{{t+|az|Zimbabve}}
* 巴厘語:{{t|ban|Zimbabwe}}、{{t|ban|Zimbabwé}}
* 白俄羅斯語:{{t|be|Зімба́бвэ|n}}
* 孟加拉語:{{t+|bn|জিম্বাবুয়ে}}
* 伯塔維語:{{t|bew|Jimbabwé}}
* 布列塔尼語:{{t+|br|Zimbabwe|?}}
* 保加利亞語:{{t|bg|Зимба́бве|n}}
* 緬甸語:{{t|my|ဇင်ဘာဘွေ}}
* 加泰羅尼亞語:{{t+|ca|Zimbàbue}}
* 切羅基語:{{t|chr|ᏏᎻᏆᏇ}}
* 齊切瓦語:{{t|ny|Zimbabwe}}
* 科西嘉語:{{t|co|Zimbabue|m}}
* 捷克語:{{t+|cs|Zimbabwe|n}}
* 丹麥語:{{t+|da|Zimbabwe}}
* 迪維希語:{{t|dv|ޒިމްބާބުވޭ}}
* 荷蘭語:{{t+|nl|Zimbabwe|n}}
* 宗喀語:{{t|dz|ཛིམ་བབ་ཝེ་}}
* 世界語:{{t+|eo|Zimbabvo}}
* 愛沙尼亞語:{{t+|et|Zimbabwe}}
* 法羅語:{{t|fo|Simbabvi|n}}
* 芬蘭語:{{t+|fi|Zimbabwe}}
* 法語:{{t+|fr|Zimbabwe|m}}、{{t+|fr|Zimbabwé|m}}
* 弗里斯蘭語組:
*: 西弗里斯蘭語:{{t+|fy|Simbabwe|n}}
* 格魯吉亞語:{{t+|ka|ზიმბაბვე}}
* 德語:{{t+|de|Simbabwe|n}}
* 希臘語:{{t+|el|Ζιμπάμπουε|f}}
* 豪薩語:{{t|ha|Zimbabuwe}}
* 希伯來語:{{t|he|זימבבואה|tr=zimbabve}}
* 印地語:{{t+|hi|ज़िम्बाब्वे}}
* 匈牙利語:{{t+|hu|Zimbabwe}}
* 冰島語:{{t+|is|Simbabve|n}}
* 伊多語:{{t+|io|Zimbabwe}}
* 印尼語:{{t+|id|Zimbabwe}}
* 因特語:{{t|ia|Zimbabwe}}
* 愛爾蘭語:{{t|ga|Siombáib|f|alt=An tSiombáib}}、{{t|ga|Poblacht na Siombáibe|f}}
* 意大利語:{{t+|it|Zimbabwe|m}}
* 日語:{{t+|ja|ジンバブエ|tr=Jinbabue}}
* 爪哇語:{{t|jv|Zimbabwé}}
* 卡倫金語:{{t|kln|Zimbabwe}}
* 卡姆巴語:{{t|kam|Zimbabwe}}
* 哈薩克語:{{t+|kk|Зимбабве}}
* 高棉語:{{t+|km|ស៊ីមបាវ៉េ}}
* 基庫尤語:{{t|ki|Zimbabwe}}
* 朝鮮語:{{t+|ko|^짐바브웨}}
* 吉爾吉斯語:{{t|ky|Зимбабве}}
* 老撾語:{{t|lo|ຊິມບັບເວ}}
* 拉脫維亞語:{{t+|lv|Zimbabve}}
* 立陶宛語:{{t+|lt|Zimbabvė}}
* 盧希亞語:{{t|luy|Zimbabwe}}
* 盧歐語:{{t|luo|Zimbabwe}}
* 馬其頓語:{{t+|mk|Зимба́бве|n}}
* 馬來語:{{t+|ms|Zimbabwe}}
* 馬拉雅拉姆語:{{t|ml|സിംബാബ്വെ}}
* 馬爾他語:{{t|mt|iż-[[Żimbabwe]]}}
* 毛利語:{{t|mi|Timuwawe}}
* 梅魯語:{{t|mer|Zimbabwe}}
* 蒙古語:{{t|mn|Зимбабве}}
* 納瓦霍語:{{t|nv|Tsé Bee Bighan Naakaii Łizhiní Bikéyah}}
* 諾曼語:{{t|nrf|Zimbabwe|m}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Zimbabwe}}
*: 新挪威語:{{t+|nn|Zimbabwe}}
* 普什圖語:{{t|ps|زېمبابوې}}
* 波斯語:{{t|fa|زیمبابوه|tr=zimbâbve}}
* 波蘭語:{{t+|pl|Zimbabwe}}
* 葡萄牙語:{{t+|pt|Zimbabwe|m}}、{{t+|pt|Zimbábue|m}}、{{t+|pt|Zimbabué|m}}
* 羅馬尼亞語:{{t+|ro|Zimbabwe}}
* 俄語:{{t+|ru|Зимба́бве|n|tr=Zimbábvɛ}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Зимбабве|m}}
*: 拉丁字母:{{t+|sh|Zimbabve|m}}
* 修納語:{{t|sn|Zimbabwe}}
* 僧加羅語:{{t|si|සිම්බාබ්වේ}}
* 斯洛伐克語:{{t|sk|Zimbabwe|n}}
* 斯洛文尼亞語:{{t+|sl|Zimbabve|n}}
* 西班牙語:{{t+|es|Zimbabue}}
* 巽他語:{{t|su|Zimbabwé}}
* 斯瓦希里語:{{t|sw|Zimbabwe}}
* 瑞典語:{{t+|sv|Zimbabwe}}
* 他加祿語:{{t|tl|Simbabwe}}
* 塔吉克語:{{t|tg|Зимбабве}}
* 泰米爾語:{{t|ta|ஜிம்பாப்வே}}、{{t|ta|சிம்பாப்வே}}
* 韃靼語:{{t|tt|Зимбабве}}
* 泰盧固語:{{t+|te|జింబాబ్వే}}
* 泰語:{{t+|th|ซิมบับเว}}
* 藏語:{{t|bo|ཛིམ་བབ་ཝི།}}
* 提格里尼亞語:{{t|ti|ዚምባብዌ}}
* 土耳其語:{{t+|tr|Zimbabve}}
* 土庫曼語:{{t|tk|Zimbabwe}}
* 烏克蘭語:{{t+|uk|Зімба́бве|n}}
* 烏爾都語:{{t|ur|زمبابوے}}
* 維吾爾語:{{t|ug|زىمبابۋې}}
* 烏茲別克語:{{t+|uz|Zimbabve}}
* 越南語:{{t|vi|Dim-ba-bu-ê}}
* 意第緒語:{{t|yi|זימבאַבווע}}
* 約魯巴語:{{t|yo|Sìǹbábúwè}}
{{trans-bottom}}
lhb5t7hm8m04wj0g6txkxh61pk0ys2s
9759491
9759489
2026-05-14T20:52:27Z
TongcyDai
53191
// Edit via Wikiplus
9759491
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=津巴布韦|gloss=-}}
===發音===
{{zh-pron
|m=Jīnbābùwéi
|c=zeon1 baa1 bou3 wai4,zeon1 baa1 bou3 wai5
|mn=xm:Chin-pa-pò͘-ûi/qz:Tin-pa-pò͘-ûi/zz:Chin-pa-pò͘-úi
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q954}}{{lb|zh|中國大陸|香港}} {{place|zh|國家|r/南非|official=津巴布韋共和國|capital=哈拉雷}}
====近義詞====
* {{qualifier|臺灣}} {{zh-l|辛巴威}}
====參見====
* {{qualifier|歷史}} {{zh-l|羅德西亞}}
====翻譯====
{{trans-top|id=Q954|南部非洲國家}}
* 南非語:{{t+|af|Zimbabwe}}
* 阿爾巴尼亞語:{{t+|sq|Zimbabveja|f}}
* 阿姆哈拉語:{{t|am|ዚምባብዌ}}
* 阿拉伯語:{{t|ar|زِيمْبَابْوِي|m}}
* 亞拉姆語:
*: 亞述新亞拉姆語:{{t|aii|ܙܝܼܡܒܵܒܘܹܐ|f}}
* 亞美尼亞語:{{t+|hy|Զիմբաբվե}}
* 阿斯圖里亞斯語:{{t+|ast|Zimbabue}}
* 阿塞拜疆語:{{t+|az|Zimbabve}}
* 巴厘語:{{t|ban|Zimbabwe}}、{{t|ban|Zimbabwé}}
* 白俄羅斯語:{{t|be|Зімба́бвэ|n}}
* 孟加拉語:{{t+|bn|জিম্বাবুয়ে}}
* 伯塔維語:{{t|bew|Jimbabwé}}
* 布列塔尼語:{{t+|br|Zimbabwe|?}}
* 保加利亞語:{{t|bg|Зимба́бве|n}}
* 緬甸語:{{t|my|ဇင်ဘာဘွေ}}
* 加泰羅尼亞語:{{t+|ca|Zimbàbue}}
* 切羅基語:{{t|chr|ᏏᎻᏆᏇ}}
* 齊切瓦語:{{t|ny|Zimbabwe}}
* 科西嘉語:{{t|co|Zimbabue|m}}
* 捷克語:{{t+|cs|Zimbabwe|n}}
* 丹麥語:{{t+|da|Zimbabwe}}
* 迪維希語:{{t|dv|ޒިމްބާބުވޭ}}
* 荷蘭語:{{t+|nl|Zimbabwe|n}}
* 宗喀語:{{t|dz|ཛིམ་བབ་ཝེ་}}
* 世界語:{{t+|eo|Zimbabvo}}
* 愛沙尼亞語:{{t+|et|Zimbabwe}}
* 法羅語:{{t|fo|Simbabvi|n}}
* 芬蘭語:{{t+|fi|Zimbabwe}}
* 法語:{{t+|fr|Zimbabwe|m}}、{{t+|fr|Zimbabwé|m}}
* 弗里斯蘭語組:
*: 西弗里斯蘭語:{{t+|fy|Simbabwe|n}}
* 格魯吉亞語:{{t+|ka|ზიმბაბვე}}
* 德語:{{t+|de|Simbabwe|n}}
* 希臘語:{{t+|el|Ζιμπάμπουε|f}}
* 豪薩語:{{t|ha|Zimbabuwe}}
* 希伯來語:{{t|he|זימבבואה|tr=zimbabve}}
* 印地語:{{t+|hi|ज़िम्बाब्वे}}
* 匈牙利語:{{t+|hu|Zimbabwe}}
* 冰島語:{{t+|is|Simbabve|n}}
* 伊多語:{{t+|io|Zimbabwe}}
* 印尼語:{{t+|id|Zimbabwe}}
* 因特語:{{t|ia|Zimbabwe}}
* 愛爾蘭語:{{t|ga|Siombáib|f|alt=An tSiombáib}}、{{t|ga|Poblacht na Siombáibe|f}}
* 意大利語:{{t+|it|Zimbabwe|m}}
* 日語:{{t+|ja|ジンバブエ|tr=Jinbabue}}
* 爪哇語:{{t|jv|Zimbabwé}}
* 卡倫金語:{{t|kln|Zimbabwe}}
* 卡姆巴語:{{t|kam|Zimbabwe}}
* 哈薩克語:{{t+|kk|Зимбабве}}
* 高棉語:{{t+|km|ស៊ីមបាវ៉េ}}
* 基庫尤語:{{t|ki|Zimbabwe}}
* 朝鮮語:{{t+|ko|^짐바브웨}}
* 吉爾吉斯語:{{t|ky|Зимбабве}}
* 老撾語:{{t|lo|ຊິມບັບເວ}}
* 拉脫維亞語:{{t+|lv|Zimbabve}}
* 立陶宛語:{{t+|lt|Zimbabvė}}
* 盧希亞語:{{t|luy|Zimbabwe}}
* 盧歐語:{{t|luo|Zimbabwe}}
* 馬其頓語:{{t+|mk|Зимба́бве|n}}
* 馬來語:{{t+|ms|Zimbabwe}}
* 馬拉雅拉姆語:{{t|ml|സിംബാബ്വെ}}
* 馬爾他語:{{t|mt|iż-[[Żimbabwe]]}}
* 毛利語:{{t|mi|Timuwawe}}
* 梅魯語:{{t|mer|Zimbabwe}}
* 蒙古語:{{t|mn|Зимбабве}}
* 納瓦霍語:{{t|nv|Tsé Bee Bighan Naakaii Łizhiní Bikéyah}}
* 諾曼語:{{t|nrf|Zimbabwe|m}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Zimbabwe}}
*: 新挪威語:{{t+|nn|Zimbabwe}}
* 普什圖語:{{t|ps|زېمبابوې}}
* 波斯語:{{t|fa|زیمبابوه|tr=zimbâbve}}
* 波蘭語:{{t+|pl|Zimbabwe}}
* 葡萄牙語:{{t+|pt|Zimbabwe|m}}、{{t+|pt|Zimbábue|m}}、{{t+|pt|Zimbabué|m}}
* 羅馬尼亞語:{{t+|ro|Zimbabwe}}
* 俄語:{{t+|ru|Зимба́бве|n|tr=Zimbábvɛ}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Зимбабве|m}}
*: 拉丁字母:{{t+|sh|Zimbabve|m}}
* 修納語:{{t|sn|Zimbabwe}}
* 僧加羅語:{{t|si|සිම්බාබ්වේ}}
* 斯洛伐克語:{{t|sk|Zimbabwe|n}}
* 斯洛文尼亞語:{{t+|sl|Zimbabve|n}}
* 西班牙語:{{t+|es|Zimbabue}}
* 巽他語:{{t|su|Zimbabwé}}
* 斯瓦希里語:{{t|sw|Zimbabwe}}
* 瑞典語:{{t+|sv|Zimbabwe}}
* 他加祿語:{{t|tl|Simbabwe}}
* 塔吉克語:{{t|tg|Зимбабве}}
* 泰米爾語:{{t|ta|ஜிம்பாப்வே}}、{{t|ta|சிம்பாப்வே}}
* 韃靼語:{{t|tt|Зимбабве}}
* 泰盧固語:{{t+|te|జింబాబ్వే}}
* 泰語:{{t+|th|ซิมบับเว}}
* 藏語:{{t|bo|ཛིམ་བབ་ཝི།}}
* 提格里尼亞語:{{t|ti|ዚምባብዌ}}
* 土耳其語:{{t+|tr|Zimbabve}}
* 土庫曼語:{{t|tk|Zimbabwe}}
* 烏克蘭語:{{t+|uk|Зімба́бве|n}}
* 烏爾都語:{{t|ur|زمبابوے}}
* 維吾爾語:{{t|ug|زىمبابۋې}}
* 烏茲別克語:{{t+|uz|Zimbabve}}
* 越南語:{{t|vi|Dim-ba-bu-ê}}
* 意第緒語:{{t|yi|זימבאַבווע}}
* 約魯巴語:{{t|yo|Sìǹbábúwè}}
{{trans-bottom}}
2tsqjdnbj4bd5avxb9lz7f315kpmo76
精緻
0
1307213
9760142
7005734
2026-05-15T06:03:09Z
Fglffer
55252
9760142
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=精致|t2=精致}}
===發音===
{{zh-pron
|m=jīngzhì
|ma=Zh-jingzhì.ogg
|c=zing1 zi3
|h=pfs=chîn-chṳ;hrs=h:zinˋ zhiˇ
|mn=cheng-tì
|mn-t=zêng1 di3
|cat=a
}}
===形容詞===
{{head|zh|形容詞}}
# [[優美]][[細緻]]
#: {{zh-x|精緻 的 工藝品}}
# [[精深]][[細密]]
#: {{zh-x|精緻 糖類 製品}}
====同義詞====
* {{s|優美}}
{{syn-saurus|zh|精美}}
====反義詞====
* {{as|優美}}
{{ant-saurus|zh|精美}}
==日語==
{{ja-kanjitab|せい|ち|yomi=o}}
===發音===
{{ja-pron|せいち|acc=1|acc_ref=DJR}}
===形容詞===
{{ja-adj|infl=na|せいち}}
# [[優美]][[細緻]]
# [[精深]][[細密]]
====活用====
{{ja-na|せいち}}
===名詞===
{{ja-noun|せいち}}
# [[優美]][[細緻]]
# [[精深]][[細密]]
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0003919300}}
==朝鮮語==
{{ko-hanjatab}}
===詞根===
{{ko-pos|root|hangeul=정치}}
# {{hanja form of|정치}}
3hnfnh2w7p8asucxhtn8pfib25696n4
Aljeria
0
1366769
9759439
9531071
2026-05-14T16:00:42Z
TongcyDai
53191
9759439
wikitext
text/x-wiki
==巴斯克語==
{{wikipedia|lang=eu}}
===詞源===
{{bor+|eu|fr|Algérie}}。
===發音===
{{eu-pr|Alʒeria|hyph=+}}
===專有名詞===
{{eu-proper noun|in}}
# {{tcl|eu|阿爾及利亞|id=Q262}}
====變格====
{{eu-ndecl|in.pr}}
====相关词汇====
* {{l|eu|aljeriar||阿爾及利亞人}}
===擴展閱讀===
* {{R:eu:Arau|38}}
==斯瓦希里語==
===發音===
* {{audio|sw|Sw-ke-Aljeria.flac|a=肯尼亞}}
===專有名詞===
{{head|sw|專有名詞}}
# {{alt form|sw|Algeria}}:{{tcl|sw|阿爾及利亞|id=Q262}}
===參見===
{{list:countries in Africa/sw}}
2q4xibayz9m6peqoogxz7cyy3kl2goo
Líbía
0
1368031
9759621
8103121
2026-05-14T23:13:58Z
TongcyDai
53191
9759621
wikitext
text/x-wiki
{{also|libia|Libia|líbia|Líbia}}
==冰島語==
{{wp|is:Líbýa}}
===專有名詞===
{{is-proper noun|@@}}
# {{tcl|is|利比亞|id=Q1016}}
====變格====
{{is-ndecl|f}}
====其他形式====
* {{alt|is|Líbýa}}
5vm1j7ku2xfa9zikipuq54tgphbjs9v
Либия
0
1368036
9759673
7153489
2026-05-15T00:10:22Z
TongcyDai
53191
9759673
wikitext
text/x-wiki
==保加利亞語==
{{wp|bg:}}
===專有名詞===
{{bg-proper noun|Либия|f}}
# {{tcl|bg|利比亞|id=Q1016}}
==哈薩克語==
{{kk-regional}}
===詞源===
源自{{der|kk|ar|لِيبِيَا}}。
===專有名詞===
{{head|kk|專有名詞}}
# {{tcl|kk|利比亞|id=Q1016}}
dnxqg8mk6sjhhvg1zosa97asghza3sq
लीबिया
0
1368037
9759622
9507259
2026-05-14T23:14:24Z
TongcyDai
53191
9759622
wikitext
text/x-wiki
==印地語==
{{wp|hi:}}
===詞源===
{{bor+|hi|ar|لِيبِيَا}},源自{{der|hi|grc|Λιβύη}}。
===發音===
* {{hi-IPA}}
===專有名詞===
{{hi-proper noun|m|ur=لیبیا}}
# {{tcl|hi|利比亞|id=Q1016}}
====變格====
{{hi-ndecl|<M.unmarked.sg>}}
h91q0m1n75w7cflvm8ps75p3y2mb4qy
Լիբիա
0
1368701
9759670
9607228
2026-05-15T00:10:00Z
TongcyDai
53191
9759670
wikitext
text/x-wiki
==亞美尼亞語==
{{wp|hy:}}
===詞源===
源自{{uder|hy|xcl|Լիբիա}}。
===發音===
{{hy-IPA|Լի՛բիա}}
* {{hyphenation|hy|Լի|բի|ա}}
===專有名詞===
{{hy-h|propn}}
# {{tcl|hy|利比亞|id=Q1016}}
====變格====
{{hy-noun-ի-ներ|unc=on}}
===參考資料===
* {{R:hy:TUT|section=II.A.3|page=51}}
e7a6mftwm8x6rtio1mnq36b4z1oqnns
লিবিয়া
0
1368703
9759669
7847083
2026-05-15T00:09:37Z
TongcyDai
53191
9759669
wikitext
text/x-wiki
==孟加拉語==
{{wp|bn:|sc=Beng}}
===專有名詞===
{{head|bn|專有名詞|sc=Beng}}
# {{tcl|bn|利比亞|id=Q1016}}
tlmtff1sqdkfzal9x6eidjm86jhpjby
လစ်ဗျား
0
1368705
9759677
7054250
2026-05-15T00:10:54Z
TongcyDai
53191
9759677
wikitext
text/x-wiki
==緬甸語==
===發音===
* {{my-IPA}}
===專有名詞===
{{my-proper noun}}
# {{tcl|my|利比亞|id=Q1016}}
#: {{ux|my|လစ်ဗျား[[နိုင်ငံ]]|利比亞 (國)|inline=y}}
riujey4cta1315466bohuhf2vwsp1no
豪州
0
1369317
9759650
7276139
2026-05-14T23:48:17Z
TongcyDai
53191
9759650
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|ごう|しゅう|yomi=o|alt=濠洲:rare,濠州}}
===詞源===
{{ja-daiyouji|州|洲|sort=ごうしゅう}}。
===發音===
{{ja-pron|acc=1|ごうしゅう}}
===專有名詞===
{{ja-pos|proper|ごうしゅう}}
# {{tcl|ja|澳大利亞|id=Q408}}
====近義詞====
* {{ja-r|^オーストラリア}} {{qualifier|最常用}}
* {{ja-r|濠太剌利|^オーストラリア}} {{qualifier|最罕用}}
===參見===
* {{ja-r|豪|ごう}}
* {{ja-r|濠|ごう}}
179qp4e3k2jj3il6prflsshfns9qte0
Alĝerio
0
1389093
9759414
7815492
2026-05-14T14:37:44Z
TongcyDai
53191
9759414
wikitext
text/x-wiki
{{also|Algerio}}
==世界語==
{{wikipedia|lang=eo}}
[[Image:Algeria in its region.svg|thumb|250px|'''Alĝerio''']]
===詞源===
源自{{bor|eo|fr|Algérie}} ← {{der|eo|ar|اَلْجَزَائِر|gloss=群島}},{{l|ar|جَزِيرَة||島}}的複數形式,指的是曾經存在於阿爾及爾灣的一些小島。
===發音===
{{eo-IPA|a=Eo-Alĝerio.ogg}}
===專有名詞===
{{eo-proper noun}}
# {{tcl|eo|阿爾及利亞|id=Q262}}
====派生詞====
* {{l|eo|alĝeria|t=阿爾及利亞的|pos=a}}
* {{l|eo|alĝeriano|t=阿爾及利亞人|pos=n}}
fs1z3r3g6fiynzo41hl64fsprjx59l6
Module:Pi-Latn-translit
828
1390651
9759441
8029822
2026-05-14T16:16:56Z
咽頭べさ
92223
9759441
Scribunto
text/plain
-- For Lao script, see https://www.unicode.org/charts/PDF/U0E80.pdf (Unicode 12.0+)
local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local sub = mw.ustring.sub
local u = mw.ustring.char
local c = {
["Deva"] = {
["k"] = "क", ["kh"] = "ख", ["g"] = "ग", ["gh"] = "घ", ["ṅ"] = "ङ",
["c"] = "च", ["ch"] = "छ", ["j"] = "ज", ["jh"] = "झ", ["ñ"] = "ञ",
["ṭ"] = "ट", ["ṭh"] = "ठ", ["ḍ"] = "ड", ["ḍh"] = "ढ", ["ṇ"] = "ण",
["t"] = "त", ["th"] = "थ", ["d"] = "द", ["dh"] = "ध", ["n"] = "न",
["p"] = "प", ["ph"] = "फ", ["b"] = "ब", ["bh"] = "भ", ["m"] = "म",
["y"] = "य", ["r"] = "र", ["l"] = "ल", ["v"] = "व", ["s"] = "स",
["h"] = "ह", ["ḷ"] = "ळ",
["a"] = "अ", ["ā"] = "आ",
["i"] = "इ", ["ī"] = "ई",
["u"] = "उ", ["ū"] = "ऊ",
["e"] = "ए",
["o"] = "ओ",
["ṃ"] = "ं",
[""] = "",
},
["Beng"] = {
["k"] = "ক", ["kh"] = "খ", ["g"] = "গ", ["gh"] = "ঘ", ["ṅ"] = "ঙ",
["c"] = "চ", ["ch"] = "ছ", ["j"] = "জ", ["jh"] = "ঝ", ["ñ"] = "ঞ",
["ṭ"] = "ট", ["ṭh"] = "ঠ", ["ḍ"] = "ড", ["ḍh"] = "ঢ", ["ṇ"] = "ণ",
["t"] = "ত", ["th"] = "থ", ["d"] = "দ", ["dh"] = "ধ", ["n"] = "ন",
["p"] = "প", ["ph"] = "ফ", ["b"] = "ব", ["bh"] = "ভ", ["m"] = "ম",
["y"] = "য", ["r"] = "র", ["l"] = "ল", ["v"] = "ৰ", ["s"] = "স",
["h"] = "হ", ["ḷ"] = "ল়",
["a"] = "অ", ["ā"] = "আ",
["i"] = "ই", ["ī"] = "ঈ",
["u"] = "উ", ["ū"] = "ঊ",
["e"] = "এ",
["o"] = "ও",
["ṃ"] = "ং",
[""] = "",
},
["Brah"] = {
["k"] = "𑀓", ["kh"] = "𑀔", ["g"] = "𑀕", ["gh"] = "𑀖", ["ṅ"] = "𑀗",
["c"] = "𑀘", ["ch"] = "𑀙", ["j"] = "𑀚", ["jh"] = "𑀛", ["ñ"] = "𑀜",
["ṭ"] = "𑀝", ["ṭh"] = "𑀞", ["ḍ"] = "𑀟", ["ḍh"] = "𑀠", ["ṇ"] = "𑀡",
["t"] = "𑀢", ["th"] = "𑀣", ["d"] = "𑀤", ["dh"] = "𑀥", ["n"] = "𑀦",
["p"] = "𑀧", ["ph"] = "𑀨", ["b"] = "𑀩", ["bh"] = "𑀪", ["m"] = "𑀫",
["y"] = "𑀬", ["r"] = "𑀭", ["l"] = "𑀮", ["v"] = "𑀯", ["s"] = "𑀲",
["h"] = "𑀳", ["ḷ"] = "𑀴",
["a"] = "𑀅", ["ā"] = "𑀆",
["i"] = "𑀇", ["ī"] = "𑀈",
["u"] = "𑀉", ["ū"] = "𑀊",
["e"] = "𑀏",
["o"] = "𑀑",
["ṃ"] = "𑀁",
[""] = "",
},
["Khmr"] = {
["k"] = "ក", ["kh"] = "ខ", ["g"] = "គ", ["gh"] = "ឃ", ["ṅ"] = "ង",
["c"] = "ច", ["ch"] = "ឆ", ["j"] = "ជ", ["jh"] = "ឈ", ["ñ"] = "ញ",
["ṭ"] = "ដ", ["ṭh"] = "ឋ", ["ḍ"] = "ឌ", ["ḍh"] = "ឍ", ["ṇ"] = "ណ",
["t"] = "ត", ["th"] = "ថ", ["d"] = "ទ", ["dh"] = "ធ", ["n"] = "ន",
["p"] = "ប", ["ph"] = "ផ", ["b"] = "ព", ["bh"] = "ភ", ["m"] = "ម",
["y"] = "យ", ["r"] = "រ", ["l"] = "ល", ["v"] = "វ", ["s"] = "ស",
["h"] = "ហ", ["ḷ"] = "ឡ",
["a"] = "អ", ["ā"] = "អា",
["i"] = "ឥ", ["ī"] = "ឦ",
["u"] = "ឧ", ["ū"] = "ឨ",
["e"] = "ឯ",
["o"] = "ឲ",
["ṃ"] = "ំ",
[""] = "",
},
["Mymr"] = {
["k"] = "က", ["kh"] = "ခ", ["g"] = "ဂ", ["gh"] = "ဃ", ["ṅ"] = "င",
["c"] = "စ", ["ch"] = "ဆ", ["j"] = "ဇ", ["jh"] = "ဈ", ["ñ"] = "ဉ",
["ṭ"] = "ဋ", ["ṭh"] = "ဌ", ["ḍ"] = "ဍ", ["ḍh"] = "ဎ", ["ṇ"] = "ဏ",
["t"] = "တ", ["th"] = "ထ", ["d"] = "ဒ", ["dh"] = "ဓ", ["n"] = "န",
["p"] = "ပ", ["ph"] = "ဖ", ["b"] = "ဗ", ["bh"] = "ဘ", ["m"] = "မ",
["y"] = "ယ", ["r"] = "ရ", ["l"] = "လ", ["v"] = "ဝ", ["s"] = "သ",
["h"] = "ဟ", ["ḷ"] = "ဠ",
["a"] = "အ", ["ā"] = "အာ",
["i"] = "ဣ", ["ī"] = "ဤ",
["u"] = "ဥ", ["ū"] = "ဦ",
["e"] = "ဧ",
["o"] = "ဩ",
["ṃ"] = "ံ",
[""] = "",
},
["Sinh"] = {
["k"] = "ක", ["kh"] = "ඛ", ["g"] = "ග", ["gh"] = "ඝ", ["ṅ"] = "ඞ",
["c"] = "ච", ["ch"] = "ඡ", ["j"] = "ජ", ["jh"] = "ඣ", ["ñ"] = "ඤ",
["ṭ"] = "ට", ["ṭh"] = "ඨ", ["ḍ"] = "ඩ", ["ḍh"] = "ඪ", ["ṇ"] = "ණ",
["t"] = "ත", ["th"] = "ථ", ["d"] = "ද", ["dh"] = "ධ", ["n"] = "න",
["p"] = "ප", ["ph"] = "ඵ", ["b"] = "බ", ["bh"] = "භ", ["m"] = "ම",
["y"] = "ය", ["r"] = "ර", ["l"] = "ල", ["v"] = "ව", ["s"] = "ස",
["h"] = "හ", ["ḷ"] = "ළ",
["a"] = "අ", ["ā"] = "ආ",
["i"] = "ඉ", ["ī"] = "ඊ",
["u"] = "උ", ["ū"] = "ඌ",
["e"] = "එ",
["o"] = "ඔ",
["ṃ"] = "ං",
[""] = "",
},
["Thai"] = {
["k"] = "ก", ["kh"] = "ข", ["g"] = "ค", ["gh"] = "ฆ", ["ṅ"] = "ง",
["c"] = "จ", ["ch"] = "ฉ", ["j"] = "ช", ["jh"] = "ฌ", ["ñ"] = "ญ",
["ṭ"] = "ฏ", ["ṭh"] = "ฐ", ["ḍ"] = "ฑ", ["ḍh"] = "ฒ", ["ṇ"] = "ณ",
["t"] = "ต", ["th"] = "ถ", ["d"] = "ท", ["dh"] = "ธ", ["n"] = "น",
["p"] = "ป", ["ph"] = "ผ", ["b"] = "พ", ["bh"] = "ภ", ["m"] = "ม",
["y"] = "ย", ["r"] = "ร", ["l"] = "ล", ["v"] = "ว", ["s"] = "ส",
["h"] = "ห", ["ḷ"] = "ฬ",
["a"] = "อ", ["ā"] = "อา",
["i"] = "อิ", ["ī"] = "อี",
["u"] = "อุ", ["ū"] = "อู",
["e"] = "อเ", --to be swapped later
["o"] = "อโ", --to be swapped later
["ṃ"] = "ํ",
[""] = "",
},
["Lana"] = {
["k"] = "ᨠ", ["kh"] = "ᨡ", ["g"] = "ᨣ", ["gh"] = "ᨥ", ["ṅ"] = "ᨦ",
["c"] = "ᨧ", ["ch"] = "ᨨ", ["j"] = "ᨩ", ["jh"] = "ᨫ", ["ñ"] = "ᨬ",
["ṭ"] = "ᨭ", ["ṭh"] = "ᨮ", ["ḍ"] = "ᨯ", ["ḍh"] = "ᨰ", ["ṇ"] = "ᨱ",
["t"] = "ᨲ", ["th"] = "ᨳ", ["d"] = "ᨴ", ["dh"] = "ᨵ", ["n"] = "ᨶ",
["p"] = "ᨷ", ["ph"] = "ᨹ", ["b"] = "ᨻ", ["bh"] = "ᨽ", ["m"] = "ᨾ",
["y"] = "ᨿ", ["r"] = "ᩁ", ["l"] = "ᩃ", ["v"] = "ᩅ", ["s"] = "ᩈ",
["h"] = "ᩉ", ["ḷ"] = "ᩊ",
["a"] = "ᩋ", ["ā"] = "ᩋᩣ",
["i"] = "ᩍ", ["ī"] = "ᩎ",
["u"] = "ᩏ", ["ū"] = "ᩐ",
["e"] = "ᩑ",
["o"] = "ᩋᩰ",
["ṃ"] = "ᩴ",
[""] = "",
},
["Laoo"] = {
["k"] = "ກ", ["kh"] = "ຂ", ["g"] = "ຄ", ["gh"] = "ຆ", ["ṅ"] = "ງ",
["c"] = "ຈ", ["ch"] = "ຉ", ["j"] = "ຊ", ["jh"] = "ຌ", ["ñ"] = "ຎ",
["ṭ"] = "ຏ", ["ṭh"] = "ຐ", ["ḍ"] = "ຑ", ["ḍh"] = "ຒ", ["ṇ"] = "ຓ",
["t"] = "ຕ", ["th"] = "ຖ", ["d"] = "ທ", ["dh"] = "ຘ", ["n"] = "ນ",
["p"] = "ປ", ["ph"] = "ຜ", ["b"] = "ພ", ["bh"] = "ຠ", ["m"] = "ມ",
["y"] = "ຍ", ["r"] = "ຣ", ["l"] = "ລ", ["v"] = "ວ", ["s"] = "ສ",
["h"] = "ຫ", ["ḷ"] = "ຬ",
["a"] = "ອ", ["ā"] = "ອາ",
["i"] = "ອິ", ["ī"] = "ອີ",
["u"] = "ອຸ", ["ū"] = "ອູ",
["e"] = "ອເ", --to be swapped later
["o"] = "ອໂ", --to be swapped later
["ṃ"] = "ໍ",
[""] = "",
},
["Cakm"] = {
["k"] = "𑄇", ["kh"] = "𑄈", ["g"] = "𑄉", ["gh"] = "𑄊", ["ṅ"] = "𑄋",
["c"] = "𑄌", ["ch"] = "𑄍", ["j"] = "𑄎", ["jh"] = "𑄏", ["ñ"] = "𑄐",
["ṭ"] = "𑄑", ["ṭh"] = "𑄒", ["ḍ"] = "𑄓", ["ḍh"] = "𑄔", ["ṇ"] = "𑄕",
["t"] = "𑄖", ["th"] = "𑄗", ["d"] = "𑄘", ["dh"] = "𑄙", ["n"] = "𑄚",
["p"] = "𑄛", ["ph"] = "𑄜", ["b"] = "𑄝", ["bh"] = "𑄞", ["m"] = "𑄟",
["y"] = "𑄠", ["r"] = "𑄢", ["l"] = "𑄣", ["v"] = "𑅇", ["s"] = "𑄥",
["h"] = "𑄦", ["ḷ"] = "𑅄",
["a"] = "𑄃", ["ā"] = "𑄃𑄂",
["i"] = "𑄃𑄨", ["ī"] = "𑄃𑄩",
["u"] = "𑄃𑄪", ["ū"] = "𑄃𑄫",
["e"] = "𑄃𑄬",
["o"] = "𑄃𑄮",
["ṃ"] = "𑄁",
[""] = "",
},
}
local v = {
["Deva"] = {
["a"] = "", ["ā"] = "ा",
["i"] = "ि", ["ī"] = "ी",
["u"] = "ु", ["ū"] = "ू",
["e"] = "े",
["o"] = "ो",
[""] = "",
},
["Beng"] = {
["a"] = "", ["ā"] = "া",
["i"] = "ি", ["ī"] = "ী",
["u"] = "ু", ["ū"] = "ূ",
["e"] = "ে",
["o"] = "ো",
[""] = "",
},
["Brah"] = {
["a"] = "", ["ā"] = "𑀸",
["i"] = "𑀺", ["ī"] = "𑀻",
["u"] = "𑀼", ["ū"] = "𑀽",
["e"] = "𑁂",
["o"] = "𑁄",
[""] = "",
},
["Khmr"] = {
["a"] = "", ["ā"] = "ា",
["i"] = "ិ", ["ī"] = "ី",
["u"] = "ុ", ["ū"] = "ូ",
["e"] = "េ",
["o"] = "ោ",
[""] = "",
},
["Mymr"] = {
["a"] = "", ["ā"] = "ာ",
["i"] = "ိ", ["ī"] = "ီ",
["u"] = "ု", ["ū"] = "ူ",
["e"] = "ေ",
["o"] = "ော",
[""] = "",
},
["Sinh"] = {
["a"] = "", ["ā"] = "ා",
["i"] = "ි", ["ī"] = "ී",
["u"] = "ු", ["ū"] = "ූ",
["e"] = "ෙ",
["o"] = "ො",
[""] = "",
},
["Thai"] = {
["a"] = "", ["ā"] = "า",
["i"] = "ิ", ["ī"] = "ี",
["u"] = "ุ", ["ū"] = "ู",
["e"] = "เ",
["o"] = "โ",
[""] = "",
},
["Lana"] = {
["a"] = "", ["ā"] = "ᩣ",
["i"] = "ᩥ", ["ī"] = "ᩦ",
["u"] = "ᩩ", ["ū"] = "ᩪ",
["e"] = "ᩮ",
["o"] = "ᩮᩣ",
[""] = "",
},
["Laoo"] = {
["a"] = "", ["ā"] = "າ",
["i"] = "ິ", ["ī"] = "ີ",
["u"] = "ຸ", ["ū"] = "ູ",
["e"] = "ເ",
["o"] = "ໂ",
[""] = "",
},
["Cakm"] = {
["a"] = "", ["ā"] = "𑄂",
["i"] = "𑄨", ["ī"] = "𑄩",
["u"] = "𑄪", ["ū"] = "𑄫",
["e"] = "𑄬",
["o"] = "𑄮",
[""] = "",
},
}
local s = {
["Deva"] = {
["0"] = "०", ["1"] = "१", ["2"] = "२", ["3"] = "३", ["4"] = "४",
["5"] = "५", ["6"] = "६", ["7"] = "७", ["8"] = "८", ["9"] = "९",
["."] = "॥", [","] = "।", ["-"] = "-",
},
["Beng"] = {
["0"] = "০", ["1"] = "১", ["2"] = "২", ["3"] = "৩", ["4"] = "৪",
["5"] = "৫", ["6"] = "৬", ["7"] = "৭", ["8"] = "৮", ["9"] = "৯",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Brah"] = {
["0"] = "𑁦", ["1"] = "𑁧", ["2"] = "𑁨", ["3"] = "𑁩", ["4"] = "𑁪",
["5"] = "𑁫", ["6"] = "𑁬", ["7"] = "𑁭", ["8"] = "𑁮", ["9"] = "𑁯",
["."] = "𑁈", [","] = "𑁇", ["-"] = "-",
},
["Khmr"] = {
["0"] = "០", ["1"] = "១", ["2"] = "២", ["3"] = "៣", ["4"] = "៤",
["5"] = "៥", ["6"] = "៦", ["7"] = "៧", ["8"] = "៨", ["9"] = "៩",
["."] = "៕", [","] = "។", ["-"] = "-",
},
["Mymr"] = {
["0"] = "၀", ["1"] = "၁", ["2"] = "၂", ["3"] = "၃", ["4"] = "၄",
["5"] = "၅", ["6"] = "၆", ["7"] = "၇", ["8"] = "၈", ["9"] = "၉",
["."] = "။", [","] = "၊", ["-"] = "-",
},
["Sinh"] = {
["0"] = "0", ["1"] = "1", ["2"] = "2", ["3"] = "3", ["4"] = "4",
["5"] = "5", ["6"] = "6", ["7"] = "7", ["8"] = "8", ["9"] = "9",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Thai"] = {
["0"] = "๐", ["1"] = "๑", ["2"] = "๒", ["3"] = "๓", ["4"] = "๔",
["5"] = "๕", ["6"] = "๖", ["7"] = "๗", ["8"] = "๘", ["9"] = "๙",
["."] = "๚", [","] = "ฯ", ["-"] = "-",
},
["Lana"] = {
["0"] = "᪐", ["1"] = "᪑", ["2"] = "᪒", ["3"] = "᪓", ["4"] = "᪔",
["5"] = "᪕", ["6"] = "᪖", ["7"] = "᪗", ["8"] = "᪘", ["9"] = "᪙",
["."] = "᪩", [","] = "᪨", ["-"] = "-",
},
["Laoo"] = {
["0"] = "໐", ["1"] = "໑", ["2"] = "໒", ["3"] = "໓", ["4"] = "໔",
["5"] = "໕", ["6"] = "໖", ["7"] = "໗", ["8"] = "໘", ["9"] = "໙",
["."] = "ຯຯ", [","] = "ຯ", ["-"] = "-",
},
["Cakm"] = {
["0"] = "𑄶", ["1"] = "𑄷", ["2"] = "𑄸", ["3"] = "𑄹", ["4"] = "𑄺",
["5"] = "𑄻", ["6"] = "𑄼", ["7"] = "𑄽", ["8"] = "𑄾", ["𑄿"] = "๙",
["."] = "𑅁", [","] = ",", ["-"] = "-",
},
}
local join = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "្",
["Mymr"] = "္",
["Sinh"] = u(0x200d, 0x0dca),
["Thai"] = "ฺ",
["Lana"] = "᩠",
["Laoo"] = "຺",
["Cakm"] = "𑄴",
}
local kill = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "៑",
["Mymr"] = "်",
["Sinh"] = "්",
["Thai"] = "ฺ",
["Lana"] = "᩺",
["Laoo"] = "຺",
["Cakm"] = "𑄴",
}
local sinh_cjct = {
["ක්ව"] = "ක්ව", ["ත්ථ"] = "ත්ථ", ["ත්ව"] = "ත්ව",
["න්ථ"] = "න්ථ", ["න්ද"] = "න්ද", ["න්ධ"] = "න්ධ", ["න්ව"] = "න්ව"
}
local nukta = u(0x09bc) -- Just list all those used here.
local variations = {
["Mon"] = {
["ဈ"] = "ၛ", ["ဤ"] = "ဣဳ", ["ဦ"] = "ဥု", ["ဧ"] = "ဨ", ["ီ"] = "ဳ", ["င"] = "ၚ", -- for IM fix below
--Unicode doesn't have "great nya" so just leave ည္ည as is. (It looks like ည with one extra curve.)
},
["OldShan"] = {
["က"] = "ၵ", ["ခ"] = "ၶ", ["ဂ"] = "ၷ", ["ဃ"] = "ꧠ", ["စ"] = "ၸ",
["ဆ"] = "ꧡ", ["ဇ"] = "ၹ", ["ဈ"] = "ꧢ", ["ဉ"] = "ၺ", ["ည"] = "ၺ္ၺ", ["ဋ"] = "ꩦ",
["ဌ"] = "ꩧ", ["ဍ"] = "ꩨ", ["ဎ"] = "ꩩ", ["ဏ"] = "ꧣ", ["ဒ"] = "ၻ",
["ဓ"] = "ꩪ", ["န"] = "ၼ", ["ဖ"] = "ၽ", ["ဗ"] = "ၿ", ["ဘ"] = "ꧤ",
["ဟ"] = "ႁ", ["ဠ"] = "ꩮ", ["အ"] = "ဢ", ["ဣ"] = "ဢိ", ["ဤ"] = "ဢီ",
["ဥ"] = "ဢု", ["ဦ"] = "ဢူ", ["ဧ"] = "ဢေ", ["ဩ"] = "ဢေႃ", ["ါ"] = "ႃ", ["ာ"] = "ႃ",
--Unicode doesn't have "Shan great sa" so just leave ဿ as is.
},
["NewShan"] = {
--includes all Old Shan and the followings
["ဿ"] = "သ်သ", ["္"] = "်",
},
}
-- Unnatural sequences of combining marks are frequently unreadable. Therefore, they are displayed on
-- bearers so that the code can be understood and, if necessary, corrected.
local dc = function(text) return gsub(text, "[อອ]", "") end -- Discard bearer
local transform
function export.mono_form(text, script)
local result = text
if script == "Thai" then
result = gsub(result, "ํ", "งฺ")
result = gsub(result, "([ก-ฮ])ฺ", "ั%1ฺ")
result = gsub(result, "([ก-ฮ])([^ะัาิีฺุู])", "%1ะ%2")
result = gsub(result, "([ก-ฮ])([^ะัาิีฺุู])", "%1ะ%2") --twice
result = gsub(result, "([ก-ฮ])$", "%1ะ")
-- result = gsub(result, "([ก-ฮ])([าิีุู])ั", "%1%2")
result = gsub(result, dc("([ก-ฮ])([าอิอีอฺอุอู])อั"), "%1%2")
result = gsub(result, "([เโ])([ก-ฮ])([ะั])", "%1%2")
result = gsub(result, "^ั", "")
result = gsub(result, "([%s%p])ั", "%1")
result = gsub(result, "ฺ", "")
elseif script == "Laoo" then
-- Calculating transform in argument list of gsub() fails!
if not transform then
transform = {
{dc("ອໍ"), dc("ງອ຺")},
{dc("([ກ-ຮ])ອ຺"), dc("ອັ%1ອ຺")},
{dc("([ກ-ຮ])([^ະອັາອິອີອ຺ອຸອູ])"), "%1ະ%2"},
{dc("([ກ-ຮ])([^ະອັາອິອີອ຺ອຸອູ])"), "%1ະ%2"}, -- twice!
{"([ກ-ຮ])$", "%1ະ"},
{dc("([ກ-ຮ])([າອິອີອ຺ອຸອູ])ອັ"), "%1%2"},
{dc("([ເໂ])([ກ-ຮ])([ະອັ])"), "%1%2"},
{dc("^ອັ"), ""},
{dc("([%s%p])ອັ"), "%1"},
{dc("ອ຺"), ""}
}
end
for _, v in ipairs(transform) do
result = gsub(result, v[1], v[2])
end
end
return result
end
local function return_error(text)
return error(("Unrecognised part: \"%s\""):format(text))
end
function export.tr(text, script, options)
if type(text) == "table" then
options = {}
options.impl = text.args["impl"]
options.variation = text.args["variation"] --ID of variation: [Mymr: 1=Mon, 2=Old Shan, 3=New Shan]
text, script = text.args[1], text.args[2]
end
if script == "Latn" then
return text
end
if not s[script] then
return nil
end
local easy_syllable_pattern =
"^([khgṅcjñṭḍṇtdnpbmyrlḷvs]*)([aāiīuūeo])(ṃ?)("..kill[script].."?)$"
text = mw.ustring.lower(text)
text = gsub(text, "[0-9%.,%-]", s[script])
-- Compose patterns for processing onsets.
local letter = "[^"..join[script]..nukta.."]["..nukta.."]?"
local letter_pair = "("..letter..")("..letter..")"
for word in mw.ustring.gmatch(text, "[aāiīuūeoṃkhgṅcjñṭḍṇtdnpbmyrlḷvs]+") do
local word_conv, orig_word = {}, word
word = gsub(word, "([aāiīuūeo]ṃ?)", "%1 ")
word = gsub(word, " $", "")
for syllable in mw.text.gsplit(word, " ") do
if not match(syllable, "[aāiīuūeoṃ]$") then
syllable = syllable .. "a" .. kill[script]
end
syllable = gsub(syllable, easy_syllable_pattern,
function(onset, vowel, coda, optJoin)
if onset == "" then
onset = vowel
vowel = ""
end
if not c[script][onset] then
onset = gsub(onset, ".h", c[script])
onset = gsub(onset, ".", c[script])
-- Join pairs of consonants
onset = gsub(onset, letter_pair, "%1"..join[script].."%2")
-- Join adjacent consonants that were in different pairs.
onset = gsub(onset, letter_pair, "%1"..join[script].."%2")
else
onset = c[script][onset]
end
return onset .. (v[script][vowel] or return_error(vowel)) .. c[script][coda] .. optJoin
end)
table.insert(word_conv, syllable)
end
word = table.concat(word_conv, "")
if script == "Thai" then
word = gsub(word, "(.)([เโ])", "%2%1")
elseif script == "Mymr" then
word = gsub(word, "င္", "င်္") -- Pali doesn't have -Vr mid-word like Sanskrit, so no need to include repha.
word = gsub(word, "(င်္)([ခဂငဒပဝ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "္[ယရ]", { ["္ယ"] = "ျ", ["္ရ"] = "ြ" }) --these not need tall aa
word = gsub(word, "^([ခဂငဒပဝ])(ေ?)ာ", "%1%2ါ")
word = gsub(word, "([^္])([ခဂငဒပဝ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "([ခဂငဒပဝ])(္[က-အဿ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "္[ဝဟ]", { ["္ဝ"] = "ွ", ["္ဟ"] = "ှ" })
word = gsub(word, "ဉ္ဉ", "ည")
word = gsub(word, "သ္သ", "ဿ")
if not (options and options.variation) then
-- Arg options should be optional, so nothing to do.
elseif options.variation == "1" then
word = gsub(word, ".", variations.Mon)
word = gsub(word, "ိံ", "ီ") --fix IM
elseif options.variation == "2" then
if match(word, "ဿ") then
-- Character is missing. Do nothing.
else
word = gsub(word, ".", variations.OldShan)
end
elseif options.variation == "3" then
word = gsub(word, ".", variations.OldShan)
word = gsub(word, ".", variations.NewShan)
word = gsub(word, "်".."်", "်") --fix nga
end
elseif script == "Lana" then
word = gsub(word, "ᨦ᩠", "ᩘ")
word = gsub(word, "^([ᨣᨴᨵᨷᩅ])(ᩮ?)ᩣ", "%1%2ᩤ")
word = gsub(word, "([^᩠])([ᨣᨴᨵᨷᩅ])(ᩮ?)ᩣ", "%1%2%3ᩤ")
word = gsub(word, "([ᨣᨴᨵᨷᩅ])(᩠[ᨠ-ᩌᩔ])(ᩮ?)ᩣ", "%1%2%3ᩤ")
word = gsub(word, "᩠[ᩁᩃ]", { ["᩠ᩁ"] = "ᩕ", ["᩠ᩃ"] = "ᩖ" })
word = gsub(word, "([ᨭ-ᨱ])᩠ᨮ", "%1ᩛ")
word = gsub(word, "([ᨷ-ᨾ])᩠ᨻ", "%1ᩛ")
word = gsub(word, "ᩈ᩠ᩈ", "ᩔ")
elseif script == "Beng" then
word = gsub(word, "ৰ্", "ৰ"..u(0x200d).."্") -- ৰ্(v-) needs ZWJ to display correctly
elseif script == "Sinh" then
local js = join["Sinh"]
word = gsub(word, "("..js..")([යර])", u(0xdca, 0x200d).."%2")
word = gsub(word,"[කතන]"..js.."[ථදධව]", sinh_cjct)
elseif script == "Laoo" then
word = gsub(word, "(.)([ເໂ])", "%2%1")
elseif script == "Cakm" then
word = gsub(word, "𑄴[𑄠𑄢𑄣𑅇]", -- 𑄠𑄣 are TBC: 𑄢𑅇 confirmed. 𑄚𑄴𑄚 seen.
{ ["𑄴𑄠"]="𑄳𑄠", ["𑄴𑄢"]="𑄳𑄢", ["𑄴𑄣"]="𑄳𑄣", ["𑄴𑅇"]="𑄳𑄤", })
end
text = gsub(text, orig_word, word, 1)
end
local impl = options and options.impl or 'yes'
if impl == 'no' then text = export.mono_form(text, script) end
return text
end
return export
29df52e9trauvtdzykz32nha20s5x2w
Module:Category tree/topic/Places
828
1391042
9759530
9759344
2026-05-14T21:50:28Z
TongcyDai
53191
9759530
Scribunto
text/plain
-- Chinese Wiktionary port of enwikt [[Module:category tree/topic/Places]].
-- Generates descriptions and parent-category specs for place-related category pages.
--
-- Deployment name: TBD — likely [[Module:place/catetree]] or an equivalent path
-- under zhwikt's category-tree infrastructure.
--
-- Architecture mirrors enwikt: two tables exported as LABELS and HANDLERS.
-- LABELS — static label → spec mappings (top-level grouping categories)
-- HANDLERS — ordered list of functions; first non-nil return wins
--
-- Chinese-specific adaptations vs. enwikt:
-- * Pattern matching on 的 instead of English "in"/"of"
-- * Handler 3 bare-location parent: CONTAINER的TYPE (order reversed vs. enwikt)
-- Special case: TYPE=="地名" → CONTAINERTYPE (no 的)
-- * Handler 6 uses forward zh_name lookup (div.type → zh_name) instead of
-- a reverse map, because many English placetypes share the same Chinese name
-- (e.g. state/oblast/canton all → "州"; province/department/voivodeship → "省")
-- * Handler 7 (new): compound capital label + location ("美國的州首府")
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type)
-- Built at load time; skips country/constituent country (no 國首都 category)
-- * No article handling (Chinese has no definite article)
-- * Serial enumeration: 、(non-final) 和(final)
-- * Description format: {{{langname}}}中LOCATION_DESC[[PLACETYPE]]的名稱。
local labels = {}
local handlers = {}
local m_table = require("Module:table")
local m_locations = require("Module:place/locations")
local m_placetypes = require("Module:place/placetypes")
local m_zh_data = require("Module:place/data")
local internal_error = m_locations.internal_error
local zh_strings = m_placetypes.zh_strings
local zh_cap_by_holonym = m_placetypes.zh_capital_label_by_holonym_type
local format_zh_name = m_placetypes.format_zh_name
local insert = table.insert
local concat = table.concat
local function is_callable(val) return type(val) == "function" end
-- Literal-string gsub (no regex metacharacters interpreted in `from` or `to`).
local function gsub_literally(str, from, to)
return (str:gsub(from:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"),
to:gsub("%%", "%%%%")))
end
-- Get the first (primary) placetype from spec.
local function fetch_primary_placetype(key, spec)
local placetype = spec.placetype
if type(placetype) == "table" then placetype = placetype[1] end
return placetype
end
-- True for continent/supercontinent/planet specs (used to omit 的 in 非洲國家).
local function spec_is_broad(spec)
local pt = spec and spec.placetype
if not pt then return false end
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "supercontinent" or p == "planet" then return true end
end
return false
end
-- ---------------------------------------------------------------------------
-- Chinese serial joiner: {"A","B","C"} → "A、B和C"
-- ---------------------------------------------------------------------------
local function zh_join(items)
local n = #items
if n == 0 then return "" end
if n == 1 then return items[1] end
local parts = {}
for i = 1, n - 1 do
insert(parts, items[i])
if i < n - 1 then insert(parts, zh_strings.enum_sep) end
end
insert(parts, zh_strings.and_conj)
insert(parts, items[n])
return concat(parts)
end
-- ---------------------------------------------------------------------------
-- Placetype class → Chinese bare parent category label
-- ---------------------------------------------------------------------------
local class_to_bare_category_parent = {
["polity"] = "政治實體",
["subpolity"] = "行政區劃",
["settlement"] = "聚落",
["non-admin settlement"] = "聚落",
["capital"] = "首都",
["natural feature"] = "自然地物",
["man-made structure"] = "人工建物",
["geographic region"] = "地理文化區域",
}
local class_is_political_division = {
["polity"] = true,
["subpolity"] = true,
["settlement"] = true,
["non-admin settlement"] = false,
["capital"] = true,
["natural feature"] = false,
["man-made structure"] = false,
["geographic region"] = false,
["generic place"] = false,
}
-- ---------------------------------------------------------------------------
-- Load-time reverse maps
-- ---------------------------------------------------------------------------
-- Chinese capital label → holonym type (e.g. "首都" → "country")
local zh_cap_label_to_holonym = {}
for holonym_type, zh_label in pairs(zh_cap_by_holonym) do
if not zh_cap_label_to_holonym[zh_label] then
zh_cap_label_to_holonym[zh_label] = holonym_type
end
end
-- Chinese placetype name → list of English placetype keys (one-to-many).
-- Used by handler 2 (bare placetype) and handler 4 (generic X的Y).
local zh_name_to_pt_keys = {}
do
local function add(name, en_key)
zh_name_to_pt_keys[name] = zh_name_to_pt_keys[name] or {}
insert(zh_name_to_pt_keys[name], en_key)
end
for en_key, entry in pairs(m_zh_data.zh_placetype_data) do
if entry.zh_name then
local names = type(entry.zh_name) == "table" and entry.zh_name or {entry.zh_name}
for _, name in ipairs(names) do add(name, en_key) end
end
if entry.zh_name_by_holonym_type then
for _, zh_name_val in pairs(entry.zh_name_by_holonym_type) do
local names = type(zh_name_val) == "table" and zh_name_val or {zh_name_val}
for _, name in ipairs(names) do add(name, en_key) end
end
end
end
end
-- Compound capital label → list of holonym placetype keys.
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- E.g. "州首府" → {"state"}, "地區首府" → {"territory", "region"}.
-- Skip country/constituent country (no 國首都 category per design).
-- Skip entries where compound == cap_label (e.g. "省省會"/"縣縣治" excluded to
-- avoid ambiguous matches — these bare labels are already handled by handler 5).
local zh_compound_cap_to_placetypes = {}
do
local function add_compound(compound, pt)
zh_compound_cap_to_placetypes[compound] = zh_compound_cap_to_placetypes[compound] or {}
insert(zh_compound_cap_to_placetypes[compound], pt)
end
for holonym_type, cap_label in pairs(zh_cap_by_holonym) do
if holonym_type ~= "country" and holonym_type ~= "constituent country" then
local zh_name_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
if zh_name_raw then
local zh_name_str = format_zh_name(zh_name_raw)
local compound = zh_name_str .. cap_label
if compound ~= cap_label then
add_compound(compound, holonym_type)
end
end
end
end
end
-- ---------------------------------------------------------------------------
-- Location-linking helpers
-- ---------------------------------------------------------------------------
local function construct_linked_location(group, key, spec)
local full_placename = m_locations.key_to_placename(group, key)
return m_locations.construct_linked_placename(spec, full_placename)
end
-- Returns a location description string for embedding in category descriptions.
-- Shows one level of container for sub-national entries:
-- country → [[法國]]
-- state → [[加州]]([[美國]]的[[州]])
-- city → [[舊金山]]([[加州]]的[[城市]])
local function construct_location_desc(group, key, spec)
local linked = construct_linked_location(group, key, spec)
if spec.no_include_container_in_desc then return linked end
local container_iterator = m_locations.iterate_containers(group, key, spec)
local containers = container_iterator()
if not containers then return linked end
local location_type = spec.placetype
if type(location_type) == "table" then location_type = location_type[1] end
local zh_name_raw = location_type and m_placetypes.get_zh_placetype_name(location_type, nil)
local zh_type = zh_name_raw and format_zh_name(zh_name_raw)
local cont_links = {}
for _, c in ipairs(containers) do
insert(cont_links, construct_linked_location(c.group, c.key, c.spec))
end
local cont_str = zh_join(cont_links)
if zh_type then
return linked .. "(" .. cont_str .. "的" .. zh_type .. ")"
else
return linked .. "(位於" .. cont_str .. ")"
end
end
-- Fetch or construct the location description, substituting "+++" with the
-- auto-constructed description if present in spec.keydesc.
local function fetch_or_construct_location_desc(group, key, spec)
local val = spec.keydesc
if is_callable(val) then
val = val(group, key, spec)
spec.keydesc = val
end
if val then
if val:find("%+%+%+", 1, true) then
local base = construct_location_desc(group, key, spec)
val = gsub_literally(val, "+++", base)
end
return val
end
return construct_location_desc(group, key, spec)
end
-- ---------------------------------------------------------------------------
-- Split label at every occurrence of 的
-- Returns list of {place, placetype} tables (all possible splits left→right).
-- ---------------------------------------------------------------------------
local function split_at_de(label)
local results = {}
local de = "的"
local start = 1
while true do
local s, e = label:find(de, start, true)
if not s then break end
local place_part = label:sub(1, s - 1)
local type_part = label:sub(e + 1)
if #place_part > 0 and #type_part > 0 then
insert(results, {place = place_part, placetype = type_part})
end
start = e + 1
end
return results
end
-- Locate group + key + spec for a Chinese location string.
local function find_place(place_str)
local group, spec = m_locations.find_canonical_key(place_str)
if group then return group, place_str, spec end
return nil
end
-- No articles in Chinese; just return the key.
local function get_prefixed_key(key, spec)
if m_placetypes.get_prefixed_key then
return m_placetypes.get_prefixed_key(key, spec)
end
return key
end
-- Check whether zh_name_val (string or array) contains type_zh.
local function zh_name_has(zh_name_val, type_zh)
if type(zh_name_val) == "table" then
for _, n in ipairs(zh_name_val) do
if n == type_zh then return true end
end
return false
end
return zh_name_val == type_zh
end
-- Search divs list for a div whose Chinese name matches type_zh.
-- Singularizes div.type before zh_name lookup (divs use plural English keys
-- like "states", while zh_placetype_data uses singular keys like "state").
-- Uses forward lookup (English key → zh_name) to handle many-to-one collisions.
-- Returns: div_parent (English key or false), prep, matched_en_type.
-- div_parent == nil means no match; div_parent == false means match but no parent cat.
local function find_div_by_zh_name(divs, type_zh)
if not divs then return nil, nil, nil end
if type(divs) ~= "table" then divs = {divs} end
for _, div in ipairs(divs) do
if type(div) == "string" then div = {type = div} end
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" or cat_as.type then cat_as = {cat_as} end
for _, pt_cat_as in ipairs(cat_as) do
if type(pt_cat_as) == "string" then pt_cat_as = {type = pt_cat_as} end
-- Singularize plural div type before zh_name lookup.
local lookup_type = m_placetypes.maybe_singularize_placetype(pt_cat_as.type)
or pt_cat_as.type
local div_zh_raw = m_placetypes.get_zh_placetype_name(lookup_type, nil)
if div_zh_raw and zh_name_has(div_zh_raw, type_zh) then
local div_parent = pt_cat_as.container_parent_type
if div_parent == nil then div_parent = div.container_parent_type end
if div_parent == nil then div_parent = pt_cat_as.type end
return div_parent, pt_cat_as.prep or div.prep or "of", lookup_type
end
end
end
return nil, nil, nil
end
-- ===========================================================================
-- Handler 1 — Bare capital category labels
-- e.g. "首都", "省會", "首府", "縣治"
-- ===========================================================================
insert(handlers, function(label)
local holonym_type = zh_cap_label_to_holonym[label]
if not holonym_type then return nil end
local zh_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
local zh_holonym = zh_raw and format_zh_name(zh_raw) or holonym_type
return {
type = "name",
topic = label,
description = "{{{langname}}}中" .. zh_holonym .. "[[" .. label .. "]]的名稱。",
parents = {"首都"},
}
end)
-- ===========================================================================
-- Handler 2 — Bare placetype categories
-- e.g. "城市", "河流", "山脈", "國家"
-- ===========================================================================
insert(handlers, function(label)
local en_keys = zh_name_to_pt_keys[label]
if not en_keys then return nil end
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt then
local from_cat = {from_category = true, no_split_qualifiers = true}
local bare_parent = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
local bcp = m_placetypes.get_placetype_prop(pt, "bare_category_parent")
if bcp then return bcp end
local cls = m_placetypes.get_placetype_prop(pt, "class")
if cls then return class_to_bare_category_parent[cls] end
end, from_cat) or "地名"
local addl_parents = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "addl_bare_category_parents")
end, from_cat)
local breadcrumb = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "bare_category_breadcrumb")
end, from_cat)
if type(bare_parent) == "string" and breadcrumb then
bare_parent = {name = bare_parent, sort = breadcrumb}
end
local parents = {bare_parent}
if addl_parents then m_table.extend(parents, addl_parents) end
return {
type = "name",
topic = label,
description = "{{{langname}}}中[[" .. label .. "]]的名稱。",
breadcrumb = breadcrumb,
parents = parents,
}
end
end
end)
-- ===========================================================================
-- Handler 3 — Bare placename categories (known locations)
-- e.g. "美國", "法國", "北京", "加利福尼亞州"
-- Supports: overriding_bare_label_parents, bare_category_parent_type,
-- "+++" expansion, addl_parents, wp/wpcat/commonscat, fulldesc.
-- "+++" expands to: CONTAINER的TYPE (Chinese order) or CONTAINERTYPE for "地名".
-- ===========================================================================
insert(handlers, function(label)
local group, spec = m_locations.find_canonical_key(label)
if not group then return nil end
local wp = spec.wp
if wp == nil then wp = true end
local wpcat = spec.wpcat
if wpcat == nil then wpcat = wp end
local commonscat = spec.commonscat
if commonscat == nil then commonscat = wpcat end
local full_placename = m_locations.key_to_placename(group, label)
local full_container_placename
local container_iterator = m_locations.iterate_containers(group, label, spec)
local containers = container_iterator()
if containers then
full_container_placename = m_locations.key_to_placename(
containers[1].group, containers[1].key)
end
-- Substitute %l (full placename), %e (same, no elliptical form in Chinese),
-- %c (container placename) in wp/wpcat/commonscat values.
local function format_boxval(val)
if val == true then val = "%l" end
if type(val) == "string" then
val = gsub_literally(val, "%l", full_placename)
val = gsub_literally(val, "%e", full_placename)
if val:find("%%c", 1, true) and full_container_placename then
val = gsub_literally(val, "%c", full_container_placename)
end
end
return val
end
-- Determine Chinese type label for parent category construction.
-- bare_category_parent_type overrides the location's own placetype.
local parent_zh_type
do
local override = spec.bare_category_parent_type
if override then
local t = type(override) == "table"
and (override.type or override[1]) or override
local raw = type(t) == "string"
and m_placetypes.get_zh_placetype_name(t, nil)
parent_zh_type = raw and format_zh_name(raw)
end
if not parent_zh_type then
local loc_type = fetch_primary_placetype(label, spec)
local raw = loc_type and m_placetypes.get_zh_placetype_name(loc_type, nil)
parent_zh_type = raw and format_zh_name(raw)
end
end
local parents = {}
local bare_label_parents = spec.overriding_bare_label_parents
if not bare_label_parents then
bare_label_parents = {"+++"}
end
local inserted_containers = false
for _, parent in ipairs(bare_label_parents) do
if parent == "+++" then
-- Expand to Chinese parent: CONTAINER的TYPE or CONTAINERTYPE for "地名";
-- omit 的 when TYPE=="國家" and container is a continent (非洲國家 not 非洲的國家)
if containers then
for _, container in ipairs(containers) do
local ck = get_prefixed_key(container.key, container.spec)
local parent_cat
if parent_zh_type == "地名" then
parent_cat = ck .. "地名"
elseif parent_zh_type == "國家" and spec_is_broad(container.spec) then
parent_cat = ck .. "國家"
elseif parent_zh_type then
parent_cat = ck .. "的" .. parent_zh_type
else
parent_cat = ck
end
m_table.insertIfNot(parents, parent_cat)
end
inserted_containers = true
end
else
m_table.insertIfNot(parents, parent)
end
end
-- If "+++" wasn't present in bare_label_parents and containers exist, insert
-- bare container keys as fallback (mirrors enwikt behaviour).
if not inserted_containers and containers then
for _, container in ipairs(containers) do
m_table.insertIfNot(parents, container.key)
end
end
if spec.addl_parents then
for _, p in ipairs(spec.addl_parents) do
m_table.insertIfNot(parents, p)
end
end
if #parents == 0 then insert(parents, "地名") end
local description = spec.fulldesc or (
"{{{langname}}}中與" ..
fetch_or_construct_location_desc(group, label, spec) ..
"相關的詞語。")
return {
type = "topic",
description = description,
breadcrumb = full_placename,
parents = parents,
wp = format_boxval(wp),
wpcat = format_boxval(wpcat),
commonscat = format_boxval(commonscat),
}
end)
-- ===========================================================================
-- Handler 4 — Generic placetype + location
-- e.g. "法國的城市", "德國的河流", "亞洲的國家"
-- Matches placetypes that carry generic_before_non_cities or generic_before_cities.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local en_keys = zh_name_to_pt_keys[type_zh]
if en_keys then
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt and ptdata and
(ptdata.generic_before_non_cities or ptdata.generic_before_cities) then
local group, key, spec = find_place(place_str)
if group then
local allow = true
if spec.is_former_place and en_key ~= "place" then allow = false end
if allow then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end
end
end)
-- ===========================================================================
-- Handler 5 — Capital + location (bare capital label)
-- e.g. "美國的首都", "四川省的省會", "德克薩斯州的首府"
-- Handles bare capital labels from zh_cap_label_to_holonym.
-- Must precede handler 6 (compound capital) and handler 7 (division) to avoid
-- mis-matching capital labels that also appear in a location's divs via cat_as.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
if zh_cap_label_to_holonym[type_zh] then
local group, key, spec = find_place(place_str)
if group then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Handler 6 — Compound capital label + location
-- e.g. "美國的州首府", "法國的行政區首府", "澳大利亞的地區首府"
-- Compound label = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- Built at load time in zh_compound_cap_to_placetypes.
-- Must precede handler 7 (division) to avoid mis-matching.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local target_pts = zh_compound_cap_to_placetypes[type_zh]
if target_pts then
local group, key, spec = find_place(place_str)
if group then
-- Check if any target placetype appears in this location's divs.
-- Div types are plural English strings ("states"); singularize before comparing.
local found = false
for _, divlist in ipairs({spec.divs, spec.addl_divs,
spec.addl_divs_for_categorization}) do
if divlist and not found then
if type(divlist) ~= "table" then divlist = {divlist} end
for _, div in ipairs(divlist) do
if type(div) == "string" then div = {type = div} end
local function check_div_type(pt_type)
local sg = m_placetypes.maybe_singularize_placetype(pt_type)
or pt_type
for _, target_pt in ipairs(target_pts) do
if sg == target_pt or pt_type == target_pt then
found = true
break
end
end
end
check_div_type(div.type)
if not found and div.cat_as then
local ca = div.cat_as
if type(ca) ~= "table" or ca.type then ca = {ca} end
for _, pt_ca in ipairs(ca) do
if type(pt_ca) == "string" then
pt_ca = {type = pt_ca}
end
check_div_type(pt_ca.type)
if found then break end
end
end
if found then break end
end
end
if found then break end
end
if found then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc
.. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or
(type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end)
-- ===========================================================================
-- Handler 7 — Administrative division + location
-- e.g. "美國的州", "法國的省", "英國的構成國", "日本的縣"
-- Uses forward zh_name lookup (English div type → zh_name) to avoid collision
-- between English types that share the same Chinese name (state/oblast/canton → "州").
-- Singularizes plural div types ("states" → "state") before zh_name lookup.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local group, key, spec = find_place(place_str)
if group then
local div_parent, div_prep, matched_type = find_div_by_zh_name(spec.divs, type_zh)
if div_parent == nil then
div_parent, div_prep, matched_type = find_div_by_zh_name(spec.addl_divs, type_zh)
end
if div_parent == nil then
div_parent, div_prep, matched_type =
find_div_by_zh_name(spec.addl_divs_for_categorization, type_zh)
end
if div_parent ~= nil then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if div_parent then -- div_parent == false means suppress parent cat
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = " " .. key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
-- Map English div_parent key back to Chinese for parent category name.
local dp_zh
if type(div_parent) == "string" then
local sg_dp = m_placetypes.maybe_singularize_placetype(div_parent)
or div_parent
local dp_raw = m_placetypes.get_zh_placetype_name(sg_dp, nil)
dp_zh = dp_raw and format_zh_name(dp_raw) or type_zh
else
dp_zh = type_zh
end
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. dp_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = " " .. key})
end
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Static labels — top-level grouping categories
-- ===========================================================================
labels["地名"] = {
type = "grouping",
description = "{{{langname}}}中地名的分類。",
parents = {"名稱"},
}
labels["政治實體"] = {
type = "grouping",
description = "{{{langname}}}中政治實體的名稱。",
parents = {"地名"},
}
labels["行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中行政區劃的名稱。",
parents = {"地名"},
}
labels["聚落"] = {
type = "grouping",
description = "{{{langname}}}中聚落地名。",
parents = {"地名"},
}
labels["首都"] = {
type = "grouping",
description = "{{{langname}}}中首都及各類首府的名稱。",
parents = {"聚落"},
}
labels["自然地物"] = {
type = "grouping",
description = "{{{langname}}}中自然地物的名稱。",
parents = {"地名"},
}
labels["人工建物"] = {
type = "grouping",
description = "{{{langname}}}中人工建物的名稱。",
parents = {"地名"},
}
labels["地理文化區域"] = {
type = "grouping",
description = "{{{langname}}}中地理及文化區域的名稱。",
parents = {"地名"},
}
labels["特定國家的行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中特定國家行政區劃的分類。",
parents = {"地名"},
}
-- ---------------------------------------------------------------------------
-- Misc. place-related labels
-- ---------------------------------------------------------------------------
labels["外名"] = {
type = "name",
description = "{{{langname}}}[[外名]]。",
parents = {"地名"},
}
labels["古埃及行政區"] = {
type = "name",
description = "{{{langname}}}中[[古埃及]][[行政區]]的名稱。",
breadcrumb = "行政區",
parents = {"古埃及"},
}
-- ---------------------------------------------------------------------------
-- Sui generis place categories (cross-jurisdictional / transcontinental regions)
-- ---------------------------------------------------------------------------
labels["大西洋"] = {
type = "related-to",
description = "{{{langname}}}中與[[大西洋]]相關的詞語。",
parents = {"地球"},
}
labels["不列顛群島"] = {
type = "related-to",
description = "{{{langname}}}中與[[大不列顛島]]、[[愛爾蘭島]]及鄰近島嶼相關的詞語。",
parents = {"歐洲", "島嶼"},
}
labels["歐盟"] = {
type = "related-to",
description = "{{{langname}}}中與[[歐盟]]相關的詞語。",
parents = {"歐洲"},
}
labels["加斯科涅"] = {
type = "related-to",
description = "{{{langname}}}中與[[加斯科涅]]相關的詞語。",
parents = {"法國"},
}
labels["印度次大陸"] = {
type = "related-to",
description = "{{{langname}}}中與[[印度次大陸]]相關的詞語。",
parents = {"南亞"},
}
labels["孟加拉"] = {
type = "related-to",
description = "{{{langname}}}中與[[孟加拉]]地區相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾"] = {
type = "related-to",
description = "{{{langname}}}中與[[克什米爾]]相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾(印度)"] = {
type = "related-to",
description = "{{{langname}}}中[[印度]]管轄的[[克什米爾]]地名。",
parents = {"印度", "克什米爾"},
}
labels["朝鮮半島"] = {
type = "related-to",
description = "{{{langname}}}中與[[朝鮮半島]]相關的詞語。",
parents = {"亞洲"},
}
labels["朗格多克"] = {
type = "related-to",
description = "{{{langname}}}中與[[朗格多克]]相關的詞語。",
parents = {"法國"},
}
labels["拉普蘭"] = {
type = "related-to",
description = "{{{langname}}}中與[[拉普蘭]]相關的詞語。",
parents = {"歐洲", "芬蘭", "挪威", "俄羅斯", "瑞典"},
}
labels["中東"] = {
type = "related-to",
description = "{{{langname}}}中與[[中東]]相關的詞語。",
parents = {"非洲", "亞洲"},
}
labels["荷屬安的列斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[荷屬安的列斯]]相關的詞語。",
parents = {"荷蘭", "北美洲"},
}
labels["海外法國"] = {
type = "related-to",
description = "{{{langname}}}中與[[海外法國]]相關的詞語。",
parents = {"法國"},
}
labels["普羅旺斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[普羅旺斯]]相關的詞語。",
parents = {"法國"},
}
labels["波蘭人民共和國"] = {
type = "related-to",
description = "{{{langname}}}中與[[波蘭人民共和國]]相關的詞語。",
parents = {"波蘭"},
}
labels["南亞"] = {
type = "related-to",
description = "{{{langname}}}中與[[南亞]]相關的詞語。",
parents = {"歐亞大陸", "亞洲"},
}
return {LABELS = labels, HANDLERS = handlers}
qd3k2n3vi5e3n3cdxgzvh79yls2ecyx
9759531
9759530
2026-05-14T21:56:22Z
TongcyDai
53191
9759531
Scribunto
text/plain
-- Chinese Wiktionary port of enwikt [[Module:category tree/topic/Places]].
-- Generates descriptions and parent-category specs for place-related category pages.
--
-- Deployment name: TBD — likely [[Module:place/catetree]] or an equivalent path
-- under zhwikt's category-tree infrastructure.
--
-- Architecture mirrors enwikt: two tables exported as LABELS and HANDLERS.
-- LABELS — static label → spec mappings (top-level grouping categories)
-- HANDLERS — ordered list of functions; first non-nil return wins
--
-- Chinese-specific adaptations vs. enwikt:
-- * Pattern matching on 的 instead of English "in"/"of"
-- * Handler 3 bare-location parent: CONTAINER的TYPE (order reversed vs. enwikt)
-- Special case: TYPE=="地名" → CONTAINERTYPE (no 的)
-- * Handler 6 uses forward zh_name lookup (div.type → zh_name) instead of
-- a reverse map, because many English placetypes share the same Chinese name
-- (e.g. state/oblast/canton all → "州"; province/department/voivodeship → "省")
-- * Handler 7 (new): compound capital label + location ("美國的州首府")
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type)
-- Built at load time; skips country/constituent country (no 國首都 category)
-- * No article handling (Chinese has no definite article)
-- * Serial enumeration: 、(non-final) 和(final)
-- * Description format: {{{langname}}}中LOCATION_DESC[[PLACETYPE]]的名稱。
local labels = {}
local handlers = {}
local m_table = require("Module:table")
local m_locations = require("Module:place/locations")
local m_placetypes = require("Module:place/placetypes")
local m_zh_data = require("Module:place/data")
local internal_error = m_locations.internal_error
local zh_strings = m_placetypes.zh_strings
local zh_cap_by_holonym = m_placetypes.zh_capital_label_by_holonym_type
local format_zh_name = m_placetypes.format_zh_name
local insert = table.insert
local concat = table.concat
local function is_callable(val) return type(val) == "function" end
-- Literal-string gsub (no regex metacharacters interpreted in `from` or `to`).
local function gsub_literally(str, from, to)
return (str:gsub(from:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"),
to:gsub("%%", "%%%%")))
end
-- Get the first (primary) placetype from spec.
local function fetch_primary_placetype(key, spec)
local placetype = spec.placetype
if type(placetype) == "table" then placetype = placetype[1] end
return placetype
end
-- True for continent/supercontinent/planet specs (used to omit 的 in 非洲國家).
local function spec_is_broad(spec)
local pt = spec and spec.placetype
if not pt then return false end
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "supercontinent" or p == "planet" then return true end
end
return false
end
-- ---------------------------------------------------------------------------
-- Chinese serial joiner: {"A","B","C"} → "A、B和C"
-- ---------------------------------------------------------------------------
local function zh_join(items)
local n = #items
if n == 0 then return "" end
if n == 1 then return items[1] end
local parts = {}
for i = 1, n - 1 do
insert(parts, items[i])
if i < n - 1 then insert(parts, zh_strings.enum_sep) end
end
insert(parts, zh_strings.and_conj)
insert(parts, items[n])
return concat(parts)
end
-- ---------------------------------------------------------------------------
-- Placetype class → Chinese bare parent category label
-- ---------------------------------------------------------------------------
local class_to_bare_category_parent = {
["polity"] = "政治實體",
["subpolity"] = "行政區劃",
["settlement"] = "聚落",
["non-admin settlement"] = "聚落",
["capital"] = "首都",
["natural feature"] = "自然地物",
["man-made structure"] = "人工建物",
["geographic region"] = "地理文化區域",
}
local class_is_political_division = {
["polity"] = true,
["subpolity"] = true,
["settlement"] = true,
["non-admin settlement"] = false,
["capital"] = true,
["natural feature"] = false,
["man-made structure"] = false,
["geographic region"] = false,
["generic place"] = false,
}
-- ---------------------------------------------------------------------------
-- Load-time reverse maps
-- ---------------------------------------------------------------------------
-- Chinese capital label → holonym type (e.g. "首都" → "country")
local zh_cap_label_to_holonym = {}
for holonym_type, zh_label in pairs(zh_cap_by_holonym) do
if not zh_cap_label_to_holonym[zh_label] then
zh_cap_label_to_holonym[zh_label] = holonym_type
end
end
-- Chinese placetype name → list of English placetype keys (one-to-many).
-- Used by handler 2 (bare placetype) and handler 4 (generic X的Y).
local zh_name_to_pt_keys = {}
do
local function add(name, en_key)
zh_name_to_pt_keys[name] = zh_name_to_pt_keys[name] or {}
insert(zh_name_to_pt_keys[name], en_key)
end
for en_key, entry in pairs(m_zh_data.zh_placetype_data) do
if entry.zh_name then
local names = type(entry.zh_name) == "table" and entry.zh_name or {entry.zh_name}
for _, name in ipairs(names) do add(name, en_key) end
end
if entry.zh_name_by_holonym_type then
for _, zh_name_val in pairs(entry.zh_name_by_holonym_type) do
local names = type(zh_name_val) == "table" and zh_name_val or {zh_name_val}
for _, name in ipairs(names) do add(name, en_key) end
end
end
end
end
-- Compound capital label → list of holonym placetype keys.
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- E.g. "州首府" → {"state"}, "地區首府" → {"territory", "region"}.
-- Skip country/constituent country (no 國首都 category per design).
-- Skip entries where compound == cap_label (e.g. "省省會"/"縣縣治" excluded to
-- avoid ambiguous matches — these bare labels are already handled by handler 5).
local zh_compound_cap_to_placetypes = {}
do
local function add_compound(compound, pt)
zh_compound_cap_to_placetypes[compound] = zh_compound_cap_to_placetypes[compound] or {}
insert(zh_compound_cap_to_placetypes[compound], pt)
end
for holonym_type, cap_label in pairs(zh_cap_by_holonym) do
if holonym_type ~= "country" and holonym_type ~= "constituent country" then
local zh_name_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
if zh_name_raw then
local zh_name_str = format_zh_name(zh_name_raw)
local compound = zh_name_str .. cap_label
if compound ~= cap_label then
add_compound(compound, holonym_type)
end
end
end
end
end
-- ---------------------------------------------------------------------------
-- Location-linking helpers
-- ---------------------------------------------------------------------------
local function construct_linked_location(group, key, spec)
local full_placename = m_locations.key_to_placename(group, key)
return m_locations.construct_linked_placename(spec, full_placename)
end
-- Returns a location description string for embedding in category descriptions.
-- Shows one level of container for sub-national entries:
-- country → [[法國]]
-- state → [[加州]]([[美國]]的[[州]])
-- city → [[舊金山]]([[加州]]的[[城市]])
local function construct_location_desc(group, key, spec)
local linked = construct_linked_location(group, key, spec)
if spec.no_include_container_in_desc then return linked end
local container_iterator = m_locations.iterate_containers(group, key, spec)
local containers = container_iterator()
if not containers then return linked end
local location_type = spec.placetype
if type(location_type) == "table" then location_type = location_type[1] end
local zh_name_raw = location_type and m_placetypes.get_zh_placetype_name(location_type, nil)
local zh_type = zh_name_raw and format_zh_name(zh_name_raw)
local cont_links = {}
for _, c in ipairs(containers) do
insert(cont_links, construct_linked_location(c.group, c.key, c.spec))
end
local cont_str = zh_join(cont_links)
if zh_type then
return linked .. "(" .. cont_str .. "的" .. zh_type .. ")"
else
return linked .. "(位於" .. cont_str .. ")"
end
end
-- Fetch or construct the location description, substituting "+++" with the
-- auto-constructed description if present in spec.keydesc.
local function fetch_or_construct_location_desc(group, key, spec)
local val = spec.keydesc
if is_callable(val) then
val = val(group, key, spec)
spec.keydesc = val
end
if val then
if val:find("%+%+%+", 1, true) then
local base = construct_location_desc(group, key, spec)
val = gsub_literally(val, "+++", base)
end
return val
end
return construct_location_desc(group, key, spec)
end
-- ---------------------------------------------------------------------------
-- Split label at every occurrence of 的
-- Returns list of {place, placetype} tables (all possible splits left→right).
-- ---------------------------------------------------------------------------
local function split_at_de(label)
local results = {}
local de = "的"
local start = 1
while true do
local s, e = label:find(de, start, true)
if not s then break end
local place_part = label:sub(1, s - 1)
local type_part = label:sub(e + 1)
if #place_part > 0 and #type_part > 0 then
insert(results, {place = place_part, placetype = type_part})
end
start = e + 1
end
return results
end
-- Locate group + key + spec for a Chinese location string.
local function find_place(place_str)
local group, spec = m_locations.find_canonical_key(place_str)
if group then return group, place_str, spec end
return nil
end
-- No articles in Chinese; just return the key.
local function get_prefixed_key(key, spec)
if m_placetypes.get_prefixed_key then
return m_placetypes.get_prefixed_key(key, spec)
end
return key
end
-- Check whether zh_name_val (string or array) contains type_zh.
local function zh_name_has(zh_name_val, type_zh)
if type(zh_name_val) == "table" then
for _, n in ipairs(zh_name_val) do
if n == type_zh then return true end
end
return false
end
return zh_name_val == type_zh
end
-- Search divs list for a div whose Chinese name matches type_zh.
-- Singularizes div.type before zh_name lookup (divs use plural English keys
-- like "states", while zh_placetype_data uses singular keys like "state").
-- Uses forward lookup (English key → zh_name) to handle many-to-one collisions.
-- Returns: div_parent (English key or false), prep, matched_en_type.
-- div_parent == nil means no match; div_parent == false means match but no parent cat.
local function find_div_by_zh_name(divs, type_zh)
if not divs then return nil, nil, nil end
if type(divs) ~= "table" then divs = {divs} end
for _, div in ipairs(divs) do
if type(div) == "string" then div = {type = div} end
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" or cat_as.type then cat_as = {cat_as} end
for _, pt_cat_as in ipairs(cat_as) do
if type(pt_cat_as) == "string" then pt_cat_as = {type = pt_cat_as} end
-- Singularize plural div type before zh_name lookup.
local lookup_type = m_placetypes.maybe_singularize_placetype(pt_cat_as.type)
or pt_cat_as.type
local div_zh_raw = m_placetypes.get_zh_placetype_name(lookup_type, nil)
if div_zh_raw and zh_name_has(div_zh_raw, type_zh) then
local div_parent = pt_cat_as.container_parent_type
if div_parent == nil then div_parent = div.container_parent_type end
if div_parent == nil then div_parent = pt_cat_as.type end
return div_parent, pt_cat_as.prep or div.prep or "of", lookup_type
end
end
end
return nil, nil, nil
end
-- ===========================================================================
-- Handler 1 — Bare capital category labels
-- e.g. "首都", "省會", "首府", "縣治"
-- ===========================================================================
insert(handlers, function(label)
local holonym_type = zh_cap_label_to_holonym[label]
if not holonym_type then return nil end
local zh_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
local zh_holonym = zh_raw and format_zh_name(zh_raw) or holonym_type
return {
type = "name",
topic = label,
description = "{{{langname}}}中" .. zh_holonym .. "[[" .. label .. "]]的名稱。",
parents = {"首都"},
}
end)
-- ===========================================================================
-- Handler 2 — Bare placetype categories
-- e.g. "城市", "河流", "山脈", "國家"
-- ===========================================================================
insert(handlers, function(label)
local en_keys = zh_name_to_pt_keys[label]
if not en_keys then return nil end
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt then
local from_cat = {from_category = true, no_split_qualifiers = true}
local bare_parent = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
local bcp = m_placetypes.get_placetype_prop(pt, "bare_category_parent")
if bcp then return bcp end
local cls = m_placetypes.get_placetype_prop(pt, "class")
if cls then return class_to_bare_category_parent[cls] end
end, from_cat) or "地名"
local addl_parents = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "addl_bare_category_parents")
end, from_cat)
local breadcrumb = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "bare_category_breadcrumb")
end, from_cat)
if type(bare_parent) == "string" and breadcrumb then
bare_parent = {name = bare_parent, sort = breadcrumb}
end
local parents = {bare_parent}
if addl_parents then m_table.extend(parents, addl_parents) end
return {
type = "name",
topic = label,
description = "{{{langname}}}中[[" .. label .. "]]的名稱。",
breadcrumb = breadcrumb,
parents = parents,
}
end
end
end)
-- ===========================================================================
-- Handler 3 — Bare placename categories (known locations)
-- e.g. "美國", "法國", "北京", "加利福尼亞州"
-- Supports: overriding_bare_label_parents, bare_category_parent_type,
-- "+++" expansion, addl_parents, wp/wpcat/commonscat, fulldesc.
-- "+++" expands to: CONTAINER的TYPE (Chinese order) or CONTAINERTYPE for "地名".
-- ===========================================================================
insert(handlers, function(label)
local group, spec = m_locations.find_canonical_key(label)
if not group then return nil end
local wp = spec.wp
if wp == nil then wp = true end
local wpcat = spec.wpcat
if wpcat == nil then wpcat = wp end
local commonscat = spec.commonscat
if commonscat == nil then commonscat = wpcat end
local full_placename = m_locations.key_to_placename(group, label)
local full_container_placename
local container_iterator = m_locations.iterate_containers(group, label, spec)
local containers = container_iterator()
if containers then
full_container_placename = m_locations.key_to_placename(
containers[1].group, containers[1].key)
end
-- Substitute %l (full placename), %e (same, no elliptical form in Chinese),
-- %c (container placename) in wp/wpcat/commonscat values.
local function format_boxval(val)
if val == true then val = "%l" end
if type(val) == "string" then
val = gsub_literally(val, "%l", full_placename)
val = gsub_literally(val, "%e", full_placename)
if val:find("%%c", 1, true) and full_container_placename then
val = gsub_literally(val, "%c", full_container_placename)
end
end
return val
end
-- Determine Chinese type label for parent category construction.
-- bare_category_parent_type overrides the location's own placetype.
local parent_zh_type
do
local override = spec.bare_category_parent_type
if override then
local t = type(override) == "table"
and (override.type or override[1]) or override
local raw = type(t) == "string"
and m_placetypes.get_zh_placetype_name(t, nil)
parent_zh_type = raw and format_zh_name(raw)
end
if not parent_zh_type then
local loc_type = fetch_primary_placetype(label, spec)
local raw = loc_type and m_placetypes.get_zh_placetype_name(loc_type, nil)
parent_zh_type = raw and format_zh_name(raw)
end
end
local parents = {}
local bare_label_parents = spec.overriding_bare_label_parents
if not bare_label_parents then
bare_label_parents = {"+++"}
end
local inserted_containers = false
for _, parent in ipairs(bare_label_parents) do
if parent == "+++" then
-- Expand to Chinese parent: CONTAINER的TYPE or CONTAINERTYPE for "地名";
-- omit 的 when TYPE=="國家" and container is a continent (非洲國家 not 非洲的國家)
if containers then
for _, container in ipairs(containers) do
local ck = get_prefixed_key(container.key, container.spec)
local parent_cat
if parent_zh_type == "地名" then
parent_cat = ck .. "地名"
elseif parent_zh_type == "國家" and spec_is_broad(container.spec) then
parent_cat = ck .. "國家"
elseif parent_zh_type then
parent_cat = ck .. "的" .. parent_zh_type
else
parent_cat = ck
end
m_table.insertIfNot(parents, parent_cat)
end
inserted_containers = true
end
else
m_table.insertIfNot(parents, parent)
end
end
-- If "+++" wasn't present in bare_label_parents and containers exist, insert
-- bare container keys as fallback (mirrors enwikt behaviour).
if not inserted_containers and containers then
for _, container in ipairs(containers) do
m_table.insertIfNot(parents, container.key)
end
end
if spec.addl_parents then
for _, p in ipairs(spec.addl_parents) do
m_table.insertIfNot(parents, p)
end
end
if #parents == 0 then insert(parents, "地名") end
local description = spec.fulldesc or (
"{{{langname}}}中與" ..
fetch_or_construct_location_desc(group, label, spec) ..
"相關的詞語。")
return {
type = "topic",
description = description,
breadcrumb = full_placename,
parents = parents,
wp = format_boxval(wp),
wpcat = format_boxval(wpcat),
commonscat = format_boxval(commonscat),
}
end)
-- ===========================================================================
-- Handler 4 — Generic placetype + location
-- e.g. "法國的城市", "德國的河流", "亞洲的國家"
-- Matches placetypes that carry generic_before_non_cities or generic_before_cities.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local en_keys = zh_name_to_pt_keys[type_zh]
if en_keys then
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt and ptdata and
(ptdata.generic_before_non_cities or ptdata.generic_before_cities) then
local group, key, spec = find_place(place_str)
if group then
local allow = true
if spec.is_former_place and en_key ~= "place" then allow = false end
if allow then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end
end
end)
-- ===========================================================================
-- Handler 4b — Continent/broad location + 國家 (no 的)
-- e.g. "非洲國家", "亞洲國家"
-- Handles the no-的 form generated for country categories under continents.
-- ===========================================================================
insert(handlers, function(label)
local zh_type = "國家"
local zh_type_len = #zh_type -- byte length (6 for 2 Chinese chars in UTF-8)
if #label <= zh_type_len or label:sub(-zh_type_len) ~= zh_type then return nil end
local place_str = label:sub(1, #label - zh_type_len)
local group, key, spec = find_place(place_str)
if not group or not spec_is_broad(spec) then return nil end
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. zh_type .. "]]的名稱。"
local parents = {key, {name = zh_type, sort = " " .. key}}
return {
type = "name",
topic = label,
description = desc,
breadcrumb = zh_type,
parents = parents,
}
end)
-- ===========================================================================
-- Handler 5 — Capital + location (bare capital label)
-- e.g. "美國的首都", "四川省的省會", "德克薩斯州的首府"
-- Handles bare capital labels from zh_cap_label_to_holonym.
-- Must precede handler 6 (compound capital) and handler 7 (division) to avoid
-- mis-matching capital labels that also appear in a location's divs via cat_as.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
if zh_cap_label_to_holonym[type_zh] then
local group, key, spec = find_place(place_str)
if group then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Handler 6 — Compound capital label + location
-- e.g. "美國的州首府", "法國的行政區首府", "澳大利亞的地區首府"
-- Compound label = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- Built at load time in zh_compound_cap_to_placetypes.
-- Must precede handler 7 (division) to avoid mis-matching.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local target_pts = zh_compound_cap_to_placetypes[type_zh]
if target_pts then
local group, key, spec = find_place(place_str)
if group then
-- Check if any target placetype appears in this location's divs.
-- Div types are plural English strings ("states"); singularize before comparing.
local found = false
for _, divlist in ipairs({spec.divs, spec.addl_divs,
spec.addl_divs_for_categorization}) do
if divlist and not found then
if type(divlist) ~= "table" then divlist = {divlist} end
for _, div in ipairs(divlist) do
if type(div) == "string" then div = {type = div} end
local function check_div_type(pt_type)
local sg = m_placetypes.maybe_singularize_placetype(pt_type)
or pt_type
for _, target_pt in ipairs(target_pts) do
if sg == target_pt or pt_type == target_pt then
found = true
break
end
end
end
check_div_type(div.type)
if not found and div.cat_as then
local ca = div.cat_as
if type(ca) ~= "table" or ca.type then ca = {ca} end
for _, pt_ca in ipairs(ca) do
if type(pt_ca) == "string" then
pt_ca = {type = pt_ca}
end
check_div_type(pt_ca.type)
if found then break end
end
end
if found then break end
end
end
if found then break end
end
if found then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc
.. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or
(type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end)
-- ===========================================================================
-- Handler 7 — Administrative division + location
-- e.g. "美國的州", "法國的省", "英國的構成國", "日本的縣"
-- Uses forward zh_name lookup (English div type → zh_name) to avoid collision
-- between English types that share the same Chinese name (state/oblast/canton → "州").
-- Singularizes plural div types ("states" → "state") before zh_name lookup.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local group, key, spec = find_place(place_str)
if group then
local div_parent, div_prep, matched_type = find_div_by_zh_name(spec.divs, type_zh)
if div_parent == nil then
div_parent, div_prep, matched_type = find_div_by_zh_name(spec.addl_divs, type_zh)
end
if div_parent == nil then
div_parent, div_prep, matched_type =
find_div_by_zh_name(spec.addl_divs_for_categorization, type_zh)
end
if div_parent ~= nil then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if div_parent then -- div_parent == false means suppress parent cat
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = " " .. key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
-- Map English div_parent key back to Chinese for parent category name.
local dp_zh
if type(div_parent) == "string" then
local sg_dp = m_placetypes.maybe_singularize_placetype(div_parent)
or div_parent
local dp_raw = m_placetypes.get_zh_placetype_name(sg_dp, nil)
dp_zh = dp_raw and format_zh_name(dp_raw) or type_zh
else
dp_zh = type_zh
end
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. dp_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = " " .. key})
end
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Static labels — top-level grouping categories
-- ===========================================================================
labels["地名"] = {
type = "grouping",
description = "{{{langname}}}中地名的分類。",
parents = {"名稱"},
}
labels["政治實體"] = {
type = "grouping",
description = "{{{langname}}}中政治實體的名稱。",
parents = {"地名"},
}
labels["行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中行政區劃的名稱。",
parents = {"地名"},
}
labels["聚落"] = {
type = "grouping",
description = "{{{langname}}}中聚落地名。",
parents = {"地名"},
}
labels["首都"] = {
type = "grouping",
description = "{{{langname}}}中首都及各類首府的名稱。",
parents = {"聚落"},
}
labels["自然地物"] = {
type = "grouping",
description = "{{{langname}}}中自然地物的名稱。",
parents = {"地名"},
}
labels["人工建物"] = {
type = "grouping",
description = "{{{langname}}}中人工建物的名稱。",
parents = {"地名"},
}
labels["地理文化區域"] = {
type = "grouping",
description = "{{{langname}}}中地理及文化區域的名稱。",
parents = {"地名"},
}
labels["特定國家的行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中特定國家行政區劃的分類。",
parents = {"地名"},
}
-- ---------------------------------------------------------------------------
-- Misc. place-related labels
-- ---------------------------------------------------------------------------
labels["外名"] = {
type = "name",
description = "{{{langname}}}[[外名]]。",
parents = {"地名"},
}
labels["古埃及行政區"] = {
type = "name",
description = "{{{langname}}}中[[古埃及]][[行政區]]的名稱。",
breadcrumb = "行政區",
parents = {"古埃及"},
}
-- ---------------------------------------------------------------------------
-- Sui generis place categories (cross-jurisdictional / transcontinental regions)
-- ---------------------------------------------------------------------------
labels["大西洋"] = {
type = "related-to",
description = "{{{langname}}}中與[[大西洋]]相關的詞語。",
parents = {"地球"},
}
labels["不列顛群島"] = {
type = "related-to",
description = "{{{langname}}}中與[[大不列顛島]]、[[愛爾蘭島]]及鄰近島嶼相關的詞語。",
parents = {"歐洲", "島嶼"},
}
labels["歐盟"] = {
type = "related-to",
description = "{{{langname}}}中與[[歐盟]]相關的詞語。",
parents = {"歐洲"},
}
labels["加斯科涅"] = {
type = "related-to",
description = "{{{langname}}}中與[[加斯科涅]]相關的詞語。",
parents = {"法國"},
}
labels["印度次大陸"] = {
type = "related-to",
description = "{{{langname}}}中與[[印度次大陸]]相關的詞語。",
parents = {"南亞"},
}
labels["孟加拉"] = {
type = "related-to",
description = "{{{langname}}}中與[[孟加拉]]地區相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾"] = {
type = "related-to",
description = "{{{langname}}}中與[[克什米爾]]相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾(印度)"] = {
type = "related-to",
description = "{{{langname}}}中[[印度]]管轄的[[克什米爾]]地名。",
parents = {"印度", "克什米爾"},
}
labels["朝鮮半島"] = {
type = "related-to",
description = "{{{langname}}}中與[[朝鮮半島]]相關的詞語。",
parents = {"亞洲"},
}
labels["朗格多克"] = {
type = "related-to",
description = "{{{langname}}}中與[[朗格多克]]相關的詞語。",
parents = {"法國"},
}
labels["拉普蘭"] = {
type = "related-to",
description = "{{{langname}}}中與[[拉普蘭]]相關的詞語。",
parents = {"歐洲", "芬蘭", "挪威", "俄羅斯", "瑞典"},
}
labels["中東"] = {
type = "related-to",
description = "{{{langname}}}中與[[中東]]相關的詞語。",
parents = {"非洲", "亞洲"},
}
labels["荷屬安的列斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[荷屬安的列斯]]相關的詞語。",
parents = {"荷蘭", "北美洲"},
}
labels["海外法國"] = {
type = "related-to",
description = "{{{langname}}}中與[[海外法國]]相關的詞語。",
parents = {"法國"},
}
labels["普羅旺斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[普羅旺斯]]相關的詞語。",
parents = {"法國"},
}
labels["波蘭人民共和國"] = {
type = "related-to",
description = "{{{langname}}}中與[[波蘭人民共和國]]相關的詞語。",
parents = {"波蘭"},
}
labels["南亞"] = {
type = "related-to",
description = "{{{langname}}}中與[[南亞]]相關的詞語。",
parents = {"歐亞大陸", "亞洲"},
}
return {LABELS = labels, HANDLERS = handlers}
gb5thrtfacz5zstivhm9n6orvz29nbo
9759667
9759531
2026-05-14T23:55:58Z
TongcyDai
53191
9759667
Scribunto
text/plain
-- Chinese Wiktionary port of enwikt [[Module:category tree/topic/Places]].
-- Generates descriptions and parent-category specs for place-related category pages.
--
-- Deployment name: TBD — likely [[Module:place/catetree]] or an equivalent path
-- under zhwikt's category-tree infrastructure.
--
-- Architecture mirrors enwikt: two tables exported as LABELS and HANDLERS.
-- LABELS — static label → spec mappings (top-level grouping categories)
-- HANDLERS — ordered list of functions; first non-nil return wins
--
-- Chinese-specific adaptations vs. enwikt:
-- * Pattern matching on 的 instead of English "in"/"of"
-- * Handler 3 bare-location parent: CONTAINER的TYPE (order reversed vs. enwikt)
-- Special case: TYPE=="地點" → CONTAINERTYPE (no 的)
-- * Handler 6 uses forward zh_name lookup (div.type → zh_name) instead of
-- a reverse map, because many English placetypes share the same Chinese name
-- (e.g. state/oblast/canton all → "州"; province/department/voivodeship → "省")
-- * Handler 7 (new): compound capital label + location ("美國的州首府")
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type)
-- Built at load time; skips country/constituent country (no 國首都 category)
-- * No article handling (Chinese has no definite article)
-- * Serial enumeration: 、(non-final) 和(final)
-- * Description format: {{{langname}}}中LOCATION_DESC[[PLACETYPE]]的名稱。
local labels = {}
local handlers = {}
local m_table = require("Module:table")
local m_locations = require("Module:place/locations")
local m_placetypes = require("Module:place/placetypes")
local m_zh_data = require("Module:place/data")
local internal_error = m_locations.internal_error
local zh_strings = m_placetypes.zh_strings
local zh_cap_by_holonym = m_placetypes.zh_capital_label_by_holonym_type
local format_zh_name = m_placetypes.format_zh_name
local insert = table.insert
local concat = table.concat
local function is_callable(val) return type(val) == "function" end
-- Literal-string gsub (no regex metacharacters interpreted in `from` or `to`).
local function gsub_literally(str, from, to)
return (str:gsub(from:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"),
to:gsub("%%", "%%%%")))
end
-- Get the first (primary) placetype from spec.
local function fetch_primary_placetype(key, spec)
local placetype = spec.placetype
if type(placetype) == "table" then placetype = placetype[1] end
return placetype
end
-- True for continent/supercontinent/planet specs (used to omit 的 in 非洲國家).
local function spec_is_broad(spec)
local pt = spec and spec.placetype
if not pt then return false end
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "supercontinent" or p == "planet" then return true end
end
return false
end
-- ---------------------------------------------------------------------------
-- Chinese serial joiner: {"A","B","C"} → "A、B和C"
-- ---------------------------------------------------------------------------
local function zh_join(items)
local n = #items
if n == 0 then return "" end
if n == 1 then return items[1] end
local parts = {}
for i = 1, n - 1 do
insert(parts, items[i])
if i < n - 1 then insert(parts, zh_strings.enum_sep) end
end
insert(parts, zh_strings.and_conj)
insert(parts, items[n])
return concat(parts)
end
-- ---------------------------------------------------------------------------
-- Placetype class → Chinese bare parent category label
-- ---------------------------------------------------------------------------
local class_to_bare_category_parent = {
["polity"] = "政治實體",
["subpolity"] = "行政區劃",
["settlement"] = "聚落",
["non-admin settlement"] = "聚落",
["capital"] = "首都",
["natural feature"] = "自然地物",
["man-made structure"] = "人造構築物",
["geographic region"] = "地理文化區域",
}
local class_is_political_division = {
["polity"] = true,
["subpolity"] = true,
["settlement"] = true,
["non-admin settlement"] = false,
["capital"] = true,
["natural feature"] = false,
["man-made structure"] = false,
["geographic region"] = false,
["generic place"] = false,
}
-- Enwikt bare_category_parent / addl_bare_category_parents → zhwikt label.
-- false = no equivalent, skip.
local en_category_to_zh = {
["islands"] = "島嶼",
["cities"] = "城市",
["political divisions"] = "行政區劃",
["places"] = "地點",
["former settlements"] = "歷史聚居地",
["country-like entities"]= "類國家實體",
["names"] = "名稱",
["man-made structures"] = "人造構築物",
["countries"] = "國家",
["bodies of water"] = "水體",
["water"] = "水",
["landforms"] = "地形",
["ecosystems"] = "生態系統",
["forestry"] = "林學",
["mountains"] = "山",
["seas"] = "海",
["bridges"] = "橋",
["buildings"] = "建築",
["roads"] = "道路",
}
-- Translate enwikt category parent string to zhwikt equivalent.
-- Returns zh string, or nil if should be skipped.
-- Non-English strings (assumed already Chinese) pass through unchanged.
local function translate_cat_parent(val)
if type(val) ~= "string" then return nil end
local mapped = en_category_to_zh[val]
if mapped == false then return nil end
if mapped then return mapped end
return val
end
-- ---------------------------------------------------------------------------
-- Load-time reverse maps
-- ---------------------------------------------------------------------------
-- Chinese capital label → holonym type (e.g. "首都" → "country")
local zh_cap_label_to_holonym = {}
for holonym_type, zh_label in pairs(zh_cap_by_holonym) do
if not zh_cap_label_to_holonym[zh_label] then
zh_cap_label_to_holonym[zh_label] = holonym_type
end
end
-- Chinese placetype name → list of English placetype keys (one-to-many).
-- Used by handler 2 (bare placetype) and handler 4 (generic X的Y).
local zh_name_to_pt_keys = {}
do
local function add(name, en_key)
zh_name_to_pt_keys[name] = zh_name_to_pt_keys[name] or {}
insert(zh_name_to_pt_keys[name], en_key)
end
for en_key, entry in pairs(m_zh_data.zh_placetype_data) do
if entry.zh_name then
local names = type(entry.zh_name) == "table" and entry.zh_name or {entry.zh_name}
for _, name in ipairs(names) do add(name, en_key) end
end
if entry.zh_name_by_holonym_type then
for _, zh_name_val in pairs(entry.zh_name_by_holonym_type) do
local names = type(zh_name_val) == "table" and zh_name_val or {zh_name_val}
for _, name in ipairs(names) do add(name, en_key) end
end
end
end
end
-- Compound capital label → list of holonym placetype keys.
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- E.g. "州首府" → {"state"}, "地區首府" → {"territory", "region"}.
-- Skip country/constituent country (no 國首都 category per design).
-- Skip entries where compound == cap_label (e.g. "省省會"/"縣縣治" excluded to
-- avoid ambiguous matches — these bare labels are already handled by handler 5).
local zh_compound_cap_to_placetypes = {}
do
local function add_compound(compound, pt)
zh_compound_cap_to_placetypes[compound] = zh_compound_cap_to_placetypes[compound] or {}
insert(zh_compound_cap_to_placetypes[compound], pt)
end
for holonym_type, cap_label in pairs(zh_cap_by_holonym) do
if holonym_type ~= "country" and holonym_type ~= "constituent country" then
local zh_name_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
if zh_name_raw then
local zh_name_str = format_zh_name(zh_name_raw)
local compound = zh_name_str .. cap_label
if compound ~= cap_label then
add_compound(compound, holonym_type)
end
end
end
end
end
-- ---------------------------------------------------------------------------
-- Location-linking helpers
-- ---------------------------------------------------------------------------
local function construct_linked_location(group, key, spec)
local full_placename = m_locations.key_to_placename(group, key)
return m_locations.construct_linked_placename(spec, full_placename)
end
-- Returns a location description string for embedding in category descriptions.
-- Shows one level of container for sub-national entries:
-- country → [[法國]]
-- state → [[加州]]([[美國]]的[[州]])
-- city → [[舊金山]]([[加州]]的[[城市]])
local function construct_location_desc(group, key, spec)
local linked = construct_linked_location(group, key, spec)
if spec.no_include_container_in_desc then return linked end
local container_iterator = m_locations.iterate_containers(group, key, spec)
local containers = container_iterator()
if not containers then return linked end
local location_type = spec.placetype
if type(location_type) == "table" then location_type = location_type[1] end
local zh_name_raw = location_type and m_placetypes.get_zh_placetype_name(location_type, nil)
local zh_type = zh_name_raw and format_zh_name(zh_name_raw)
local cont_links = {}
for _, c in ipairs(containers) do
insert(cont_links, construct_linked_location(c.group, c.key, c.spec))
end
local cont_str = zh_join(cont_links)
if zh_type then
return linked .. "(" .. cont_str .. "的" .. zh_type .. ")"
else
return linked .. "(位於" .. cont_str .. ")"
end
end
-- Fetch or construct the location description, substituting "+++" with the
-- auto-constructed description if present in spec.keydesc.
local function fetch_or_construct_location_desc(group, key, spec)
local val = spec.keydesc
if is_callable(val) then
val = val(group, key, spec)
spec.keydesc = val
end
if val then
if val:find("%+%+%+", 1, true) then
local base = construct_location_desc(group, key, spec)
val = gsub_literally(val, "+++", base)
end
return val
end
return construct_location_desc(group, key, spec)
end
-- ---------------------------------------------------------------------------
-- Split label at every occurrence of 的
-- Returns list of {place, placetype} tables (all possible splits left→right).
-- ---------------------------------------------------------------------------
local function split_at_de(label)
local results = {}
local de = "的"
local start = 1
while true do
local s, e = label:find(de, start, true)
if not s then break end
local place_part = label:sub(1, s - 1)
local type_part = label:sub(e + 1)
if #place_part > 0 and #type_part > 0 then
insert(results, {place = place_part, placetype = type_part})
end
start = e + 1
end
return results
end
-- Locate group + key + spec for a Chinese location string.
local function find_place(place_str)
local group, spec = m_locations.find_canonical_key(place_str)
if group then return group, place_str, spec end
return nil
end
-- No articles in Chinese; just return the key.
local function get_prefixed_key(key, spec)
if m_placetypes.get_prefixed_key then
return m_placetypes.get_prefixed_key(key, spec)
end
return key
end
-- Check whether zh_name_val (string or array) contains type_zh.
local function zh_name_has(zh_name_val, type_zh)
if type(zh_name_val) == "table" then
for _, n in ipairs(zh_name_val) do
if n == type_zh then return true end
end
return false
end
return zh_name_val == type_zh
end
-- Search divs list for a div whose Chinese name matches type_zh.
-- Singularizes div.type before zh_name lookup (divs use plural English keys
-- like "states", while zh_placetype_data uses singular keys like "state").
-- Uses forward lookup (English key → zh_name) to handle many-to-one collisions.
-- Returns: div_parent (English key or false), prep, matched_en_type.
-- div_parent == nil means no match; div_parent == false means match but no parent cat.
local function find_div_by_zh_name(divs, type_zh)
if not divs then return nil, nil, nil end
if type(divs) ~= "table" then divs = {divs} end
for _, div in ipairs(divs) do
if type(div) == "string" then div = {type = div} end
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" or cat_as.type then cat_as = {cat_as} end
for _, pt_cat_as in ipairs(cat_as) do
if type(pt_cat_as) == "string" then pt_cat_as = {type = pt_cat_as} end
-- Singularize plural div type before zh_name lookup.
local lookup_type = m_placetypes.maybe_singularize_placetype(pt_cat_as.type)
or pt_cat_as.type
local div_zh_raw = m_placetypes.get_zh_placetype_name(lookup_type, nil)
if div_zh_raw and zh_name_has(div_zh_raw, type_zh) then
local div_parent = pt_cat_as.container_parent_type
if div_parent == nil then div_parent = div.container_parent_type end
if div_parent == nil then div_parent = pt_cat_as.type end
return div_parent, pt_cat_as.prep or div.prep or "of", lookup_type
end
end
end
return nil, nil, nil
end
-- ===========================================================================
-- Handler 1 — Bare capital category labels
-- e.g. "首都", "省會", "首府", "縣治"
-- ===========================================================================
insert(handlers, function(label)
local holonym_type = zh_cap_label_to_holonym[label]
if not holonym_type then return nil end
local zh_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
local zh_holonym = zh_raw and format_zh_name(zh_raw) or holonym_type
return {
type = "name",
topic = label,
description = "{{{langname}}}中" .. zh_holonym .. "[[" .. label .. "]]的名稱。",
parents = {"首都"},
}
end)
-- ===========================================================================
-- Handler 2 — Bare placetype categories
-- e.g. "城市", "河流", "山脈", "國家"
-- ===========================================================================
insert(handlers, function(label)
local en_keys = zh_name_to_pt_keys[label]
if not en_keys then return nil end
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt then
local from_cat = {from_category = true, no_split_qualifiers = true}
local bare_parent = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
local bcp = m_placetypes.get_placetype_prop(pt, "bare_category_parent")
if bcp then
local zh = translate_cat_parent(bcp)
if zh then return zh end
end
local cls = m_placetypes.get_placetype_prop(pt, "class")
if cls then return class_to_bare_category_parent[cls] end
end, from_cat) or "地點"
local addl_parents_raw = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "addl_bare_category_parents")
end, from_cat)
local addl_parents
if addl_parents_raw then
addl_parents = {}
for _, v in ipairs(addl_parents_raw) do
local zh = translate_cat_parent(v)
if zh then m_table.insertIfNot(addl_parents, zh) end
end
if #addl_parents == 0 then addl_parents = nil end
end
local breadcrumb = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "bare_category_breadcrumb")
end, from_cat)
if type(bare_parent) == "string" and breadcrumb then
bare_parent = {name = bare_parent, sort = breadcrumb}
end
local parents = {bare_parent}
if addl_parents then m_table.extend(parents, addl_parents) end
return {
type = "name",
topic = label,
description = "{{{langname}}}中[[" .. label .. "]]的名稱。",
breadcrumb = breadcrumb,
parents = parents,
}
end
end
end)
-- ===========================================================================
-- Handler 3 — Bare placename categories (known locations)
-- e.g. "美國", "法國", "北京", "加利福尼亞州"
-- Supports: overriding_bare_label_parents, bare_category_parent_type,
-- "+++" expansion, addl_parents, wp/wpcat/commonscat, fulldesc.
-- "+++" expands to: CONTAINER的TYPE (Chinese order) or CONTAINERTYPE for "地點".
-- ===========================================================================
insert(handlers, function(label)
local group, spec = m_locations.find_canonical_key(label)
if not group then return nil end
local wp = spec.wp
if wp == nil then wp = true end
local wpcat = spec.wpcat
if wpcat == nil then wpcat = wp end
local commonscat = spec.commonscat
if commonscat == nil then commonscat = wpcat end
local full_placename = m_locations.key_to_placename(group, label)
local full_container_placename
local container_iterator = m_locations.iterate_containers(group, label, spec)
local containers = container_iterator()
if containers then
full_container_placename = m_locations.key_to_placename(
containers[1].group, containers[1].key)
end
-- Substitute %l (full placename), %e (same, no elliptical form in Chinese),
-- %c (container placename) in wp/wpcat/commonscat values.
local function format_boxval(val)
if val == true then val = "%l" end
if type(val) == "string" then
val = gsub_literally(val, "%l", full_placename)
val = gsub_literally(val, "%e", full_placename)
if val:find("%%c", 1, true) and full_container_placename then
val = gsub_literally(val, "%c", full_container_placename)
end
end
return val
end
-- Determine Chinese type label for parent category construction.
-- bare_category_parent_type overrides the location's own placetype.
local parent_zh_type
do
local override = spec.bare_category_parent_type
if override then
local t = type(override) == "table"
and (override.type or override[1]) or override
local raw = type(t) == "string"
and m_placetypes.get_zh_placetype_name(t, nil)
parent_zh_type = raw and format_zh_name(raw)
end
if not parent_zh_type then
local loc_type = fetch_primary_placetype(label, spec)
local raw = loc_type and m_placetypes.get_zh_placetype_name(loc_type, nil)
parent_zh_type = raw and format_zh_name(raw)
end
end
local parents = {}
local bare_label_parents = spec.overriding_bare_label_parents
if not bare_label_parents then
bare_label_parents = {"+++"}
end
local inserted_containers = false
for _, parent in ipairs(bare_label_parents) do
if parent == "+++" then
-- Expand to Chinese parent: CONTAINER的TYPE or CONTAINERTYPE for "地點";
-- omit 的 when TYPE=="國家" and container is a continent (非洲國家 not 非洲的國家)
if containers then
for _, container in ipairs(containers) do
local ck = get_prefixed_key(container.key, container.spec)
local parent_cat
if parent_zh_type == "地點" then
parent_cat = ck .. "地點"
elseif parent_zh_type == "國家" and spec_is_broad(container.spec) then
parent_cat = ck .. "國家"
elseif parent_zh_type then
parent_cat = ck .. "的" .. parent_zh_type
else
parent_cat = ck
end
m_table.insertIfNot(parents, parent_cat)
end
inserted_containers = true
end
else
m_table.insertIfNot(parents, parent)
end
end
-- If "+++" wasn't present in bare_label_parents and containers exist, insert
-- bare container keys as fallback (mirrors enwikt behaviour).
if not inserted_containers and containers then
for _, container in ipairs(containers) do
m_table.insertIfNot(parents, container.key)
end
end
if spec.addl_parents then
for _, p in ipairs(spec.addl_parents) do
m_table.insertIfNot(parents, p)
end
end
if #parents == 0 then insert(parents, "地點") end
local description = spec.fulldesc or (
"{{{langname}}}中與" ..
fetch_or_construct_location_desc(group, label, spec) ..
"相關的詞語。")
return {
type = "topic",
description = description,
breadcrumb = full_placename,
parents = parents,
wp = format_boxval(wp),
wpcat = format_boxval(wpcat),
commonscat = format_boxval(commonscat),
}
end)
-- ===========================================================================
-- Handler 4 — Generic placetype + location
-- e.g. "法國的城市", "德國的河流", "亞洲的國家"
-- Matches placetypes that carry generic_before_non_cities or generic_before_cities.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local en_keys = zh_name_to_pt_keys[type_zh]
if en_keys then
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt and ptdata and
(ptdata.generic_before_non_cities or ptdata.generic_before_cities) then
local group, key, spec = find_place(place_str)
if group then
local allow = true
if spec.is_former_place and en_key ~= "place" then allow = false end
if allow then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end
end
end)
-- ===========================================================================
-- Handler 4b — Continent/broad location + 國家 (no 的)
-- e.g. "非洲國家", "亞洲國家"
-- Handles the no-的 form generated for country categories under continents.
-- ===========================================================================
insert(handlers, function(label)
local zh_type = "國家"
local zh_type_len = #zh_type -- byte length (6 for 2 Chinese chars in UTF-8)
if #label <= zh_type_len or label:sub(-zh_type_len) ~= zh_type then return nil end
local place_str = label:sub(1, #label - zh_type_len)
local group, key, spec = find_place(place_str)
if not group or not spec_is_broad(spec) then return nil end
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. zh_type .. "]]的名稱。"
local parents = {key, {name = zh_type, sort = " " .. key}}
return {
type = "name",
topic = label,
description = desc,
breadcrumb = zh_type,
parents = parents,
}
end)
-- ===========================================================================
-- Handler 5 — Capital + location (bare capital label)
-- e.g. "美國的首都", "四川省的省會", "德克薩斯州的首府"
-- Handles bare capital labels from zh_cap_label_to_holonym.
-- Must precede handler 6 (compound capital) and handler 7 (division) to avoid
-- mis-matching capital labels that also appear in a location's divs via cat_as.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
if zh_cap_label_to_holonym[type_zh] then
local group, key, spec = find_place(place_str)
if group then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Handler 6 — Compound capital label + location
-- e.g. "美國的州首府", "法國的行政區首府", "澳大利亞的地區首府"
-- Compound label = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- Built at load time in zh_compound_cap_to_placetypes.
-- Must precede handler 7 (division) to avoid mis-matching.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local target_pts = zh_compound_cap_to_placetypes[type_zh]
if target_pts then
local group, key, spec = find_place(place_str)
if group then
-- Check if any target placetype appears in this location's divs.
-- Div types are plural English strings ("states"); singularize before comparing.
local found = false
for _, divlist in ipairs({spec.divs, spec.addl_divs,
spec.addl_divs_for_categorization}) do
if divlist and not found then
if type(divlist) ~= "table" then divlist = {divlist} end
for _, div in ipairs(divlist) do
if type(div) == "string" then div = {type = div} end
local function check_div_type(pt_type)
local sg = m_placetypes.maybe_singularize_placetype(pt_type)
or pt_type
for _, target_pt in ipairs(target_pts) do
if sg == target_pt or pt_type == target_pt then
found = true
break
end
end
end
check_div_type(div.type)
if not found and div.cat_as then
local ca = div.cat_as
if type(ca) ~= "table" or ca.type then ca = {ca} end
for _, pt_ca in ipairs(ca) do
if type(pt_ca) == "string" then
pt_ca = {type = pt_ca}
end
check_div_type(pt_ca.type)
if found then break end
end
end
if found then break end
end
end
if found then break end
end
if found then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc
.. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or
(type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end)
-- ===========================================================================
-- Handler 7 — Administrative division + location
-- e.g. "美國的州", "法國的省", "英國的構成國", "日本的縣"
-- Uses forward zh_name lookup (English div type → zh_name) to avoid collision
-- between English types that share the same Chinese name (state/oblast/canton → "州").
-- Singularizes plural div types ("states" → "state") before zh_name lookup.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local group, key, spec = find_place(place_str)
if group then
local div_parent, div_prep, matched_type = find_div_by_zh_name(spec.divs, type_zh)
if div_parent == nil then
div_parent, div_prep, matched_type = find_div_by_zh_name(spec.addl_divs, type_zh)
end
if div_parent == nil then
div_parent, div_prep, matched_type =
find_div_by_zh_name(spec.addl_divs_for_categorization, type_zh)
end
if div_parent ~= nil then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if div_parent then -- div_parent == false means suppress parent cat
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = " " .. key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
-- Map English div_parent key back to Chinese for parent category name.
local dp_zh
if type(div_parent) == "string" then
local sg_dp = m_placetypes.maybe_singularize_placetype(div_parent)
or div_parent
local dp_raw = m_placetypes.get_zh_placetype_name(sg_dp, nil)
dp_zh = dp_raw and format_zh_name(dp_raw) or type_zh
else
dp_zh = type_zh
end
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. dp_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = " " .. key})
end
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Static labels — top-level grouping categories
-- ===========================================================================
labels["地點"] = {
type = "grouping",
description = "{{{langname}}}中地點的分類。",
parents = {"名稱"},
}
labels["政治實體"] = {
type = "grouping",
description = "{{{langname}}}中政治實體的名稱。",
parents = {"地點"},
}
labels["行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中行政區劃的名稱。",
parents = {"地點"},
}
labels["聚落"] = {
type = "grouping",
description = "{{{langname}}}中聚落地名。",
parents = {"地點"},
}
labels["首都"] = {
type = "grouping",
description = "{{{langname}}}中首都及各類首府的名稱。",
parents = {"聚落"},
}
labels["自然地物"] = {
type = "grouping",
description = "{{{langname}}}中自然地物的名稱。",
parents = {"地點"},
}
labels["人造構築物"] = {
type = "grouping",
description = "{{{langname}}}中人造構築物的名稱。",
parents = {"地點"},
}
labels["地理文化區域"] = {
type = "grouping",
description = "{{{langname}}}中地理及文化區域的名稱。",
parents = {"地點"},
}
labels["特定國家的行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中特定國家行政區劃的分類。",
parents = {"地點"},
}
-- ---------------------------------------------------------------------------
-- Misc. place-related labels
-- ---------------------------------------------------------------------------
labels["外名"] = {
type = "name",
description = "{{{langname}}}[[外名]]。",
parents = {"地點"},
}
labels["古埃及行政區"] = {
type = "name",
description = "{{{langname}}}中[[古埃及]][[行政區]]的名稱。",
breadcrumb = "行政區",
parents = {"古埃及"},
}
-- ---------------------------------------------------------------------------
-- Sui generis place categories (cross-jurisdictional / transcontinental regions)
-- ---------------------------------------------------------------------------
labels["大西洋"] = {
type = "related-to",
description = "{{{langname}}}中與[[大西洋]]相關的詞語。",
parents = {"地球"},
}
labels["不列顛群島"] = {
type = "related-to",
description = "{{{langname}}}中與[[大不列顛島]]、[[愛爾蘭島]]及鄰近島嶼相關的詞語。",
parents = {"歐洲", "島嶼"},
}
labels["歐盟"] = {
type = "related-to",
description = "{{{langname}}}中與[[歐盟]]相關的詞語。",
parents = {"歐洲"},
}
labels["加斯科涅"] = {
type = "related-to",
description = "{{{langname}}}中與[[加斯科涅]]相關的詞語。",
parents = {"法國"},
}
labels["印度次大陸"] = {
type = "related-to",
description = "{{{langname}}}中與[[印度次大陸]]相關的詞語。",
parents = {"南亞"},
}
labels["孟加拉"] = {
type = "related-to",
description = "{{{langname}}}中與[[孟加拉]]地區相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾"] = {
type = "related-to",
description = "{{{langname}}}中與[[克什米爾]]相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾(印度)"] = {
type = "related-to",
description = "{{{langname}}}中[[印度]]管轄的[[克什米爾]]地名。",
parents = {"印度", "克什米爾"},
}
labels["朝鮮半島"] = {
type = "related-to",
description = "{{{langname}}}中與[[朝鮮半島]]相關的詞語。",
parents = {"亞洲"},
}
labels["朗格多克"] = {
type = "related-to",
description = "{{{langname}}}中與[[朗格多克]]相關的詞語。",
parents = {"法國"},
}
labels["拉普蘭"] = {
type = "related-to",
description = "{{{langname}}}中與[[拉普蘭]]相關的詞語。",
parents = {"歐洲", "芬蘭", "挪威", "俄羅斯", "瑞典"},
}
labels["中東"] = {
type = "related-to",
description = "{{{langname}}}中與[[中東]]相關的詞語。",
parents = {"非洲", "亞洲"},
}
labels["荷屬安的列斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[荷屬安的列斯]]相關的詞語。",
parents = {"荷蘭", "北美洲"},
}
labels["海外法國"] = {
type = "related-to",
description = "{{{langname}}}中與[[海外法國]]相關的詞語。",
parents = {"法國"},
}
labels["普羅旺斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[普羅旺斯]]相關的詞語。",
parents = {"法國"},
}
labels["波蘭人民共和國"] = {
type = "related-to",
description = "{{{langname}}}中與[[波蘭人民共和國]]相關的詞語。",
parents = {"波蘭"},
}
labels["南亞"] = {
type = "related-to",
description = "{{{langname}}}中與[[南亞]]相關的詞語。",
parents = {"歐亞大陸", "亞洲"},
}
return {LABELS = labels, HANDLERS = handlers}
98ri1bjtr7dnenpwh8q5lqftxxw6g8d
9759679
9759667
2026-05-15T00:12:45Z
TongcyDai
53191
9759679
Scribunto
text/plain
-- Chinese Wiktionary port of enwikt [[Module:category tree/topic/Places]].
-- Generates descriptions and parent-category specs for place-related category pages.
--
-- Deployment name: TBD — likely [[Module:place/catetree]] or an equivalent path
-- under zhwikt's category-tree infrastructure.
--
-- Architecture mirrors enwikt: two tables exported as LABELS and HANDLERS.
-- LABELS — static label → spec mappings (top-level grouping categories)
-- HANDLERS — ordered list of functions; first non-nil return wins
--
-- Chinese-specific adaptations vs. enwikt:
-- * Pattern matching on 的 instead of English "in"/"of"
-- * Handler 3 bare-location parent: CONTAINER的TYPE (order reversed vs. enwikt)
-- Special case: TYPE=="地點" → CONTAINERTYPE (no 的)
-- * Handler 6 uses forward zh_name lookup (div.type → zh_name) instead of
-- a reverse map, because many English placetypes share the same Chinese name
-- (e.g. state/oblast/canton all → "州"; province/department/voivodeship → "省")
-- * Handler 7 (new): compound capital label + location ("美國的州首府")
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type)
-- Built at load time; skips country/constituent country (no 國首都 category)
-- * No article handling (Chinese has no definite article)
-- * Serial enumeration: 、(non-final) 和(final)
-- * Description format: {{{langname}}}中LOCATION_DESC[[PLACETYPE]]的名稱。
local labels = {}
local handlers = {}
local m_table = require("Module:table")
local m_locations = require("Module:place/locations")
local m_placetypes = require("Module:place/placetypes")
local m_zh_data = require("Module:place/data")
local internal_error = m_locations.internal_error
local zh_strings = m_placetypes.zh_strings
local zh_cap_by_holonym = m_placetypes.zh_capital_label_by_holonym_type
local format_zh_name = m_placetypes.format_zh_name
local insert = table.insert
local concat = table.concat
local function is_callable(val) return type(val) == "function" end
-- Literal-string gsub (no regex metacharacters interpreted in `from` or `to`).
local function gsub_literally(str, from, to)
return (str:gsub(from:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"),
to:gsub("%%", "%%%%")))
end
-- Get the first (primary) placetype from spec.
local function fetch_primary_placetype(key, spec)
local placetype = spec.placetype
if type(placetype) == "table" then placetype = placetype[1] end
return placetype
end
-- True for continent/supercontinent/planet specs (used to omit 的 in 非洲國家).
local function spec_is_broad(spec)
local pt = spec and spec.placetype
if not pt then return false end
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "supercontinent" or p == "planet" then return true end
end
return false
end
-- ---------------------------------------------------------------------------
-- Chinese serial joiner: {"A","B","C"} → "A、B和C"
-- ---------------------------------------------------------------------------
local function zh_join(items)
local n = #items
if n == 0 then return "" end
if n == 1 then return items[1] end
local parts = {}
for i = 1, n - 1 do
insert(parts, items[i])
if i < n - 1 then insert(parts, zh_strings.enum_sep) end
end
insert(parts, zh_strings.and_conj)
insert(parts, items[n])
return concat(parts)
end
-- ---------------------------------------------------------------------------
-- Placetype class → Chinese bare parent category label
-- ---------------------------------------------------------------------------
local class_to_bare_category_parent = {
["polity"] = "政治實體",
["subpolity"] = "行政區劃",
["settlement"] = "聚居地",
["non-admin settlement"] = "聚居地",
["capital"] = "首都",
["natural feature"] = "自然",
["man-made structure"] = "人造構築物",
["geographic region"] = "地理文化區域",
}
local class_is_political_division = {
["polity"] = true,
["subpolity"] = true,
["settlement"] = true,
["non-admin settlement"] = false,
["capital"] = true,
["natural feature"] = false,
["man-made structure"] = false,
["geographic region"] = false,
["generic place"] = false,
}
-- Enwikt bare_category_parent / addl_bare_category_parents → zhwikt label.
-- false = no equivalent, skip.
local en_category_to_zh = {
["islands"] = "島嶼",
["cities"] = "城市",
["political divisions"] = "行政區劃",
["places"] = "地點",
["former settlements"] = "歷史聚居地",
["country-like entities"]= "類國家實體",
["names"] = "名稱",
["man-made structures"] = "人造構築物",
["countries"] = "國家",
["bodies of water"] = "水體",
["water"] = "水",
["landforms"] = "地形",
["ecosystems"] = "生態系統",
["forestry"] = "林學",
["mountains"] = "山",
["seas"] = "海",
["bridges"] = "橋",
["buildings"] = "建築",
["roads"] = "道路",
}
-- Translate enwikt category parent string to zhwikt equivalent.
-- Returns zh string, or nil if should be skipped.
-- Non-English strings (assumed already Chinese) pass through unchanged.
local function translate_cat_parent(val)
if type(val) ~= "string" then return nil end
local mapped = en_category_to_zh[val]
if mapped == false then return nil end
if mapped then return mapped end
return val
end
-- ---------------------------------------------------------------------------
-- Load-time reverse maps
-- ---------------------------------------------------------------------------
-- Chinese capital label → holonym type (e.g. "首都" → "country")
local zh_cap_label_to_holonym = {}
for holonym_type, zh_label in pairs(zh_cap_by_holonym) do
if not zh_cap_label_to_holonym[zh_label] then
zh_cap_label_to_holonym[zh_label] = holonym_type
end
end
-- Chinese placetype name → list of English placetype keys (one-to-many).
-- Used by handler 2 (bare placetype) and handler 4 (generic X的Y).
local zh_name_to_pt_keys = {}
do
local function add(name, en_key)
zh_name_to_pt_keys[name] = zh_name_to_pt_keys[name] or {}
insert(zh_name_to_pt_keys[name], en_key)
end
for en_key, entry in pairs(m_zh_data.zh_placetype_data) do
if entry.zh_name then
local names = type(entry.zh_name) == "table" and entry.zh_name or {entry.zh_name}
for _, name in ipairs(names) do add(name, en_key) end
end
if entry.zh_name_by_holonym_type then
for _, zh_name_val in pairs(entry.zh_name_by_holonym_type) do
local names = type(zh_name_val) == "table" and zh_name_val or {zh_name_val}
for _, name in ipairs(names) do add(name, en_key) end
end
end
end
end
-- Compound capital label → list of holonym placetype keys.
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- E.g. "州首府" → {"state"}, "地區首府" → {"territory", "region"}.
-- Skip country/constituent country (no 國首都 category per design).
-- Skip entries where compound == cap_label (e.g. "省省會"/"縣縣治" excluded to
-- avoid ambiguous matches — these bare labels are already handled by handler 5).
local zh_compound_cap_to_placetypes = {}
do
local function add_compound(compound, pt)
zh_compound_cap_to_placetypes[compound] = zh_compound_cap_to_placetypes[compound] or {}
insert(zh_compound_cap_to_placetypes[compound], pt)
end
for holonym_type, cap_label in pairs(zh_cap_by_holonym) do
if holonym_type ~= "country" and holonym_type ~= "constituent country" then
local zh_name_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
if zh_name_raw then
local zh_name_str = format_zh_name(zh_name_raw)
local compound = zh_name_str .. cap_label
if compound ~= cap_label then
add_compound(compound, holonym_type)
end
end
end
end
end
-- ---------------------------------------------------------------------------
-- Location-linking helpers
-- ---------------------------------------------------------------------------
local function construct_linked_location(group, key, spec)
local full_placename = m_locations.key_to_placename(group, key)
return m_locations.construct_linked_placename(spec, full_placename)
end
-- Returns a location description string for embedding in category descriptions.
-- Shows one level of container for sub-national entries:
-- country → [[法國]]
-- state → [[加州]]([[美國]]的[[州]])
-- city → [[舊金山]]([[加州]]的[[城市]])
local function construct_location_desc(group, key, spec)
local linked = construct_linked_location(group, key, spec)
if spec.no_include_container_in_desc then return linked end
local container_iterator = m_locations.iterate_containers(group, key, spec)
local containers = container_iterator()
if not containers then return linked end
local location_type = spec.placetype
if type(location_type) == "table" then location_type = location_type[1] end
local zh_name_raw = location_type and m_placetypes.get_zh_placetype_name(location_type, nil)
local zh_type = zh_name_raw and format_zh_name(zh_name_raw)
local cont_links = {}
for _, c in ipairs(containers) do
insert(cont_links, construct_linked_location(c.group, c.key, c.spec))
end
local cont_str = zh_join(cont_links)
if zh_type then
return linked .. "(" .. cont_str .. "的" .. zh_type .. ")"
else
return linked .. "(位於" .. cont_str .. ")"
end
end
-- Fetch or construct the location description, substituting "+++" with the
-- auto-constructed description if present in spec.keydesc.
local function fetch_or_construct_location_desc(group, key, spec)
local val = spec.keydesc
if is_callable(val) then
val = val(group, key, spec)
spec.keydesc = val
end
if val then
if val:find("%+%+%+", 1, true) then
local base = construct_location_desc(group, key, spec)
val = gsub_literally(val, "+++", base)
end
return val
end
return construct_location_desc(group, key, spec)
end
-- ---------------------------------------------------------------------------
-- Split label at every occurrence of 的
-- Returns list of {place, placetype} tables (all possible splits left→right).
-- ---------------------------------------------------------------------------
local function split_at_de(label)
local results = {}
local de = "的"
local start = 1
while true do
local s, e = label:find(de, start, true)
if not s then break end
local place_part = label:sub(1, s - 1)
local type_part = label:sub(e + 1)
if #place_part > 0 and #type_part > 0 then
insert(results, {place = place_part, placetype = type_part})
end
start = e + 1
end
return results
end
-- Locate group + key + spec for a Chinese location string.
local function find_place(place_str)
local group, spec = m_locations.find_canonical_key(place_str)
if group then return group, place_str, spec end
return nil
end
-- No articles in Chinese; just return the key.
local function get_prefixed_key(key, spec)
if m_placetypes.get_prefixed_key then
return m_placetypes.get_prefixed_key(key, spec)
end
return key
end
-- Check whether zh_name_val (string or array) contains type_zh.
local function zh_name_has(zh_name_val, type_zh)
if type(zh_name_val) == "table" then
for _, n in ipairs(zh_name_val) do
if n == type_zh then return true end
end
return false
end
return zh_name_val == type_zh
end
-- Search divs list for a div whose Chinese name matches type_zh.
-- Singularizes div.type before zh_name lookup (divs use plural English keys
-- like "states", while zh_placetype_data uses singular keys like "state").
-- Uses forward lookup (English key → zh_name) to handle many-to-one collisions.
-- Returns: div_parent (English key or false), prep, matched_en_type.
-- div_parent == nil means no match; div_parent == false means match but no parent cat.
local function find_div_by_zh_name(divs, type_zh)
if not divs then return nil, nil, nil end
if type(divs) ~= "table" then divs = {divs} end
for _, div in ipairs(divs) do
if type(div) == "string" then div = {type = div} end
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" or cat_as.type then cat_as = {cat_as} end
for _, pt_cat_as in ipairs(cat_as) do
if type(pt_cat_as) == "string" then pt_cat_as = {type = pt_cat_as} end
-- Singularize plural div type before zh_name lookup.
local lookup_type = m_placetypes.maybe_singularize_placetype(pt_cat_as.type)
or pt_cat_as.type
local div_zh_raw = m_placetypes.get_zh_placetype_name(lookup_type, nil)
if div_zh_raw and zh_name_has(div_zh_raw, type_zh) then
local div_parent = pt_cat_as.container_parent_type
if div_parent == nil then div_parent = div.container_parent_type end
if div_parent == nil then div_parent = pt_cat_as.type end
return div_parent, pt_cat_as.prep or div.prep or "of", lookup_type
end
end
end
return nil, nil, nil
end
-- ===========================================================================
-- Handler 1 — Bare capital category labels
-- e.g. "首都", "省會", "首府", "縣治"
-- ===========================================================================
insert(handlers, function(label)
local holonym_type = zh_cap_label_to_holonym[label]
if not holonym_type then return nil end
local zh_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
local zh_holonym = zh_raw and format_zh_name(zh_raw) or holonym_type
return {
type = "name",
topic = label,
description = "{{{langname}}}中" .. zh_holonym .. "[[" .. label .. "]]的名稱。",
parents = {"首都"},
}
end)
-- ===========================================================================
-- Handler 2 — Bare placetype categories
-- e.g. "城市", "河流", "山脈", "國家"
-- ===========================================================================
insert(handlers, function(label)
local en_keys = zh_name_to_pt_keys[label]
if not en_keys then return nil end
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt then
local from_cat = {from_category = true, no_split_qualifiers = true}
local bare_parent = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
local bcp = m_placetypes.get_placetype_prop(pt, "bare_category_parent")
if bcp then
local zh = translate_cat_parent(bcp)
if zh then return zh end
end
local cls = m_placetypes.get_placetype_prop(pt, "class")
if cls then return class_to_bare_category_parent[cls] end
end, from_cat) or "地點"
local addl_parents_raw = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "addl_bare_category_parents")
end, from_cat)
local addl_parents
if addl_parents_raw then
addl_parents = {}
for _, v in ipairs(addl_parents_raw) do
local zh = translate_cat_parent(v)
if zh then m_table.insertIfNot(addl_parents, zh) end
end
if #addl_parents == 0 then addl_parents = nil end
end
local breadcrumb = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "bare_category_breadcrumb")
end, from_cat)
if type(bare_parent) == "string" and breadcrumb then
bare_parent = {name = bare_parent, sort = breadcrumb}
end
local parents = {bare_parent}
if addl_parents then m_table.extend(parents, addl_parents) end
return {
type = "name",
topic = label,
description = "{{{langname}}}中[[" .. label .. "]]的名稱。",
breadcrumb = breadcrumb,
parents = parents,
}
end
end
end)
-- ===========================================================================
-- Handler 3 — Bare placename categories (known locations)
-- e.g. "美國", "法國", "北京", "加利福尼亞州"
-- Supports: overriding_bare_label_parents, bare_category_parent_type,
-- "+++" expansion, addl_parents, wp/wpcat/commonscat, fulldesc.
-- "+++" expands to: CONTAINER的TYPE (Chinese order) or CONTAINERTYPE for "地點".
-- ===========================================================================
insert(handlers, function(label)
local group, spec = m_locations.find_canonical_key(label)
if not group then return nil end
local wp = spec.wp
if wp == nil then wp = true end
local wpcat = spec.wpcat
if wpcat == nil then wpcat = wp end
local commonscat = spec.commonscat
if commonscat == nil then commonscat = wpcat end
local full_placename = m_locations.key_to_placename(group, label)
local full_container_placename
local container_iterator = m_locations.iterate_containers(group, label, spec)
local containers = container_iterator()
if containers then
full_container_placename = m_locations.key_to_placename(
containers[1].group, containers[1].key)
end
-- Substitute %l (full placename), %e (same, no elliptical form in Chinese),
-- %c (container placename) in wp/wpcat/commonscat values.
local function format_boxval(val)
if val == true then val = "%l" end
if type(val) == "string" then
val = gsub_literally(val, "%l", full_placename)
val = gsub_literally(val, "%e", full_placename)
if val:find("%%c", 1, true) and full_container_placename then
val = gsub_literally(val, "%c", full_container_placename)
end
end
return val
end
-- Determine Chinese type label for parent category construction.
-- bare_category_parent_type overrides the location's own placetype.
local parent_zh_type
do
local override = spec.bare_category_parent_type
if override then
local t = type(override) == "table"
and (override.type or override[1]) or override
local raw = type(t) == "string"
and m_placetypes.get_zh_placetype_name(t, nil)
parent_zh_type = raw and format_zh_name(raw)
end
if not parent_zh_type then
local loc_type = fetch_primary_placetype(label, spec)
local raw = loc_type and m_placetypes.get_zh_placetype_name(loc_type, nil)
parent_zh_type = raw and format_zh_name(raw)
end
end
local parents = {}
local bare_label_parents = spec.overriding_bare_label_parents
if not bare_label_parents then
bare_label_parents = {"+++"}
end
local inserted_containers = false
for _, parent in ipairs(bare_label_parents) do
if parent == "+++" then
-- Expand to Chinese parent: CONTAINER的TYPE or CONTAINERTYPE for "地點";
-- omit 的 when TYPE=="國家" and container is a continent (非洲國家 not 非洲的國家)
if containers then
for _, container in ipairs(containers) do
local ck = get_prefixed_key(container.key, container.spec)
local parent_cat
if parent_zh_type == "地點" then
parent_cat = ck .. "地點"
elseif parent_zh_type == "國家" and spec_is_broad(container.spec) then
parent_cat = ck .. "國家"
elseif parent_zh_type then
parent_cat = ck .. "的" .. parent_zh_type
else
parent_cat = ck
end
m_table.insertIfNot(parents, parent_cat)
end
inserted_containers = true
end
else
m_table.insertIfNot(parents, parent)
end
end
-- If "+++" wasn't present in bare_label_parents and containers exist, insert
-- bare container keys as fallback (mirrors enwikt behaviour).
if not inserted_containers and containers then
for _, container in ipairs(containers) do
m_table.insertIfNot(parents, container.key)
end
end
if spec.addl_parents then
for _, p in ipairs(spec.addl_parents) do
m_table.insertIfNot(parents, p)
end
end
if #parents == 0 then insert(parents, "地點") end
local description = spec.fulldesc or (
"{{{langname}}}中與" ..
fetch_or_construct_location_desc(group, label, spec) ..
"相關的詞語。")
return {
type = "topic",
description = description,
breadcrumb = full_placename,
parents = parents,
wp = format_boxval(wp),
wpcat = format_boxval(wpcat),
commonscat = format_boxval(commonscat),
}
end)
-- ===========================================================================
-- Handler 4 — Generic placetype + location
-- e.g. "法國的城市", "德國的河流", "亞洲的國家"
-- Matches placetypes that carry generic_before_non_cities or generic_before_cities.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local en_keys = zh_name_to_pt_keys[type_zh]
if en_keys then
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt and ptdata and
(ptdata.generic_before_non_cities or ptdata.generic_before_cities) then
local group, key, spec = find_place(place_str)
if group then
local allow = true
if spec.is_former_place and en_key ~= "place" then allow = false end
if allow then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end
end
end)
-- ===========================================================================
-- Handler 4b — Continent/broad location + 國家 (no 的)
-- e.g. "非洲國家", "亞洲國家"
-- Handles the no-的 form generated for country categories under continents.
-- ===========================================================================
insert(handlers, function(label)
local zh_type = "國家"
local zh_type_len = #zh_type -- byte length (6 for 2 Chinese chars in UTF-8)
if #label <= zh_type_len or label:sub(-zh_type_len) ~= zh_type then return nil end
local place_str = label:sub(1, #label - zh_type_len)
local group, key, spec = find_place(place_str)
if not group or not spec_is_broad(spec) then return nil end
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. zh_type .. "]]的名稱。"
local parents = {key, {name = zh_type, sort = " " .. key}}
return {
type = "name",
topic = label,
description = desc,
breadcrumb = zh_type,
parents = parents,
}
end)
-- ===========================================================================
-- Handler 5 — Capital + location (bare capital label)
-- e.g. "美國的首都", "四川省的省會", "德克薩斯州的首府"
-- Handles bare capital labels from zh_cap_label_to_holonym.
-- Must precede handler 6 (compound capital) and handler 7 (division) to avoid
-- mis-matching capital labels that also appear in a location's divs via cat_as.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
if zh_cap_label_to_holonym[type_zh] then
local group, key, spec = find_place(place_str)
if group then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Handler 6 — Compound capital label + location
-- e.g. "美國的州首府", "法國的行政區首府", "澳大利亞的地區首府"
-- Compound label = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- Built at load time in zh_compound_cap_to_placetypes.
-- Must precede handler 7 (division) to avoid mis-matching.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local target_pts = zh_compound_cap_to_placetypes[type_zh]
if target_pts then
local group, key, spec = find_place(place_str)
if group then
-- Check if any target placetype appears in this location's divs.
-- Div types are plural English strings ("states"); singularize before comparing.
local found = false
for _, divlist in ipairs({spec.divs, spec.addl_divs,
spec.addl_divs_for_categorization}) do
if divlist and not found then
if type(divlist) ~= "table" then divlist = {divlist} end
for _, div in ipairs(divlist) do
if type(div) == "string" then div = {type = div} end
local function check_div_type(pt_type)
local sg = m_placetypes.maybe_singularize_placetype(pt_type)
or pt_type
for _, target_pt in ipairs(target_pts) do
if sg == target_pt or pt_type == target_pt then
found = true
break
end
end
end
check_div_type(div.type)
if not found and div.cat_as then
local ca = div.cat_as
if type(ca) ~= "table" or ca.type then ca = {ca} end
for _, pt_ca in ipairs(ca) do
if type(pt_ca) == "string" then
pt_ca = {type = pt_ca}
end
check_div_type(pt_ca.type)
if found then break end
end
end
if found then break end
end
end
if found then break end
end
if found then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc
.. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or
(type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end)
-- ===========================================================================
-- Handler 7 — Administrative division + location
-- e.g. "美國的州", "法國的省", "英國的構成國", "日本的縣"
-- Uses forward zh_name lookup (English div type → zh_name) to avoid collision
-- between English types that share the same Chinese name (state/oblast/canton → "州").
-- Singularizes plural div types ("states" → "state") before zh_name lookup.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local group, key, spec = find_place(place_str)
if group then
local div_parent, div_prep, matched_type = find_div_by_zh_name(spec.divs, type_zh)
if div_parent == nil then
div_parent, div_prep, matched_type = find_div_by_zh_name(spec.addl_divs, type_zh)
end
if div_parent == nil then
div_parent, div_prep, matched_type =
find_div_by_zh_name(spec.addl_divs_for_categorization, type_zh)
end
if div_parent ~= nil then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if div_parent then -- div_parent == false means suppress parent cat
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = " " .. key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
-- Map English div_parent key back to Chinese for parent category name.
local dp_zh
if type(div_parent) == "string" then
local sg_dp = m_placetypes.maybe_singularize_placetype(div_parent)
or div_parent
local dp_raw = m_placetypes.get_zh_placetype_name(sg_dp, nil)
dp_zh = dp_raw and format_zh_name(dp_raw) or type_zh
else
dp_zh = type_zh
end
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. dp_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = " " .. key})
end
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Static labels — top-level grouping categories
-- ===========================================================================
labels["地點"] = {
type = "grouping",
description = "{{{langname}}}中地點的分類。",
parents = {"名稱"},
}
labels["政治實體"] = {
type = "grouping",
description = "{{{langname}}}中政治實體的名稱。",
parents = {"地點"},
}
labels["行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中行政區劃的名稱。",
parents = {"地點"},
}
labels["聚居地"] = {
type = "grouping",
description = "{{{langname}}}中聚落地名。",
parents = {"地點"},
}
labels["首都"] = {
type = "grouping",
description = "{{{langname}}}中首都及各類首府的名稱。",
parents = {"聚居地"},
}
labels["自然"] = {
type = "grouping",
description = "{{{langname}}}中自然地物的名稱。",
parents = {"地點"},
}
labels["水體"] = {
type = "grouping",
description = "{{{langname}}}中水體的名稱。",
parents = {"自然地物"},
}
labels["地形"] = {
type = "grouping",
description = "{{{langname}}}中地形的名稱。",
parents = {"自然"},
}
labels["山"] = {
type = "grouping",
description = "{{{langname}}}中山的名稱。",
parents = {"自然"},
}
labels["河"] = {
type = "grouping",
description = "{{{langname}}}中河的名稱。",
parents = {"自然"},
}
labels["海"] = {
type = "grouping",
description = "{{{langname}}}中海的名稱。",
parents = {"自然"},
}
labels["湖"] = {
type = "grouping",
description = "{{{langname}}}中湖的名稱。",
parents = {"自然"},
}
labels["火山"] = {
type = "grouping",
description = "{{{langname}}}中火山的名稱。",
parents = {"自然"},
}
labels["人造構築物"] = {
type = "grouping",
description = "{{{langname}}}中人造構築物的名稱。",
parents = {"地點"},
}
labels["地理文化區域"] = {
type = "grouping",
description = "{{{langname}}}中地理及文化區域的名稱。",
parents = {"地點"},
}
labels["特定國家的行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中特定國家行政區劃的分類。",
parents = {"地點"},
}
-- ---------------------------------------------------------------------------
-- Misc. place-related labels
-- ---------------------------------------------------------------------------
labels["外名"] = {
type = "name",
description = "{{{langname}}}[[外名]]。",
parents = {"地點"},
}
labels["古埃及行政區"] = {
type = "name",
description = "{{{langname}}}中[[古埃及]][[行政區]]的名稱。",
breadcrumb = "行政區",
parents = {"古埃及"},
}
-- ---------------------------------------------------------------------------
-- Sui generis place categories (cross-jurisdictional / transcontinental regions)
-- ---------------------------------------------------------------------------
labels["大西洋"] = {
type = "related-to",
description = "{{{langname}}}中與[[大西洋]]相關的詞語。",
parents = {"地球"},
}
labels["不列顛群島"] = {
type = "related-to",
description = "{{{langname}}}中與[[大不列顛島]]、[[愛爾蘭島]]及鄰近島嶼相關的詞語。",
parents = {"歐洲", "島嶼"},
}
labels["歐盟"] = {
type = "related-to",
description = "{{{langname}}}中與[[歐盟]]相關的詞語。",
parents = {"歐洲"},
}
labels["加斯科涅"] = {
type = "related-to",
description = "{{{langname}}}中與[[加斯科涅]]相關的詞語。",
parents = {"法國"},
}
labels["印度次大陸"] = {
type = "related-to",
description = "{{{langname}}}中與[[印度次大陸]]相關的詞語。",
parents = {"南亞"},
}
labels["孟加拉"] = {
type = "related-to",
description = "{{{langname}}}中與[[孟加拉]]地區相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾"] = {
type = "related-to",
description = "{{{langname}}}中與[[克什米爾]]相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾(印度)"] = {
type = "related-to",
description = "{{{langname}}}中[[印度]]管轄的[[克什米爾]]地名。",
parents = {"印度", "克什米爾"},
}
labels["朝鮮半島"] = {
type = "related-to",
description = "{{{langname}}}中與[[朝鮮半島]]相關的詞語。",
parents = {"亞洲"},
}
labels["朗格多克"] = {
type = "related-to",
description = "{{{langname}}}中與[[朗格多克]]相關的詞語。",
parents = {"法國"},
}
labels["拉普蘭"] = {
type = "related-to",
description = "{{{langname}}}中與[[拉普蘭]]相關的詞語。",
parents = {"歐洲", "芬蘭", "挪威", "俄羅斯", "瑞典"},
}
labels["中東"] = {
type = "related-to",
description = "{{{langname}}}中與[[中東]]相關的詞語。",
parents = {"非洲", "亞洲"},
}
labels["荷屬安的列斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[荷屬安的列斯]]相關的詞語。",
parents = {"荷蘭", "北美洲"},
}
labels["海外法國"] = {
type = "related-to",
description = "{{{langname}}}中與[[海外法國]]相關的詞語。",
parents = {"法國"},
}
labels["普羅旺斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[普羅旺斯]]相關的詞語。",
parents = {"法國"},
}
labels["波蘭人民共和國"] = {
type = "related-to",
description = "{{{langname}}}中與[[波蘭人民共和國]]相關的詞語。",
parents = {"波蘭"},
}
labels["南亞"] = {
type = "related-to",
description = "{{{langname}}}中與[[南亞]]相關的詞語。",
parents = {"歐亞大陸", "亞洲"},
}
return {LABELS = labels, HANDLERS = handlers}
etv87t9gq51v1cjvn5dwadu2epa5wcu
9759702
9759679
2026-05-15T00:39:03Z
TongcyDai
53191
9759702
Scribunto
text/plain
-- Chinese Wiktionary port of enwikt [[Module:category tree/topic/Places]].
-- Generates descriptions and parent-category specs for place-related category pages.
--
-- Deployment name: TBD — likely [[Module:place/catetree]] or an equivalent path
-- under zhwikt's category-tree infrastructure.
--
-- Architecture mirrors enwikt: two tables exported as LABELS and HANDLERS.
-- LABELS — static label → spec mappings (top-level grouping categories)
-- HANDLERS — ordered list of functions; first non-nil return wins
--
-- Chinese-specific adaptations vs. enwikt:
-- * Pattern matching on 的 instead of English "in"/"of"
-- * Handler 3 bare-location parent: CONTAINER的TYPE (order reversed vs. enwikt)
-- Special case: TYPE=="地點" → CONTAINERTYPE (no 的)
-- * Handler 6 uses forward zh_name lookup (div.type → zh_name) instead of
-- a reverse map, because many English placetypes share the same Chinese name
-- (e.g. state/oblast/canton all → "州"; province/department/voivodeship → "省")
-- * Handler 7 (new): compound capital label + location ("美國的州首府")
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type)
-- Built at load time; skips country/constituent country (no 國首都 category)
-- * No article handling (Chinese has no definite article)
-- * Serial enumeration: 、(non-final) 和(final)
-- * Description format: {{{langname}}}中LOCATION_DESC[[PLACETYPE]]的名稱。
local labels = {}
local handlers = {}
local m_table = require("Module:table")
local m_locations = require("Module:place/locations")
local m_placetypes = require("Module:place/placetypes")
local m_zh_data = require("Module:place/data")
local internal_error = m_locations.internal_error
local zh_strings = m_placetypes.zh_strings
local zh_cap_by_holonym = m_placetypes.zh_capital_label_by_holonym_type
local format_zh_name = m_placetypes.format_zh_name
local insert = table.insert
local concat = table.concat
local function is_callable(val) return type(val) == "function" end
-- Literal-string gsub (no regex metacharacters interpreted in `from` or `to`).
local function gsub_literally(str, from, to)
return (str:gsub(from:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"),
to:gsub("%%", "%%%%")))
end
-- Get the first (primary) placetype from spec.
local function fetch_primary_placetype(key, spec)
local placetype = spec.placetype
if type(placetype) == "table" then placetype = placetype[1] end
return placetype
end
-- True for continent/supercontinent/planet specs (used to omit 的 in 非洲國家).
local function spec_is_broad(spec)
local pt = spec and spec.placetype
if not pt then return false end
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "supercontinent" or p == "planet" then return true end
end
return false
end
-- ---------------------------------------------------------------------------
-- Chinese serial joiner: {"A","B","C"} → "A、B和C"
-- ---------------------------------------------------------------------------
local function zh_join(items)
local n = #items
if n == 0 then return "" end
if n == 1 then return items[1] end
local parts = {}
for i = 1, n - 1 do
insert(parts, items[i])
if i < n - 1 then insert(parts, zh_strings.enum_sep) end
end
insert(parts, zh_strings.and_conj)
insert(parts, items[n])
return concat(parts)
end
-- ---------------------------------------------------------------------------
-- Placetype class → Chinese bare parent category label
-- ---------------------------------------------------------------------------
local class_to_bare_category_parent = {
["polity"] = "政治實體",
["subpolity"] = "行政區劃",
["settlement"] = "聚居地",
["non-admin settlement"] = "聚居地",
["capital"] = "首都",
["natural feature"] = "自然",
["man-made structure"] = "人造構築物",
["geographic region"] = "地理文化區域",
}
local class_is_political_division = {
["polity"] = true,
["subpolity"] = true,
["settlement"] = true,
["non-admin settlement"] = false,
["capital"] = true,
["natural feature"] = false,
["man-made structure"] = false,
["geographic region"] = false,
["generic place"] = false,
}
-- Enwikt bare_category_parent / addl_bare_category_parents → zhwikt label.
-- false = no equivalent, skip.
local en_category_to_zh = {
["islands"] = "島嶼",
["cities"] = "城市",
["political divisions"] = "行政區劃",
["places"] = "地點",
["former settlements"] = "歷史聚居地",
["country-like entities"]= "類國家實體",
["names"] = "名稱",
["man-made structures"] = "人造構築物",
["countries"] = "國家",
["bodies of water"] = "水體",
["water"] = "水",
["landforms"] = "地形",
["ecosystems"] = "生態系統",
["forestry"] = "林學",
["mountains"] = "山",
["seas"] = "海",
["bridges"] = "橋",
["buildings"] = "建築",
["roads"] = "道路",
}
-- Translate enwikt category parent string to zhwikt equivalent.
-- Returns zh string, or nil if should be skipped.
-- Non-English strings (assumed already Chinese) pass through unchanged.
local function translate_cat_parent(val)
if type(val) ~= "string" then return nil end
local mapped = en_category_to_zh[val]
if mapped == false then return nil end
if mapped then return mapped end
return val
end
-- ---------------------------------------------------------------------------
-- Load-time reverse maps
-- ---------------------------------------------------------------------------
-- Chinese capital label → holonym type (e.g. "首都" → "country")
local zh_cap_label_to_holonym = {}
for holonym_type, zh_label in pairs(zh_cap_by_holonym) do
if not zh_cap_label_to_holonym[zh_label] then
zh_cap_label_to_holonym[zh_label] = holonym_type
end
end
-- Chinese placetype name → list of English placetype keys (one-to-many).
-- Used by handler 2 (bare placetype) and handler 4 (generic X的Y).
local zh_name_to_pt_keys = {}
do
local function add(name, en_key)
zh_name_to_pt_keys[name] = zh_name_to_pt_keys[name] or {}
insert(zh_name_to_pt_keys[name], en_key)
end
for en_key, entry in pairs(m_zh_data.zh_placetype_data) do
if entry.zh_name then
local names = type(entry.zh_name) == "table" and entry.zh_name or {entry.zh_name}
for _, name in ipairs(names) do add(name, en_key) end
end
if entry.zh_name_by_holonym_type then
for _, zh_name_val in pairs(entry.zh_name_by_holonym_type) do
local names = type(zh_name_val) == "table" and zh_name_val or {zh_name_val}
for _, name in ipairs(names) do add(name, en_key) end
end
end
end
end
-- Compound capital label → list of holonym placetype keys.
-- Compound = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- E.g. "州首府" → {"state"}, "地區首府" → {"territory", "region"}.
-- Skip country/constituent country (no 國首都 category per design).
-- Skip entries where compound == cap_label (e.g. "省省會"/"縣縣治" excluded to
-- avoid ambiguous matches — these bare labels are already handled by handler 5).
local zh_compound_cap_to_placetypes = {}
do
local function add_compound(compound, pt)
zh_compound_cap_to_placetypes[compound] = zh_compound_cap_to_placetypes[compound] or {}
insert(zh_compound_cap_to_placetypes[compound], pt)
end
for holonym_type, cap_label in pairs(zh_cap_by_holonym) do
if holonym_type ~= "country" and holonym_type ~= "constituent country" then
local zh_name_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
if zh_name_raw then
local zh_name_str = format_zh_name(zh_name_raw)
local compound = zh_name_str .. cap_label
if compound ~= cap_label then
add_compound(compound, holonym_type)
end
end
end
end
end
-- ---------------------------------------------------------------------------
-- Location-linking helpers
-- ---------------------------------------------------------------------------
local function construct_linked_location(group, key, spec)
local full_placename = m_locations.key_to_placename(group, key)
return m_locations.construct_linked_placename(spec, full_placename)
end
-- Returns a location description string for embedding in category descriptions.
-- Shows one level of container for sub-national entries:
-- country → [[法國]]
-- state → [[加州]]([[美國]]的[[州]])
-- city → [[舊金山]]([[加州]]的[[城市]])
local function construct_location_desc(group, key, spec)
local linked = construct_linked_location(group, key, spec)
if spec.no_include_container_in_desc then return linked end
local container_iterator = m_locations.iterate_containers(group, key, spec)
local containers = container_iterator()
if not containers then return linked end
local location_type = spec.placetype
if type(location_type) == "table" then location_type = location_type[1] end
local zh_name_raw = location_type and m_placetypes.get_zh_placetype_name(location_type, nil)
local zh_type = zh_name_raw and format_zh_name(zh_name_raw)
local cont_links = {}
for _, c in ipairs(containers) do
insert(cont_links, construct_linked_location(c.group, c.key, c.spec))
end
local cont_str = zh_join(cont_links)
if zh_type then
return linked .. "(" .. cont_str .. "的" .. zh_type .. ")"
else
return linked .. "(位於" .. cont_str .. ")"
end
end
-- Fetch or construct the location description, substituting "+++" with the
-- auto-constructed description if present in spec.keydesc.
local function fetch_or_construct_location_desc(group, key, spec)
local val = spec.keydesc
if is_callable(val) then
val = val(group, key, spec)
spec.keydesc = val
end
if val then
if val:find("%+%+%+", 1, true) then
local base = construct_location_desc(group, key, spec)
val = gsub_literally(val, "+++", base)
end
return val
end
return construct_location_desc(group, key, spec)
end
-- ---------------------------------------------------------------------------
-- Split label at every occurrence of 的
-- Returns list of {place, placetype} tables (all possible splits left→right).
-- ---------------------------------------------------------------------------
local function split_at_de(label)
local results = {}
local de = "的"
local start = 1
while true do
local s, e = label:find(de, start, true)
if not s then break end
local place_part = label:sub(1, s - 1)
local type_part = label:sub(e + 1)
if #place_part > 0 and #type_part > 0 then
insert(results, {place = place_part, placetype = type_part})
end
start = e + 1
end
return results
end
-- Locate group + key + spec for a Chinese location string.
local function find_place(place_str)
local group, spec = m_locations.find_canonical_key(place_str)
if group then return group, place_str, spec end
return nil
end
-- No articles in Chinese; just return the key.
local function get_prefixed_key(key, spec)
if m_placetypes.get_prefixed_key then
return m_placetypes.get_prefixed_key(key, spec)
end
return key
end
-- Check whether zh_name_val (string or array) contains type_zh.
local function zh_name_has(zh_name_val, type_zh)
if type(zh_name_val) == "table" then
for _, n in ipairs(zh_name_val) do
if n == type_zh then return true end
end
return false
end
return zh_name_val == type_zh
end
-- Search divs list for a div whose Chinese name matches type_zh.
-- Singularizes div.type before zh_name lookup (divs use plural English keys
-- like "states", while zh_placetype_data uses singular keys like "state").
-- Uses forward lookup (English key → zh_name) to handle many-to-one collisions.
-- Returns: div_parent (English key or false), prep, matched_en_type.
-- div_parent == nil means no match; div_parent == false means match but no parent cat.
local function find_div_by_zh_name(divs, type_zh)
if not divs then return nil, nil, nil end
if type(divs) ~= "table" then divs = {divs} end
for _, div in ipairs(divs) do
if type(div) == "string" then div = {type = div} end
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" or cat_as.type then cat_as = {cat_as} end
for _, pt_cat_as in ipairs(cat_as) do
if type(pt_cat_as) == "string" then pt_cat_as = {type = pt_cat_as} end
-- Singularize plural div type before zh_name lookup.
local lookup_type = m_placetypes.maybe_singularize_placetype(pt_cat_as.type)
or pt_cat_as.type
local div_zh_raw = m_placetypes.get_zh_placetype_name(lookup_type, nil)
if div_zh_raw and zh_name_has(div_zh_raw, type_zh) then
local div_parent = pt_cat_as.container_parent_type
if div_parent == nil then div_parent = div.container_parent_type end
if div_parent == nil then div_parent = pt_cat_as.type end
return div_parent, pt_cat_as.prep or div.prep or "of", lookup_type
end
end
end
return nil, nil, nil
end
-- ===========================================================================
-- Handler 1 — Bare capital category labels
-- e.g. "首都", "省會", "首府", "縣治"
-- ===========================================================================
insert(handlers, function(label)
local holonym_type = zh_cap_label_to_holonym[label]
if not holonym_type then return nil end
local zh_raw = m_placetypes.get_zh_placetype_name(holonym_type, nil)
local zh_holonym = zh_raw and format_zh_name(zh_raw) or holonym_type
return {
type = "name",
topic = label,
description = "{{{langname}}}中" .. zh_holonym .. "[[" .. label .. "]]的名稱。",
parents = {"首都"},
}
end)
-- ===========================================================================
-- Handler 2 — Bare placetype categories
-- e.g. "城市", "河流", "山脈", "國家"
-- ===========================================================================
insert(handlers, function(label)
local en_keys = zh_name_to_pt_keys[label]
if not en_keys then return nil end
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt then
local from_cat = {from_category = true, no_split_qualifiers = true}
local bare_parent = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
local bcp = m_placetypes.get_placetype_prop(pt, "bare_category_parent")
if bcp then
local zh = translate_cat_parent(bcp)
if zh then return zh end
end
local cls = m_placetypes.get_placetype_prop(pt, "class")
if cls then return class_to_bare_category_parent[cls] end
end, from_cat) or "地點"
local addl_parents_raw = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "addl_bare_category_parents")
end, from_cat)
local addl_parents
if addl_parents_raw then
addl_parents = {}
for _, v in ipairs(addl_parents_raw) do
local zh = translate_cat_parent(v)
if zh then m_table.insertIfNot(addl_parents, zh) end
end
if #addl_parents == 0 then addl_parents = nil end
end
local breadcrumb = m_placetypes.get_equiv_placetype_prop(canon_pt, function(pt)
return m_placetypes.get_placetype_prop(pt, "bare_category_breadcrumb")
end, from_cat)
if type(bare_parent) == "string" and breadcrumb then
bare_parent = {name = bare_parent, sort = breadcrumb}
end
local parents = {bare_parent}
if addl_parents then m_table.extend(parents, addl_parents) end
return {
type = "name",
topic = label,
description = "{{{langname}}}中[[" .. label .. "]]的名稱。",
breadcrumb = breadcrumb,
parents = parents,
}
end
end
end)
-- ===========================================================================
-- Handler 3 — Bare placename categories (known locations)
-- e.g. "美國", "法國", "北京", "加利福尼亞州"
-- Supports: overriding_bare_label_parents, bare_category_parent_type,
-- "+++" expansion, addl_parents, wp/wpcat/commonscat, fulldesc.
-- "+++" expands to: CONTAINER的TYPE (Chinese order) or CONTAINERTYPE for "地點".
-- ===========================================================================
insert(handlers, function(label)
local group, spec = m_locations.find_canonical_key(label)
if not group then return nil end
local wp = spec.wp
if wp == nil then wp = true end
local wpcat = spec.wpcat
if wpcat == nil then wpcat = wp end
local commonscat = spec.commonscat
if commonscat == nil then commonscat = wpcat end
local full_placename = m_locations.key_to_placename(group, label)
local full_container_placename
local container_iterator = m_locations.iterate_containers(group, label, spec)
local containers = container_iterator()
if containers then
full_container_placename = m_locations.key_to_placename(
containers[1].group, containers[1].key)
end
-- Substitute %l (full placename), %e (same, no elliptical form in Chinese),
-- %c (container placename) in wp/wpcat/commonscat values.
local function format_boxval(val)
if val == true then val = "%l" end
if type(val) == "string" then
val = gsub_literally(val, "%l", full_placename)
val = gsub_literally(val, "%e", full_placename)
if val:find("%%c", 1, true) and full_container_placename then
val = gsub_literally(val, "%c", full_container_placename)
end
end
return val
end
-- Determine Chinese type label for parent category construction.
-- bare_category_parent_type overrides the location's own placetype.
local parent_zh_type
do
local override = spec.bare_category_parent_type
if override then
local t = type(override) == "table"
and (override.type or override[1]) or override
local raw = type(t) == "string"
and m_placetypes.get_zh_placetype_name(t, nil)
parent_zh_type = raw and format_zh_name(raw)
end
if not parent_zh_type then
local loc_type = fetch_primary_placetype(label, spec)
local raw = loc_type and m_placetypes.get_zh_placetype_name(loc_type, nil)
parent_zh_type = raw and format_zh_name(raw)
end
end
local parents = {}
local bare_label_parents = spec.overriding_bare_label_parents
if not bare_label_parents then
bare_label_parents = {"+++"}
end
local inserted_containers = false
for _, parent in ipairs(bare_label_parents) do
if parent == "+++" then
-- Expand to Chinese parent: CONTAINER的TYPE or CONTAINERTYPE for "地點";
-- omit 的 when TYPE=="國家" and container is a continent (非洲國家 not 非洲的國家)
if containers then
for _, container in ipairs(containers) do
local ck = get_prefixed_key(container.key, container.spec)
local parent_cat
if parent_zh_type == "地點" then
parent_cat = ck .. "地點"
elseif parent_zh_type == "國家" and spec_is_broad(container.spec) then
parent_cat = ck .. "國家"
elseif parent_zh_type then
parent_cat = ck .. "的" .. parent_zh_type
else
parent_cat = ck
end
m_table.insertIfNot(parents, parent_cat)
end
inserted_containers = true
end
else
m_table.insertIfNot(parents, parent)
end
end
-- If "+++" wasn't present in bare_label_parents and containers exist, insert
-- bare container keys as fallback (mirrors enwikt behaviour).
if not inserted_containers and containers then
for _, container in ipairs(containers) do
m_table.insertIfNot(parents, container.key)
end
end
if spec.addl_parents then
for _, p in ipairs(spec.addl_parents) do
m_table.insertIfNot(parents, p)
end
end
if #parents == 0 then insert(parents, "地點") end
local description = spec.fulldesc or (
"{{{langname}}}中與" ..
fetch_or_construct_location_desc(group, label, spec) ..
"相關的詞語。")
return {
type = "topic",
description = description,
breadcrumb = full_placename,
parents = parents,
wp = format_boxval(wp),
wpcat = format_boxval(wpcat),
commonscat = format_boxval(commonscat),
}
end)
-- ===========================================================================
-- Handler 4 — Generic placetype + location
-- e.g. "法國的城市", "德國的河流", "亞洲的國家"
-- Matches placetypes that carry generic_before_non_cities or generic_before_cities.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local en_keys = zh_name_to_pt_keys[type_zh]
if en_keys then
for _, en_key in ipairs(en_keys) do
local canon_pt, ptdata = m_placetypes.get_placetype_data(en_key, "from category")
if canon_pt and ptdata and
(ptdata.generic_before_non_cities or ptdata.generic_before_cities) then
local group, key, spec = find_place(place_str)
if group then
local allow = true
if spec.is_former_place and en_key ~= "place" then allow = false end
if allow then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end
end
end)
-- ===========================================================================
-- Handler 4b — Continent/broad location + 國家 (no 的)
-- e.g. "非洲國家", "亞洲國家"
-- Handles the no-的 form generated for country categories under continents.
-- ===========================================================================
insert(handlers, function(label)
local zh_type = "國家"
local zh_type_len = #zh_type -- byte length (6 for 2 Chinese chars in UTF-8)
if #label <= zh_type_len or label:sub(-zh_type_len) ~= zh_type then return nil end
local place_str = label:sub(1, #label - zh_type_len)
local group, key, spec = find_place(place_str)
if not group or not spec_is_broad(spec) then return nil end
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. zh_type .. "]]的名稱。"
local parents = {key, {name = zh_type, sort = " " .. key}}
return {
type = "name",
topic = label,
description = desc,
breadcrumb = zh_type,
parents = parents,
}
end)
-- ===========================================================================
-- Handler 5 — Capital + location (bare capital label)
-- e.g. "美國的首都", "四川省的省會", "德克薩斯州的首府"
-- Handles bare capital labels from zh_cap_label_to_holonym.
-- Must precede handler 6 (compound capital) and handler 7 (division) to avoid
-- mis-matching capital labels that also appear in a location's divs via cat_as.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
if zh_cap_label_to_holonym[type_zh] then
local group, key, spec = find_place(place_str)
if group then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Handler 6 — Compound capital label + location
-- e.g. "美國的州首府", "法國的行政區首府", "澳大利亞的地區首府"
-- Compound label = zh_name(holonym_type) .. zh_cap_label(holonym_type).
-- Built at load time in zh_compound_cap_to_placetypes.
-- Must precede handler 7 (division) to avoid mis-matching.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local target_pts = zh_compound_cap_to_placetypes[type_zh]
if target_pts then
local group, key, spec = find_place(place_str)
if group then
-- Check if any target placetype appears in this location's divs.
-- Div types are plural English strings ("states"); singularize before comparing.
local found = false
for _, divlist in ipairs({spec.divs, spec.addl_divs,
spec.addl_divs_for_categorization}) do
if divlist and not found then
if type(divlist) ~= "table" then divlist = {divlist} end
for _, div in ipairs(divlist) do
if type(div) == "string" then div = {type = div} end
local function check_div_type(pt_type)
local sg = m_placetypes.maybe_singularize_placetype(pt_type)
or pt_type
for _, target_pt in ipairs(target_pts) do
if sg == target_pt or pt_type == target_pt then
found = true
break
end
end
end
check_div_type(div.type)
if not found and div.cat_as then
local ca = div.cat_as
if type(ca) ~= "table" or ca.type then ca = {ca} end
for _, pt_ca in ipairs(ca) do
if type(pt_ca) == "string" then
pt_ca = {type = pt_ca}
end
check_div_type(pt_ca.type)
if found then break end
end
end
if found then break end
end
end
if found then break end
end
if found then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc
.. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = key})
local spt = spec.placetype
if spt == "country" or
(type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. type_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = key})
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end
end)
-- ===========================================================================
-- Handler 7 — Administrative division + location
-- e.g. "美國的州", "法國的省", "英國的構成國", "日本的縣"
-- Uses forward zh_name lookup (English div type → zh_name) to avoid collision
-- between English types that share the same Chinese name (state/oblast/canton → "州").
-- Singularizes plural div types ("states" → "state") before zh_name lookup.
-- ===========================================================================
insert(handlers, function(label)
local splits = split_at_de(label)
for _, split in ipairs(splits) do
local place_str = split.place
local type_zh = split.placetype
local group, key, spec = find_place(place_str)
if group then
local div_parent, div_prep, matched_type = find_div_by_zh_name(spec.divs, type_zh)
if div_parent == nil then
div_parent, div_prep, matched_type = find_div_by_zh_name(spec.addl_divs, type_zh)
end
if div_parent == nil then
div_parent, div_prep, matched_type =
find_div_by_zh_name(spec.addl_divs_for_categorization, type_zh)
end
if div_parent ~= nil then
local loc_desc = fetch_or_construct_location_desc(group, key, spec)
local desc = "{{{langname}}}中" .. loc_desc .. "[[" .. type_zh .. "]]的名稱。"
local parents = {key}
if div_parent then -- div_parent == false means suppress parent cat
if spec.no_container_parent then
insert(parents, {name = type_zh, sort = " " .. key})
local spt = spec.placetype
if spt == "country" or (type(spt) == "table" and m_table.contains(spt, "country")) then
insert(parents, "特定國家的行政區劃")
end
else
local cont_iter = m_locations.iterate_containers(group, key, spec)
local next_conts = cont_iter()
if next_conts then
for _, c in ipairs(next_conts) do
-- Map English div_parent key back to Chinese for parent category name.
local dp_zh
if type(div_parent) == "string" then
local sg_dp = m_placetypes.maybe_singularize_placetype(div_parent)
or div_parent
local dp_raw = m_placetypes.get_zh_placetype_name(sg_dp, nil)
dp_zh = dp_raw and format_zh_name(dp_raw) or type_zh
else
dp_zh = type_zh
end
insert(parents, {
name = get_prefixed_key(c.key, c.spec) .. "的" .. dp_zh,
sort = key
})
end
else
insert(parents, {name = type_zh, sort = " " .. key})
end
end
end
return {
type = "name",
topic = label,
description = desc,
breadcrumb = type_zh,
parents = parents,
}
end
end
end
end)
-- ===========================================================================
-- Static labels — top-level grouping categories
-- ===========================================================================
labels["地點"] = {
type = "grouping",
description = "{{{langname}}}中地點的分類。",
parents = {"名稱"},
}
labels["政治實體"] = {
type = "grouping",
description = "{{{langname}}}中政治實體的名稱。",
parents = {"地點"},
}
labels["行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中行政區劃的名稱。",
parents = {"地點"},
}
labels["聚居地"] = {
type = "grouping",
description = "{{{langname}}}中聚落地名。",
parents = {"地點"},
}
labels["首都"] = {
type = "grouping",
description = "{{{langname}}}中首都及各類首府的名稱。",
parents = {"聚居地"},
}
labels["自然"] = {
type = "grouping",
description = "{{{langname}}}中自然地物的名稱。",
parents = {"地點"},
}
labels["水體"] = {
type = "grouping",
description = "{{{langname}}}中水體的名稱。",
parents = {"自然地物"},
}
labels["地形"] = {
type = "grouping",
description = "{{{langname}}}中地形的名稱。",
parents = {"自然"},
}
labels["人造構築物"] = {
type = "grouping",
description = "{{{langname}}}中人造構築物的名稱。",
parents = {"地點"},
}
labels["地理文化區域"] = {
type = "grouping",
description = "{{{langname}}}中地理及文化區域的名稱。",
parents = {"地點"},
}
labels["特定國家的行政區劃"] = {
type = "grouping",
description = "{{{langname}}}中特定國家行政區劃的分類。",
parents = {"地點"},
}
-- ---------------------------------------------------------------------------
-- Misc. place-related labels
-- ---------------------------------------------------------------------------
labels["外名"] = {
type = "name",
description = "{{{langname}}}[[外名]]。",
parents = {"地點"},
}
labels["古埃及行政區"] = {
type = "name",
description = "{{{langname}}}中[[古埃及]][[行政區]]的名稱。",
breadcrumb = "行政區",
parents = {"古埃及"},
}
-- ---------------------------------------------------------------------------
-- Sui generis place categories (cross-jurisdictional / transcontinental regions)
-- ---------------------------------------------------------------------------
labels["大西洋"] = {
type = "related-to",
description = "{{{langname}}}中與[[大西洋]]相關的詞語。",
parents = {"地球"},
}
labels["不列顛群島"] = {
type = "related-to",
description = "{{{langname}}}中與[[大不列顛島]]、[[愛爾蘭島]]及鄰近島嶼相關的詞語。",
parents = {"歐洲", "島嶼"},
}
labels["歐盟"] = {
type = "related-to",
description = "{{{langname}}}中與[[歐盟]]相關的詞語。",
parents = {"歐洲"},
}
labels["加斯科涅"] = {
type = "related-to",
description = "{{{langname}}}中與[[加斯科涅]]相關的詞語。",
parents = {"法國"},
}
labels["印度次大陸"] = {
type = "related-to",
description = "{{{langname}}}中與[[印度次大陸]]相關的詞語。",
parents = {"南亞"},
}
labels["孟加拉"] = {
type = "related-to",
description = "{{{langname}}}中與[[孟加拉]]地區相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾"] = {
type = "related-to",
description = "{{{langname}}}中與[[克什米爾]]相關的詞語。",
parents = {"印度次大陸"},
}
labels["克什米爾(印度)"] = {
type = "related-to",
description = "{{{langname}}}中[[印度]]管轄的[[克什米爾]]地名。",
parents = {"印度", "克什米爾"},
}
labels["朝鮮半島"] = {
type = "related-to",
description = "{{{langname}}}中與[[朝鮮半島]]相關的詞語。",
parents = {"亞洲"},
}
labels["朗格多克"] = {
type = "related-to",
description = "{{{langname}}}中與[[朗格多克]]相關的詞語。",
parents = {"法國"},
}
labels["拉普蘭"] = {
type = "related-to",
description = "{{{langname}}}中與[[拉普蘭]]相關的詞語。",
parents = {"歐洲", "芬蘭", "挪威", "俄羅斯", "瑞典"},
}
labels["中東"] = {
type = "related-to",
description = "{{{langname}}}中與[[中東]]相關的詞語。",
parents = {"非洲", "亞洲"},
}
labels["荷屬安的列斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[荷屬安的列斯]]相關的詞語。",
parents = {"荷蘭", "北美洲"},
}
labels["海外法國"] = {
type = "related-to",
description = "{{{langname}}}中與[[海外法國]]相關的詞語。",
parents = {"法國"},
}
labels["普羅旺斯"] = {
type = "related-to",
description = "{{{langname}}}中與[[普羅旺斯]]相關的詞語。",
parents = {"法國"},
}
labels["波蘭人民共和國"] = {
type = "related-to",
description = "{{{langname}}}中與[[波蘭人民共和國]]相關的詞語。",
parents = {"波蘭"},
}
labels["南亞"] = {
type = "related-to",
description = "{{{langname}}}中與[[南亞]]相關的詞語。",
parents = {"歐亞大陸", "亞洲"},
}
return {LABELS = labels, HANDLERS = handlers}
hh8cfaqrzba3vjtcn2ssoaqpiyvocla
Avrupa
0
1393739
9759653
9601660
2026-05-14T23:49:42Z
TongcyDai
53191
9759653
wikitext
text/x-wiki
==土耳其語==
{{Wiktionary:圖片詞典/tr:map/Europe}}
===詞源===
{{inh+|tr|ota|آوروپا|tr=Avrupa}},源自{{der|tr|grc|Εὐρώπη}}。
===發音===
* {{IPA|tr|[äv.ɾú.pä]|[äu̯.ɾú.pä]|qq=penultimate accent}}
* {{hyph|tr|Av|ru|pa}}
===專有名詞===
{{tr-proper noun}}
# {{tcl|tr|歐洲|id=Q46}}
====變格====
{{tr-prop-v-aı}}
====派生詞彙====
{{col3|tr|Avrupalı<t:歐洲人><pos:n>
|Avrupa Birliği<t:歐盟>
|Batı Avrupa<t:西歐>
|Kuzey Avrupa<t:北歐>
|Güney Avrupa<t:南歐>
|Doğu Avrupa<t:東歐>
}}
6bwuovd8hk7y0shrpcsje2anphhwwzi
Alžeeria
0
1397777
9759413
5704564
2026-05-14T14:37:37Z
TongcyDai
53191
9759413
wikitext
text/x-wiki
{{also|Alžeeriä}}
==愛沙尼亞語==
{{wikipedia|Alžeeria|lang=et}}
===專有名詞===
{{head|et|專有名詞}}
# {{tcl|et|阿爾及利亞|id=Q262}}
mzxoo67onid00h3upklslmtnf0llw10
尚比亞
0
1399893
9759423
8358249
2026-05-14T15:15:14Z
TongcyDai
53191
9759423
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=尚比亚|gloss=-}}
===發音===
{{zh-pron
|m=Shàngbǐ亞
|c=soeng6 bei2 aa3
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q953}}{{lb|zh|Taiwan}} {{place|zh|國家|r/南非|capital=盧薩卡|official=尚比亞共和國}}
====同義詞====
* {{qualifier|中國大陸}} {{zh-l|贊比亞}}
3fsoiezvi9fwnitmi6qskyrpdm51nbe
9759425
9759423
2026-05-14T15:16:01Z
TongcyDai
53191
9759425
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=尚比亚|gloss=-}}
===發音===
{{zh-pron
|m=Shàngbǐ亞
|c=soeng6 bei2 aa3
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q953}}{{lb|zh|Taiwan}} {{place|zh|國家|r/南非|capital=路沙卡|official=尚比亞共和國}}
====同義詞====
* {{qualifier|中國大陸}} {{zh-l|贊比亞}}
fm6q320xxp73vckwh9b7edav3lcjr4y
澳大利亞
0
1406598
9759649
9612538
2026-05-14T23:47:48Z
TongcyDai
53191
9759649
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=澳大利亚|gloss=-}}
{{zh-wp|zh|lzh|gan|hak:Au-thai-li-â|wuu}}
===詞源===
源自{{der|zh|en|Australia}}或{{der|zh|nl|Australië}}。
===發音===
{{zh-pron
|m=Àodàlì亞
|c=ou3 daai6 lei6 aa3
|h=pfs=O-thai-li-â/O-thai-li-á
|md=Ó̤-dâi-lé-ā
|mn=ml:Ò-tāi-lī-a/tw:Ò-tōa-lī-a
|w=sh:5au da li ia
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{senseid|zh|Q408}}{{place|zh|國家|r/大洋洲|official=澳大利亞聯邦|capital=堪培拉}}
#* {{quote-book|zh|year=1848|title=w:瀛寰志略|editor=w:徐繼畬|volume=1|page=6–7|pageurl=https://commons.wikimedia.org/w/index.php?title=File%3ANLC403-312001064879-162125_%E7%80%9B%E7%92%B0%E5%BF%97%E7%95%A5_%E6%B8%85%E9%81%93%E5%85%8928-29%E5%B9%B4(1848%E2%80%941849)_%E5%8D%B7%E4%B8%80.pdf&page=21}}
#*: {{zh-x|四 大 土 之外,島嶼 甚 多,最 大 者 ^澳大利亞,餘 則 ^亞細亞 之 ^南洋 諸島、^亞墨利加 之 海灣 群島,皆 商艘 數{shuò} 至 之 地 也。|除了四大洲以外,還有許多島嶼,其中最大的是澳大利亞,其餘還有東南亞各群島、美洲的加勒比海群島,都是商船經常往來的地方。|CL}}
# {{senseid|zh|Q3960}} {{lb|zh|geology}} {{place|zh|澳大利亞洲,<<大洲>>名}}。
====近義詞====
* {{zh-l|澳洲}}
* {{qual|台山话|過時}} {{zh-l|*新金山}}
* {{qual|棄用}} {{zh-l|澳大利}}
====衍生詞====
{{col3|zh|澳大利亞堅果|澳大利亞聯邦|澳大利亞人|澳大利亞手語|澳大利亞勛章|澳大利亞首都領地|澳大利亞首都特別行政區|澳抗}}
====翻譯====
{{trans-top|id=Q408|國家}}
* 阿布哈茲語:{{t|ab|Австралиа}}
* 亞齊語:{{t|ace|Australia}}
* 南非語:{{t+|af|Australië}}
* 阿爾巴尼亞語:{{t|sq|Australi|f}}
* 阿姆哈拉語:{{t|am|አውስትራልያ}}
* 阿拉伯語:{{t+|ar|أُسْتُرَالِيَا|f}}、{{t|ar|أُوسْتُرَالِيَا|f}}
*: 漢志阿拉伯語:{{t|acw|أستراليا|f|tr=ʔusturālya}}
* 阿拉貢語:{{t|an|Australia|f}}
* 亞美尼亞語:{{t+|hy|Ավստրալիա}}
* 阿薩姆語:{{t|as|অষ্ট্ৰেলিয়া}}
* 亞述新亞拉姆語:{{t|aii|ܐܘܼܣܛܪܵܠܝܼܵܐ|f|tr=usṭraliya}}
* 阿斯圖里亞斯語:{{t+|ast|Australia|f}}
* 阿塞拜疆語:{{t+|az|Avstraliya}}
* 巴厘語:{{t|ban|Ostrali}}
* 巴什基爾語:{{t|ba|Австралия}}
* 巴斯克語:{{t+|eu|Australia}}
* 巴伐利亞語:{{t|bar|Australien}}
* 白俄羅斯語:{{t+|be|Аўстра́лія|f}}
* 孟加拉語:{{t+|bn|অস্ট্রেলিয়া}}
* 比斯拉馬語:{{t|bi|Ostrelia}}
* 布列塔尼語:{{t|br|Aostralia}}
* 保加利亞語:{{t|bg|Австра́лия|f}}
* 緬甸語:{{t+|my|ဩစတြေးလျ}}
* 盧森尼亞語:{{t|rue|Австра́лія|f}}
* 加泰羅尼亞語:{{t+|ca|Austràlia|f}}
* 查莫羅語:{{t|ch|Ostereilia}}
* 車臣語:{{t|ce|Австрали}}
* 切羅基語:{{t|chr|ᎡᎳᏗᏝ}}、{{t|chr|ᎡᎳᏗᏜ}}
* 楚瓦什語:{{t|cv|Австрали}}
* 康沃爾語:{{t|kw|Ostrali}}
* 克里米亞韃靼語:{{t|crh|Avstraliya}}
* 捷克語:{{t+|cs|Austrálie|f}}
* 丹麥語:{{t+|da|Australien|n}}
* 迪維希語:{{t|dv|އޮސްޓަރުލިޔާ}}
* 丁卡語:{{t|din|Authërelia}}、{{t|din|Australia}}
* 荷蘭語:{{t+|nl|Australië|n}}
* 宗喀語:{{t|dz|ཨས་ཊེཡེ་ལི་ཡ}}
* 英語:{{t+|en|Australia}}
* 世界語:{{t+|eo|Aŭstralio}}
* 愛沙尼亞語:{{t+|et|Austraalia}}
* 法羅語:{{t|fo|Avstralia|n}}
* 斐濟印地語:{{t|hif|Australia}}
* 斐濟語:{{t|fj|Ositerelia}}
* 芬蘭語:{{t+|fi|Australia}}
* 法語:{{t+|fr|Australie|f}}
* 加利西亞語:{{t+|gl|Australia|f}}
* 卡米拉瑞語:{{t|kld|Yarraanbaa}}
* 格魯吉亞語:{{t+|ka|ავსტრალია}}
* 德語:{{t+|de|Australien|n}}
*: 阿勒曼尼語:{{t|gsw|Australien}}
* 希臘語:{{t+|el|Αυστραλία|f}}
* 巴拉圭瓜拉尼語:{{t|gug|Autarália}}
* 古吉拉特語:{{t|gu|ઓસ્ટ્રેલિયા}}
* 豪薩語:{{t|ha|Ostareliya}}
* 夏威夷語:{{t|haw|ʻAukekulelia}}、{{t|haw|Nuhōlani}} {{qualifier|可能已過時}}
* 希伯來語:{{t+|he|אוֹסְטְרַלְיָה|f|tr=ostrálya}}
* 印地語:{{t+|hi|ऑस्ट्रेलिया|m}}、{{t|hi|आस्ट्रेलिया|m}}、{{t|hi|ओस्ट्रेलिया|m}}
* 匈牙利語:{{t+|hu|Ausztrália}}
* 漢斯立克語:{{t|hrx|Australje|n}}
* 冰島語:{{t+|is|Ástralía|f}}
* 印尼語:{{t+|id|Australia}}
* 英格里亞語:{{t|izh|Australia}}
* 因特語:{{t|ia|Australia}}
* 因紐特語:{{t|iu|ᐊᔅᑦᕌᓕᐊ}}
* 愛爾蘭語:{{t|ga|Astráil|f|alt=An Astráil}}、{{t|ga|Comhlathas na hAstráile|m}}
* 意大利語:{{t+|it|Australia|f}}
* 日語:{{t+|ja|オーストラリア|tr=Ōsutoraria}}(借字寫法:{{t+|ja|濠太剌利|tr=Ōsutoraria}})、{{qualifier|罕用}} {{t+|ja|濠洲|tr=ごうしゅう, Gōshū}}、{{t+|ja|豪州|tr=ごうしゅう, Gōshū}}、{{qualifier|簡稱}} {{t+|ja|濠|tr=ごう, Gō}}、{{t+|ja|豪|tr=ごう, Gō}}
* 卡拉拉高雅語:{{t|mwp|Koey Daudai}}
* 卡倫金語:{{t|kln|Australia}}
* 卡姆巴語:{{t|kam|Australia}}
* 卡納達語:{{t|kn|ಆಸ್ಟ್ರೆಲಿಯ}}、{{t+|kn|ಆಸ್ಟ್ರೇಲಿಯ}}
* 卡拉恰伊-巴爾卡爾語:{{t|krc|Австралия}}
* 哈薩克語:{{t+|kk|Аустралия}}
* 高棉語:{{t+|km|អូស្ត្រាលី}}
* 基庫尤語:{{t|ki|Australia}}
* 朝鮮語:{{t+|ko|^오스트레일리아}}、{{t+|ko|^호주(濠洲)}}、{{t+|ko|^오스트랄리아}} {{qualifier|朝鮮}}
* 庫爾德語:
*: 中庫爾德語:{{t+|ckb|ئوسترالیا}}
*: 北庫爾德語:{{t+|kmr|Awistralya}}、{{t+|kmr|Australya}}、{{t+|kmr|Awustralya}}、{{t+|kmr|Ewistralya}}、{{t+|kmr|Ewustralya}}、{{t+|kmr|Ostralya}}、{{t+|kmr|Ustralya}}
* 吉爾吉斯語:{{t+|ky|Австралия}}
* 老撾語:{{t|lo|ອົດສະຕາລີ}}、{{t|lo|ອົສຕາລີ}}、{{t|lo|ອົດສະຕຣາລີ}}
* 拉丁語:{{t+|la|Australia|f}}
* 拉脫維亞語:{{t+|lv|Austrālija|f}}
* 立陶宛語:{{t+|lt|Australija|f}}
* 盧希亞語:{{t|luy|Australia}}
* 盧歐語:{{t|luo|Australia}}
* 馬其頓語:{{t+|mk|Австралија|f}}
* 馬拉加斯語:{{t|mg|Aostralia}}
* 馬來語:{{t+|ms|Australia}}
* 馬拉雅拉姆語:{{t|ml|ആസ്ട്രേലിയ}}、{{t|ml|ഓസ്ട്രേലിയ}}
* 馬爾他語:{{t|mt|Awstralja|f}}
* 曼島語:{{t|gv|Austrail|f|alt=Yn Austrail}}
* 毛利語:{{t|mi|Ahitereiria}}、{{t|mi|Te Pāpaka-a-Māui}}、{{t|mi|Te Whenua Moemoeā}}
* 馬拉地語:{{t|mr|ऑस्ट्रेलिया}}、{{t|mr|ओस्ट्रेलिया}}
* 梅里阿姆語:{{t|ulk|Keo Daudai}}
* 莫克沙語:{{t|mdf|Австралие}}
* 蒙古語:
*: 西里爾字母:{{t|mn|Австрали}}、{{t|mn|[[Австрали]] [[улс]]}},
*: 蒙古字母:{{t|mn|ᠠᠦ᠋ᠰᠲ᠋ᠷᠠᠯᠢ}}
* 納瓦特爾語:{{t|nah|Australia}}
* 瑙魯語:{{t+|na|Otereiriya}}
* 納瓦霍語:{{t|nv|Nahatʼeʼiitsoh bikéyah}}
* 尼泊爾語:{{t|ne|अस्ट्रेलिया}}
* 紐埃語:{{t|niu|Ausetalia}}
* 諾福克語:{{t|pih|Ostrielya}}
* 諾曼語:{{t|nrf|Australie|f}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Australia|n}}
*: 新挪威語:{{t+|nn|Australia|n}}
* 奧克語:{{t+|oc|Austràlia|f}}
* 奧利亞語:{{t|or|ଅଷ୍ଟ୍ରେଲିଆ}}
* 沖繩語:{{t|ryu|オーストラリア}}
* 教會斯拉夫語:
*: 西里爾字母:{{t|cu|Аѵстралїꙗ|f}} {{qualifier|現代}}
* 奧塞梯語:{{t|os|Австрали}}
* 普什圖語:{{t|ps|اسټراليا|f|tr=asṭrālyā}}、{{t|ps|آستراليا|f|tr=āstrālyā}}、{{t|ps|استراليا|f|tr=astrālyā}}
* 波斯語:
*: 達利波斯語:{{t|prs|آسْتْرَالِیَا}}、{{t|prs|آسْتْرَلِیَا}}、{{t|prs|آسْتْریلِیَا}}
*: 伊朗波斯語:{{t|fa-ira|اُسْتُرالِیا}}、{{t|fa-ira|اُسْتْرالِیا}}
* 門諾低地德語:{{t|pdt|Australien|n}}
* 波蘭語:{{t+|pl|Australia|f}}
* 葡萄牙語:{{t+|pt|Austrália|f}}
* 普卡普卡語:{{t|pkp|Oteleilia}}
* 旁遮普語:
*: 古木基文:{{t|pa|ਅਸਟ੍ਰੇਲੀਆ|m}}、{{t|pa|ਆਸਟ੍ਰੇਲੀਆ|m}}
* 拉羅湯加語:{{t|rar|‘Autirēria}}
* 萊茵法蘭克尼亞語:{{t|gmw-rfr|Auschdralie}}
* 羅馬尼亞語:{{t+|ro|Australia|f}}
* 俄語:{{t+|ru|Австра́лия|f}}
* 薩摩亞語:{{t+|sm|Ausetalia}}
* 梵語:{{t|sa|महालंका}}
* 低地蘇格蘭語:{{t|sco|Australie}}、{{t|sco|Austrailie}}
* 蘇格蘭蓋爾語:{{t|gd|Astràilia}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Ау̀стра̄лија|f}}
*: 拉丁字母:{{t+|sh|Aùstrālija|f}}
* 撣語:{{t|shn|ဢေႃႇၸတြေးလီးယိူဝ်း}}
* 信德語:{{t|sd|آسٽريليا}}
* 僧加羅語:{{t+|si|ඕස්ට්රේලියාව}}
* 斯拉夫莫利塞語:{{t|svm|Lauštralija|f}}
* 斯洛伐克語:{{t+|sk|Austrália|f}}
* 斯洛文尼亞語:{{t+|sl|Avstrálija|f}}
* 索馬里語:{{t|so|Ustraleeya}}
* 索布語:
*: 下索布語:{{t|dsb|Awstralska|f}}
*: 上索布語:{{t|hsb|Awstralska|f}}
* 西班牙語:{{t+|es|Australia|f}}
* 斯瓦希里語:{{t+|sw|Australia}}
* 瑞典語:{{t+|sv|Australien|n}}
* 他加祿語:{{t|tl|Australia}}
* 大溪地語:{{t|ty|Autereraria}}、{{t|ty|Auterāria}}
* 塔吉克語:{{t+|tg|Австралия}}
* 泰米爾語:{{t+|ta|அவுஸ்திரேலியா}}、{{t+|ta|ஆஸ்திரேலியா}}
* 韃靼語:{{t|tt|Австралия}}
* 泰盧固語:{{t+|te|ఆస్ట్రేలియా}}
* 泰語:{{t+|th|ออสเตรเลีย}}
* 藏語:{{t|bo|ཨོ་སེ་ཐེ་ལི་ཡ}}
* 提格里尼亞語:{{t|ti|ኣውስትራሊያ}}
* 托克皮辛語:{{t|tpi|Ostrelia}}
* 湯加語:{{t|to|ʻAositelēlia}}
* 托雷斯海峽克里奧爾語:{{t|tcs|Ostrelia}}
* 土耳其語:{{t+|tr|Avustralya}}
* 土庫曼語:{{t|tk|Awstraliýa}}
* 烏克蘭語:{{t+|uk|Австра́лія|f}}
* 烏爾都語:{{t|ur|آسْٹْریلِیا|m}}
* 維吾爾語:{{t|ug|ئاۋسترالىيە}}
* 烏茲別克語:{{t+|uz|Avstraliya}}
* 維普斯語:{{t|vep|Avstralii}}
* 越南語:{{t+|vi|Úc}} ({{t|vi|澳}})、{{t|vi|Úc Đại Lợi}} ({{t|vi|澳大利}})、{{t|vi|Châu Úc}} ({{t|vi|洲澳}})、{{t|vi|Úc Châu}} ({{t|vi|澳洲}})、{{t+|vi|Ô-xtrây-li-a}}、{{t|vi|[[nước]] [[Úc]]}}、{{t+|vi|Australia}}
* 沃拉普克語:{{t+|vo|Laustralän}}
* 瓦隆語:{{t+|wa|Ostraleye}}
* 威爾士語:{{t+|cy|Awstralia}}
* 西旁遮普語:{{t|pnb|آسٹریلیا|tr=āsṫreliya}}
* 沃洛夫語:{{t+|wo|Óstraali}}
* 雅庫特語:{{t|sah|Аустралия}}
* 意第緒語:{{t|yi|אויסטראַליע|f}}、{{t|yi|אַווסטראַליע|f}}
* 約魯巴語:{{t|yo|Ọsirélíà}}
* 扎扎其語:{{qualifier|南扎扎其語}} {{t|zza|Awıstralya}}
* 壯語:{{t|za|Audaliya}}、{{t|za|Aucouh}}
* 祖魯語:{{t|zu|i-Ostreliya}}
{{trans-bottom}}
{{trans-top|id=Q3960|大洲}}
* 南非語:{{t+|af|Australië}}
* 阿拉伯語:{{t+|ar|أُسْتُرَالِيَا|f}}、{{t|ar|أُوسْتُرَالِيَا|f}}
* 亞美尼亞語:{{t+|hy|Ավստրալիա}}
* 阿薩姆語:{{t|as|অষ্ট্ৰেলিয়া}}
* 亞述新亞拉姆語:{{t|aii|ܐܘܼܣܛܪܵܠܝܼܵܐ|f|tr=usṭraliya}}
* 白俄羅斯語:{{t+|be|Аўстра́лія|f}}
* 孟加拉語:{{t+|bn|অস্ট্রেলিয়া}}
* 緬甸語:{{t+|my|ဩစတြေးလျ}}
* 加泰羅尼亞語:{{t+|ca|Austràlia|f}}
* 捷克語:{{t+|cs|Austrálie|f}}
* 丹麥語:{{t+|da|Australien}}
* 荷蘭語:{{t+|nl|Australië}}
* 英語:{{t+|en|Australia}}
* 愛沙尼亞語:{{t+|et|Austraalia}}
* 芬蘭語:{{t+|fi|Australia}}、{{t|fi|[[Australia]]n [[manner]]}}
* 法語:{{t+|fr|Australie|f}}
* 加利西亞語:{{t+|gl|Australia|f}}
* 卡米拉瑞語:{{t|kld|Yarraanbaa}}
* 格魯吉亞語:{{t+|ka|ავსტრალია}}
* 德語:{{t+|de|Australien}}
* 夏威夷語:{{t|haw|ʻAukekulelia}}
* 希伯來語:{{t+|he|אוֹסְטְרַלְיָה|f|tr=ostrálya}}
* 印地語:{{t+|hi|ऑस्ट्रेलिया|m}}、{{t|hi|आस्ट्रेलिया|m}}、{{t|hi|ओस्ट्रेलिया|m}}
* 匈牙利語:{{t+|hu|Ausztrália}}
* 冰島語:{{t+|is|Ástralía|f}}
* 英格里亞語:{{t|izh|Australia}}
* 愛爾蘭語:{{t|ga|Astráil|f|alt=An Astráil}}
* 日語:{{t+|ja|オーストラリア|tr=Ōsutoraria}}(借字寫法:{{t+|ja|濠太剌利|tr=Ōsutoraria}})、{{qualifier|罕用}} {{t+|ja|濠洲|tr=ごうしゅう, Gōshū}}、{{t+|ja|豪州|tr=ごうしゅう, Gōshū}}、{{qualifier|簡稱}} {{t+|ja|濠|tr=ごう, Gō}}、{{t+|ja|豪|tr=ごう, Gō}}、{{t|ja|[[オーストラリア]][[大陸]]|tr=オーストラリアたいりく, Ōsutoraria tairiku}}
* 高棉語:{{t+|km|អូស្ត្រាលី}}
* 朝鮮語:{{t+|ko|^오스트레일리아}}、{{t+|ko|^호주(濠洲)}}、{{t+|ko|^오스트랄리아}} {{qualifier|朝鮮}}
* 拉脫維亞語:{{t+|lv|Austrālija|f}}
* 立陶宛語:{{t+|lt|Australija|f}}
* 馬其頓語:{{t+|mk|Австралија|f}}
* 馬來語:{{t+|ms|Australia}}
* 曼島語:{{t|gv|Austrail|f|alt=Yn Austrail}}
* 莫西語:{{t|mos|wostrali}}
* 諾曼語:{{t|nrf|Australie|f}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Australia|n}}
*: 新挪威語:{{t+|nn|Australia|n}}
* 奧克語:{{t+|oc|Austràlia|f}}
* 普什圖語:{{t|ps|اسټراليا|f|tr=asṭrālyā}}、{{t|ps|آستراليا|f|tr=āstrālyā}}、{{t|ps|استراليا|f|tr=astrālyā}}
* 波斯語:
*: 達利波斯語:{{t|prs|آسْتْرَالِیَا}}、{{t|prs|آسْتْرَلِیَا}}、{{t|prs|آسْتْریلِیَا}}
*: 伊朗波斯語:{{t|fa-ira|اُسْتُرالِیا}}、{{t|fa-ira|اُسْتْرالِیا}}
* 門諾低地德語:{{t|pdt|Australien|n}}
* 波蘭語:{{t+|pl|Australia|f}}
* 葡萄牙語:{{t+|pt|Austrália|f}}
* 羅馬尼亞語:{{t+|ro|Australia|f}}
* 俄語:{{t+|ru|Австра́лия|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Ау̀стра̄лија|f}}
*: 拉丁字母:{{t+|sh|Aùstrālija|f}}
* 斯洛伐克語:{{t+|sk|Austrália|f}}
* 斯洛文尼亞語:{{t+|sl|Avstrálija|f}}
* 索布語:
*: 上索布語:{{t|hsb|Awstralija|f}}
* 西班牙語:{{t+|es|Australia|f}}
* 瑞典語:{{t+|sv|Australien|n}}
* 泰盧固語:{{t+|te|ఆస్ట్రేలియా}}
* 泰語:{{t+|th|ออสเตรเลีย}}
* 土耳其語:{{t+|tr|Avustralya}}
* 烏爾都語:{{t|ur|آسْٹْریلِیا|m}}
* 維吾爾語:{{t|ug|ئاۋسترالىيە}}
* 越南語:{{t|vi|Châu Úc}} ({{t|vi|洲澳}})、{{t|vi|Úc Châu}} ({{t|vi|澳洲}})、{{t+|vi|Úc}} ({{t|vi|澳}})
* 沃拉普克語:{{t+|vo|Stralop}}
* 意第緒語:{{t|yi|אַווסטראַליע|n}}
{{trans-bottom}}
ertyeh4iggtuxmneqy88r2x5ff02s4n
Module:Place
828
1629826
9759526
9758852
2026-05-14T21:37:38Z
TongcyDai
53191
9759526
Scribunto
text/plain
local export = {}
local force_cat = false -- set to true for testing
local m_placetypes = require("Module:place/placetypes")
local m_links = require("Module:links")
local memoize = require("Module:memoize")
local m_strutils = require("Module:string utilities")
local m_table = require("Module:table")
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local form_of_module = "Module:form of"
local languages_module = "Module:languages"
local parse_interface_module = "Module:parse interface"
local parse_utilities_module = "Module:parse utilities"
local parameter_utilities_module = "Module:parameter utilities"
local utilities_module = "Module:utilities"
local zhlang = require(languages_module).getByCode("zh")
local rmatch = m_strutils.match
local rfind = m_strutils.find
local ulen = m_strutils.len
local split = m_strutils.split
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local pluralize = require(en_utilities_module).pluralize
local extend = m_table.extend
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local internal_error = m_placetypes.internal_error
local process_error = m_placetypes.process_error
local placetype_data = m_placetypes.placetype_data
-- Shorthand for the ZH localization string table.
local zh_strings = m_zh_data.zh_strings
--[==[
ZH fork of [[Module:place]] (enwikt). Architecture and data structures are identical to the English version;
only the display-formatting functions are changed to produce Chinese-language definitions.
Key structural differences from enwikt:
* Old-style holonyms are reversed (big→small containment order) and joined with 、/和 rather than "in X, Y".
* Sentence pattern: 位於[holonyms]的[placetype] (or [holonyms]的[placetype] for "of"-type placetypes).
* No articles (a/an/the) in generated text.
* Pref/suf holonym affixes append the Chinese zh_suffix instead of English "placetype of X".
* Translations are joined with "," (full-width comma); parenthetical glosses use ().
* Extra-info labels (capital, largest city, etc.) come from Module:place/data zh_extra_info_labels.
* sentence_style is always true for ZH (extra info uses "。" separator, not ";").
]==]
--[==[ var:
List specifying the allowed form-of directives, used for former names, official names, abbreviations, etc. of places.
The key is the form-of directive and the value is an object with the following properties:
* `text`: The actual text displayed before the terms. If the value is `+`, the key is used as the text. If the value is
a function, it is passed a single argument, the overall place spec (see comment at top of file) and should return
the text to be displayed.
* `type_prefix`: The prefix used to generate the placetype for looking up the appropriate category or categories in the
placetype data structure. Can be omitted if there are no categories associated with the directive.
* `conjunction`: The conjunction used to join multiple terms, defaulting to `and`.
* `cat`: Additional category or categories to add the term to, whenever this particular directive is used.
* `default_foreign`: If specified, the default language of terms given along with this directive is the language in
{{para|1}}; otherwise it is English.
]==]
export.all_form_of_directives = {
["former name of"] = {text = "+", type_prefix = "FORMER_NAME_OF"},
["fmr of"] = {alias_of = "former name of"},
["ancient name of"] = {text = "+", type_prefix = "FORMER_NAME_OF"},
["official name of"] = {text = "+", type_prefix = "OFFICIAL_NAME_OF"},
["former official name of"] = {text = "+", type_prefix = "FORMER_OFFICIAL_NAME_OF"},
["long form of"] = {text = "+", type_prefix = "LONG_FORM_OF"},
["former long form of"] = {text = "+", type_prefix = "FORMER_LONG_FORM_OF"},
["nickname for"] = {text = "+", type_prefix = "NICKNAME_FOR"},
["official nickname for"] = {text = "+", type_prefix = "OFFICIAL_NICKNAME_FOR"},
["former nickname for"] = {text = "+", type_prefix = "FORMER_NICKNAME_FOR"},
["derogatory name for"] = {text = "[[Appendix:Glossary#derogatory|derogatory]] name for", type_prefix = "DEROGATORY_NAME_FOR"},
["synonym of"] = {text = "+"},
["syn of"] = {alias_of = "synonym of"},
["abbreviation of"] = {text = "[[Appendix:Glossary#abbreviation|abbreviation]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:abbreviations",
default_foreign = true},
["abbr of"] = {alias_of = "abbreviation of"},
["abbrev of"] = {alias_of = "abbreviation of"},
["initialism of"] = {text = "[[Appendix:Glossary#initialism|initialism]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:initialisms",
default_foreign = true},
["init of"] = {alias_of = "initialism of"},
["acronym of"] = {text = "[[Appendix:Glossary#acronym|acronym]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:acronyms",
default_foreign = true},
["syllabic abbreviation of"] = {text = "[[Appendix:Glossary#syllabic abbreviation|syllabic abbreviation]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:syllabic abbreviations",
default_foreign = true},
["sylabbr of"] = {alias_of = "syllabic abbreviation of"},
["sylabbrev of"] = {alias_of = "syllabic abbreviation of"},
["ellipsis of"] = {text = "[[Appendix:Glossary#ellipsis|ellipsis]] of", type_prefix = "ELLIPSIS_OF", cat = "cln:ellipses",
default_foreign = true},
["ellip of"] = {alias_of = "ellipsis of"},
["clipping of"] = {text = "[[Appendix:Glossary#clipping|clipping]] of", type_prefix = "CLIPPING_OF", cat = "cln:clippings",
default_foreign = true},
["clip of"] = {alias_of = "clipping of"},
["alternative form of"] = {text = "+", default_foreign = true},
["alt form"] = {alias_of = "alternative form of"},
["alternative spelling of"] = {text = "+", default_foreign = true},
["alt spell"] = {alias_of = "alternative spelling of"},
["alt sp"] = {alias_of = "alternative spelling of"},
["dated form of"] = {text = "[[Appendix:Glossary#dated|dated]] form of", type_prefix = "DATED_FORM_OF", cat = "cln:dated forms",
default_foreign = true},
["dated form"] = {alias_of = "dated form of"},
["dated spelling of"] = {text = "[[Appendix:Glossary#dated|dated]] spelling of", type_prefix = "DATED_FORM_OF", cat = "cln:dated forms",
default_foreign = true},
["dated spell"] = {alias_of = "dated spelling of"},
["dated sp"] = {alias_of = "dated spelling of"},
["archaic form of"] = {text = "[[Appendix:Glossary#archaic|archaic]] form of", type_prefix = "ARCHAIC_FORM_OF", cat = "cln:archaic forms",
default_foreign = true},
["arch form"] = {alias_of = "archaic form of"},
["archaic spelling of"] = {text = "[[Appendix:Glossary#archaic|archaic]] spelling of", type_prefix = "ARCHAIC_FORM_OF", cat = "cln:archaic forms",
default_foreign = true},
["arch spell"] = {alias_of = "archaic spelling of"},
["arch sp"] = {alias_of = "archaic spelling of"},
["obsolete form of"] = {text = "[[Appendix:Glossary#obsolete|obsolete]] form of", type_prefix = "OBSOLETE_FORM_OF", cat = "cln:obsolete forms",
default_foreign = true},
["obs form"] = {alias_of = "obsolete form of"},
["obsolete spelling of"] = {text = "[[Appendix:Glossary#obsolete|obsolete]] spelling of", type_prefix = "OBSOLETE_FORM_OF", cat = "cln:obsolete forms",
default_foreign = true},
["obs spell"] = {alias_of = "obsolete spelling of"},
["obs sp"] = {alias_of = "obsolete spelling of"},
}
local function get_seat_text(overall_place_spec)
local placetype = overall_place_spec.descs[1].placetypes[1]
if placetype == "county" or placetype == "counties" then
return "county seat"
elseif placetype == "parish" or placetype == "parishes" then
return "parish seat"
elseif placetype == "borough" or placetype == "boroughs" then
return "borough seat"
else
return "seat"
end
end
--[==[ var:
List specifying the allowed arguments containing extra information that is sometimes added to a definition, such as the
capital, largest city, modern name, official name, etc., along with associated properties; displayed in the order given.
See enwikt [[Module:place]] for full documentation of each field.
]==]
export.extra_info_args = {
{arg = "modern", text = "+", conjunction = "or", display_even_when_dropped = true},
{arg = "now", text = "now,", conjunction = "or", display_even_when_dropped = true},
{arg = "full", text = "in full,", conjunction = "or", display_even_when_dropped = true},
{arg = "short", text = "short form", conjunction = "or"},
{arg = "abbr", text = "abbreviation", conjunction = "or"},
{arg = "former", text = "formerly,"},
{arg = "official", text = "official name", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "capital", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "largest city", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "caplc", text = "capital and largest city", match_sentence_style = true, auto_plural = false,
with_colon = true},
{arg = "seat", text = get_seat_text, match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "shire town", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "headquarters", text = "+", match_sentence_style = true, auto_plural = false, with_colon = true},
{arg = "center", text = "administrative center", match_sentence_style = true, auto_plural = false, with_colon = true},
{arg = "centre", text = "administrative centre", match_sentence_style = true, auto_plural = false, with_colon = true},
}
export.extra_info_arg_map = {}
for _, spec in ipairs(export.extra_info_args) do
export.extra_info_arg_map[spec.arg] = spec
end
----------- Wikicode utility functions
-- Return a wikilink link {{l|language|text}}
local function link(text, langcode, id)
if not langcode then
return text
end
return m_links.language_link( -- l10n, avoid simp/trad or applying special fonts
{
term = text,
alt = text,
lang = require(languages_module).getByCode(langcode, true, "allow etym"),
id = id
}
)
end
---------- Basic utility functions
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
local function ucfirst_all(text)
if text:find(" ") then
local parts = split(text, " ", true)
for i, part in ipairs(parts) do
parts[i] = m_strutils.ucfirst(part)
end
return concat(parts, " ")
else
return m_strutils.ucfirst(text)
end
end
local function lc(text)
return mw.getContentLanguage():lc(text)
end
---------- Argument parsing functions and utilities
-- Split an argument on comma, but not comma followed by whitespace.
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
-- Split an argument on slash, but not slash occurring inside of HTML tags like </span> or <br />.
local function split_on_slash(arg)
if arg:find("<") then
local m_parse_utilities = require(parse_utilities_module)
-- We implement this by parsing balanced segment runs involving <...>, and splitting on slash in the remainder.
-- The result is a list of lists, so we have to rejoin the inner lists by concatenating.
local segments = m_parse_utilities.parse_balanced_segment_run(arg, "<", ">")
local slash_separated_groups = m_parse_utilities.split_alternating_runs(segments, "/")
for i, group in ipairs(slash_separated_groups) do
slash_separated_groups[i] = concat(group)
end
return slash_separated_groups
else
return split(arg, "/", true)
end
end
-- Implement "implications", i.e. where the presence of a given holonym causes additional holonym(s) to be added.
-- Implications apply only to categorization.
local function handle_category_implications(place_descriptions, implication_data)
for i, desc in ipairs(place_descriptions) do
if desc.holonyms then
local new_holonyms = {}
for _, holonym in ipairs(desc.holonyms) do
insert(new_holonyms, holonym)
local imp_data = m_placetypes.get_equiv_placetype_prop(holonym.placetype, function(pt)
local implication = implication_data[pt] and implication_data[pt][holonym.unlinked_placename]
if implication then
return implication
end
end)
if imp_data then
for _, holonym_to_add in ipairs(imp_data) do
local split_holonym = split_on_slash(holonym_to_add)
if #split_holonym ~= 2 then
internal_error("Invalid holonym in implications: %s", holonym_to_add)
end
local holonym_placetype, holonym_placename = unpack(split_holonym, 1, 2)
local new_holonym = {
placetype = holonym_placetype, unlinked_placename = holonym_placename
}
insert(new_holonyms, new_holonym)
m_placetypes.key_holonym_into_place_desc(desc, new_holonym)
end
end
end
desc.holonyms = new_holonyms
end
end
end
-- Split a holonym (e.g. "continent/Europe" or "country/en:Italy" or "in southern" or "r:suf/O'Higgins" or
-- "c/Austria,Germany,Czech Republic") into its components. Return a list of holonym objects (see top of file). Note
-- that if there isn't a slash in the holonym (e.g. "in southern"), the `placetype` field of the holonym will be nil.
-- Placetype aliases (e.g. "r" for "region") and placename aliases (e.g. "US" or "USA" for "United States") will be
-- expanded.
local function split_holonym(raw)
local no_display, combined_holonym = raw:match("^(!)(.*)$")
no_display = not not no_display
combined_holonym = combined_holonym or raw
local suppress_comma, combined_holonym_without_comma = combined_holonym:match("^(%*)(.*)$")
suppress_comma = not not suppress_comma
combined_holonym = combined_holonym_without_comma or combined_holonym
local holonym_parts = split_on_slash(combined_holonym)
if #holonym_parts == 1 then
-- `unlinked_placename` should not be used.
return {{display_placename = combined_holonym, no_display = no_display, suppress_comma = suppress_comma}}
end
-- Rejoin further slashes in case of slash in holonym placename, e.g. Admaston/Bromley.
local placetype = holonym_parts[1]
local placename = concat(holonym_parts, "/", 2)
-- Check for modifiers after the holonym placetype.
local split_holonym_placetype = split(placetype, ":", true)
placetype = split_holonym_placetype[1]
local affix_type
local saw_also
local saw_the
for i = 2, #split_holonym_placetype do
local modifier = split_holonym_placetype[i]
if modifier == "also" then
if saw_also then
error(("Modifier ':also' occurs twice in holonym '%s'"):format(combined_holonym))
end
saw_also = true
elseif modifier == "the" then
if saw_the then
error(("Modifier ':the' occurs twice in holonym '%s'"):format(combined_holonym))
end
saw_the = true
elseif modifier == "pref" or modifier == "Pref" or modifier == "suf" or modifier == "Suf" or
modifier == "noaff" then
if affix_type then
error(("Affix-type modifier ':%s' occurs twice in holonym '%s'"):format(modifier, combined_holonym))
end
affix_type = modifier
else
error(("Unrecognized holonym placetype modifier '%s', should be one of " ..
"'pref', 'Pref', 'suf', 'Suf', 'noaff', 'also' or 'the'"):format(modifier))
end
end
placetype = m_placetypes.resolve_placetype_aliases(placetype)
local holonyms = split_on_comma(placename)
local pluralize_affix = #holonyms > 1
local affix_holonym_index = (affix_type == "pref" or affix_type == "Pref") and 1 or affix_type == "noaff" and 0 or
#holonyms
for i, placename in ipairs(holonyms) do
-- Check for langcode before the holonym placename, but don't get tripped up by Wikipedia links, which begin
-- "[[w:...]]" or "[[wikipedia:]]".
local langcode, placename_without_langcode = rmatch(placename, "^([^%[%]]-):(.*)$")
if langcode then
placename = placename_without_langcode
end
placename = m_placetypes.resolve_placename_display_aliases(placetype, placename)
holonyms[i] = {
placetype = placetype,
display_placename = placename,
unlinked_placename = m_placetypes.remove_links_and_html(placename),
langcode = langcode,
affix_type = i == affix_holonym_index and affix_type or nil,
pluralize_affix = i == affix_holonym_index and pluralize_affix,
suppress_affix = i ~= affix_holonym_index,
no_display = no_display,
suppress_comma = suppress_comma,
continue_cat_loop = saw_also,
force_the = i == 1 and saw_the,
}
end
return holonyms
end
local get_param_mods = memoize(function()
local m_param_utils = require(parameter_utilities_module)
return m_param_utils.construct_param_mods {
{group = {"link", "q", "l", "ref"}},
{param = "eq"},
{param = "conj", set = {["and"] = true, ["or"] = true, ["and/or"] = true}, overall = true},
}
end)
local function parse_term_with_inline_modifiers(term, paramname, default_lang)
local function generate_obj(raw_term, parse_err)
local obj = require(parameter_utilities_module).generate_obj_maybe_parsing_lang_prefix {
term = raw_term,
parse_err = parse_err,
parse_lang_prefix = true,
}
obj.lang = obj.lang or default_lang
return obj
end
return require(parse_interface_module).parse_inline_modifiers(term, {
paramname = paramname,
param_mods = get_param_mods(),
generate_obj = generate_obj,
splitchar = ",",
outer_container = {},
})
end
local function parse_form_of_directive(arg, lang, form_of_overridden_args)
local form_of_directive, raw_terms = arg:match("^@([a-z -]+):(.*)$")
if not form_of_directive then
error("Misformatted @-directive: " .. dump(arg))
end
if not export.all_form_of_directives[form_of_directive] then
local known_directives = {}
for k, _ in pairs(export.all_form_of_directives) do
insert(known_directives, '"' .. k .. '"')
end
table.sort(known_directives)
error(("Unrecognized form-of directive %s in @-directive %s; recognized directives are %s"):format(
dump(form_of_directive), dump(arg), concat(known_directives, ", ")))
end
local spec = export.all_form_of_directives[form_of_directive]
local canonical_directive = form_of_directive
if spec.alias_of then
canonical_directive = spec.alias_of
spec = export.all_form_of_directives[canonical_directive]
if not spec then
internal_error("Form-of directive alias %s points to %s, which is not a directive",
"@" .. form_of_directive, canonical_directive)
elseif spec.alias_of then
internal_error("Form-of directive alias %s points to %s, which is also an alias",
"@" .. form_of_directive, canonical_directive)
end
end
local default_foreign = spec.default_foreign
local directive_param = "@" .. form_of_directive
if form_of_overridden_args and form_of_overridden_args[canonical_directive] then
raw_terms = form_of_overridden_args[canonical_directive].new_value
local new_directive = form_of_overridden_args[canonical_directive].new_directive
local new_spec = export.all_form_of_directives[new_directive]
if not new_spec then
error(("Internal error: [[Module:transclude]] passed in unrecognized replacement directive '@%s'"):
format(new_directive))
end
if new_spec.alias_of then
error(("Internal error: [[Module:transclude]] passed in replacement directive alias '@%s', " ..
"should be canonical"):format(new_directive))
end
if new_directive ~= canonical_directive then
directive_param = directive_param .. (" (replaced with @%s)"):format(new_directive)
canonical_directive = new_directive
spec = new_spec
end
default_foreign = true
end
local terms = parse_term_with_inline_modifiers(raw_terms, directive_param,
default_foreign and lang or zhlang)
return {
directive = canonical_directive,
terms = terms.terms,
conj = terms.conj,
spec = spec,
}
end
-- Parse an argument containing extra information that is sometimes added to a definition, such as the capital, largest
-- city, modern name, official name, etc. `args` is the value from the parsed argument structure and can be either nil,
-- a string or a list. `spec` is the extra info spec corresponding to the type of extra info. Each value in `args` can
-- be a comma-separated list of terms with inline modifiers attached.
local function parse_extra_info_arg(args, spec, default_lang)
if not args then
return nil
end
if type(args) ~= "table" then
args = {args}
end
if not args[1] then
return nil
end
local terms = nil
local conj
for i, arg in ipairs(args) do
local this_terms = parse_term_with_inline_modifiers(arg, spec.arg .. (i == 1 and "" or i), default_lang)
local thisconj = this_terms.conj
if not conj then
conj = thisconj
elseif thisconj and conj ~= thisconj then
error(("Two different conjunctions '%s' and '%s' specified for |%s=; you only need to specify the " ..
"conjunction once"):format(conj, thisconj))
end
if not terms then
terms = this_terms.terms
else
m_table.extend(terms, this_terms.terms)
end
end
return {
spec = spec,
terms = terms,
conj = conj,
}
end
--[==[
Parse a "new-style" place description, with placetypes and holonyms surrounded by `<<...>>` amid otherwise raw text.
Return value is a place description object as documented at the top of the file. Exported for use by
[[Module:demonyms]].
]==]
function export.parse_new_style_place_desc(text, lang, form_of_directives, form_of_overridden_args)
local placetypes = {}
local segments = split(text, "<<(.-)>>")
local retval = {holonyms = {}, order = {}}
local form_of_directives_already_present = form_of_directives and not not form_of_directives[1]
for i, segment in ipairs(segments) do
if i % 2 == 1 then
insert(retval.order, {type = "raw", value = segment})
elseif segment:find("@") then
if not form_of_directives then
error(("Form-of directive '%s' not allowed in this context"):format(segment))
elseif form_of_directives_already_present then
error(("Saw form-of directive '%s' in new-style place desc followed by direct (separate-parameter) form-of directives; not allowed"):format(
segment))
elseif placetypes[1] or retval.holonyms[1] then
error(("Form-of directive '%s' must come first, before placetypes and holonyms"):format(segment))
else
local form_of_directive = parse_form_of_directive(segment, lang, form_of_overridden_args)
if not retval.order[1] or retval.order[1].type ~= "raw" or retval.order[2] then
internal_error("`retval.order` should have a single raw element: %s", retval.order)
end
form_of_directive.pretext = retval.order[1].value
retval.order[1] = nil
insert(form_of_directives, form_of_directive)
end
elseif segment:find("/") then
local holonyms = split_holonym(segment)
for j, holonym in ipairs(holonyms) do
if j > 1 then
if not holonym.no_display then
if j == #holonyms then
insert(retval.order, {type = "raw", value = zh_strings.and_conj})
else
insert(retval.order, {type = "raw", value = zh_strings.enum_sep})
end
end
holonym.needs_article = true
end
insert(retval.holonyms, holonym)
if not holonym.no_display then
insert(retval.order, {type = "holonym", value = #retval.holonyms})
end
m_placetypes.key_holonym_into_place_desc(retval, holonym)
end
else
local treat_as, display = segment:match("^(..-):(.+)$")
if treat_as then
segment = treat_as
else
display = segment
end
-- see if the placetype segment is just qualifiers
local only_qualifiers = true
local split_segments = split(segment, " ", true)
for _, split_segment in ipairs(split_segments) do
if m_placetypes.placetype_qualifiers[split_segment] == nil then
only_qualifiers = false
break
end
end
insert(placetypes, {placetype = segment, only_qualifiers = only_qualifiers})
if only_qualifiers then
insert(retval.order, {type = "qualifier", value = display})
else
insert(retval.order, {type = "placetype", value = display})
end
end
end
if not form_of_directives_already_present and form_of_directives and form_of_directives[1] then
form_of_directives[#form_of_directives].posttext = ""
end
local final_placetypes = {}
for i, placetype in ipairs(placetypes) do
if i > 1 and placetypes[i - 1].only_qualifiers then
final_placetypes[#final_placetypes] = final_placetypes[#final_placetypes] .. " " .. placetypes[i].placetype
else
insert(final_placetypes, placetypes[i].placetype)
end
end
retval.placetypes = final_placetypes
return retval
end
--[==[
Parse one or more "new-style" place descriptions, with placetypes and holonyms surrounded by `<<...>>` amid otherwise
raw text. Multiple descriptions are separated by two semicolons in a row. Return value is a list of place description
objects as documented at the top of the file.
]==]
local function parse_conjoined_new_style_place_desc(text, lang, form_of_directives, form_of_overridden_args)
local separate_specs = split(text, ";(;[^ ]*)")
local descs = {}
for i = 1, #separate_specs do
if i % 2 == 1 then
insert(descs, export.parse_new_style_place_desc(separate_specs[i], lang, form_of_directives,
form_of_overridden_args))
form_of_directives = nil
else
descs[#descs].separator = separate_specs[i]
end
end
return descs
end
--[=[
Process numeric and "extra info" arguments into an overall place spec, as described at the top of the file.
]=]
local function parse_overall_place_spec(data)
local args, from_tcl, extra_info_overridden_set, form_of_overridden_args =
data.args, data.from_tcl, data.extra_info_overridden_set, data.form_of_overridden_args
local descs = {}
local this_desc
-- Index of separate (semicolon-separated) place descriptions within `descs`.
local desc_index = 1
-- Index of separate holonyms within a place description. 0 means we've seen no holonyms and have yet to process
-- the placetypes that precede the holonyms. 1 means we've seen no holonyms but have already processed the
-- placetypes.
local holonym_index = 0
local in_place_desc = false
local form_of_directives = {}
-- ZH: use Chinese semicolon and space characters for multi-description joiners.
local function set_desc_joiner(desc, separator)
if separator == ";" then
this_desc.joiner = zh_strings.semicolon -- ";" instead of "; "
this_desc.include_following_article = true
elseif separator == ";;" then
this_desc.joiner = " "
else
local joiner = separator:sub(2)
if rfind(joiner, "^%a") then
this_desc.joiner = " " .. joiner .. " "
elseif joiner == "," then
-- ZH: ASCII comma → full-width ,(無空格)
this_desc.joiner = zh_strings.trans_sep
else
this_desc.joiner = joiner .. " "
end
end
end
for _, arg in ipairs(args[2]) do
if arg:find("^@") then
if not (desc_index == 1 and holonym_index == 0) then
error("@-directives cannot follow place descriptions")
end
local form_of_directive = parse_form_of_directive(arg, args[1], form_of_overridden_args)
if form_of_directives[1] then
form_of_directive.pretext = ", "
else
form_of_directive.pretext = ""
end
insert(form_of_directives, form_of_directive)
elseif arg == ";" or arg:find("^;[^ ]") then
if not this_desc then
error("Saw semicolon joiner without preceding place description")
end
set_desc_joiner(this_desc, arg)
desc_index = desc_index + 1
holonym_index = 0
in_place_desc = false
else
if arg:find("<<") then
if in_place_desc then
error("New-style place description must come first or following a separator (semicolon or similar), not directly following another description")
end
in_place_desc = true
local this_descs = parse_conjoined_new_style_place_desc(arg, args[1], form_of_directives,
form_of_overridden_args)
for j, desc in ipairs(this_descs) do
this_desc = desc
if holonym_index > 0 then
desc_index = desc_index + 1
holonym_index = 0
end
if j < #this_descs then
set_desc_joiner(this_desc, this_desc.separator)
end
descs[desc_index] = this_desc
last_was_new_style = true
holonym_index = #this_desc.holonyms + 1
end
else
-- Old-style arguments can directly follow a new-style argument; they become additional holonyms
-- tacked onto the end of the holonym list, and are displayed old-style except that there is no
-- prefix before the first one following the new-style argument.
in_place_desc = true
if holonym_index == 0 then
local entry_placetypes = split_on_slash(arg)
this_desc = {placetypes = entry_placetypes, holonyms = {}}
descs[desc_index] = this_desc
holonym_index = holonym_index + 1
else
local holonyms = split_holonym(arg)
for j, holonym in ipairs(holonyms) do
if j > 1 then
-- All but the first in a multi-holonym need an article. Not for the first one because e.g.
-- {{place|en|city|s/Arizona|c/United States}} should not display as "a city in Arizona, the
-- United States". The overall first holonym in the place description gets an article if
-- needed regardless of our setting here.
holonym.needs_article = true
-- Insert "and" before the last holonym.
if j == #holonyms then
this_desc.holonyms[holonym_index] = {
-- Use the no_display value from the first holonym; it should be the same for all
-- holonyms. `unlinked_placename` should not be used.
display_placename = "and", no_display = holonyms[1].no_display
}
holonym_index = holonym_index + 1
end
end
this_desc.holonyms[holonym_index] = holonym
m_placetypes.key_holonym_into_place_desc(this_desc, this_desc.holonyms[holonym_index])
holonym_index = holonym_index + 1
end
end
end
end
end
if form_of_directives[1] and not form_of_directives[#form_of_directives].posttext then
form_of_directives[#form_of_directives].posttext =
(args.def and args.def ~= "-" or not args.def and descs[1]) and ": " or ""
end
-- Tracking code (unchanged from enwikt).
for _, desc in ipairs(descs) do
for _, entry_placetype in ipairs(desc.placetypes) do
local splits = m_placetypes.split_qualifiers_from_placetype(entry_placetype, "no canon qualifiers")
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, bare_placetype = unpack(split, 1, 3)
track("entry-placetype/" .. bare_placetype)
if this_qualifier then
track("entry-qualifier/" .. this_qualifier)
end
end
end
for _, holonym in ipairs(desc.holonyms) do
if holonym.placetype then
track("holonym-placetype/" .. holonym.placetype)
end
end
end
local extra_info = {}
for _, extra_info_spec in ipairs(export.extra_info_args) do
local extra_info_terms = parse_extra_info_arg(args[extra_info_spec.arg], extra_info_spec,
from_tcl and extra_info_overridden_set and extra_info_overridden_set[extra_info_spec.arg] and args[1] or
zhlang)
if extra_info_terms then
insert(extra_info, extra_info_terms)
end
end
return {
lang = args[1],
args = args,
directives = form_of_directives,
descs = descs,
extra_info = extra_info,
}
end
-------- Definition-generating functions
-- Return a string with the wikilinks to the ZH translations of the word.
-- ZH: joins multiple translations with "," (full-width comma) instead of ", ".
local function get_translations(transl, ids)
local ret = {}
for i, t in ipairs(transl) do
local arg_transls = split_on_comma(t)
local arg_ids = ids[i]
if arg_ids then
arg_ids = split_on_comma(arg_ids)
if #arg_transls ~= #arg_ids then
error(("Saw %s translation%s in t%s=%s but %s ID%s in tid%s=%s"):format(
#arg_transls, #arg_transls > 1 and "s" or "", i == 1 and "" or i, t, #arg_ids,
#arg_ids > 1 and "'s" or "", i == 1 and "" or i, ids[i]))
end
end
for j, arg_transl in ipairs(arg_transls) do
insert(ret, link(arg_transl, "zh", arg_ids and arg_ids[j] or nil))
end
end
return concat(ret, zh_strings.trans_sep) -- "," instead of ", "
end
-- Chinese has no articles; these stubs keep the call-sites intact.
local function get_placename_article(decorated_placename, placetypes, placename, suppress_holonym_use_the_check)
return nil
end
local function get_holonym_article(decorated_placename, place_desc, holonym_index)
return nil
end
-- Convert a holonym into display format. For ZH:
-- * No article prepended (Chinese has no articles).
-- * Both prefix and suffix affix types append the zh_suffix (e.g. "州", "省") directly to the linked name,
-- instead of the English "placetype of placename" / "placename placetype" construction.
-- * Display handlers are applied unchanged (they may add text based on the holonym's surrounding context).
local function format_holonym(place_desc, holonym_index, needs_article)
local holonym = place_desc.holonyms[holonym_index]
if holonym.no_display then
return ""
end
-- needs_article and force_the are not used in Chinese.
local output = holonym.display_placename
local placetype = holonym.placetype
local affix_type_pt_data, affix_type, affix_is_prefix, affix, prefix, suffix, no_affix_strings
local pt_equiv_for_affix_type, already_seen_affix, need_affix
local affix_pt_data, pt_equiv_for_affix
-- Implement display handlers (unchanged from enwikt).
local display_handler = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt) return placetype_data[pt] and placetype_data[pt].display_handler end)
if display_handler then
output = display_handler(placetype, output)
end
if not holonym.suppress_affix then
-- Affix detection logic is unchanged from enwikt; only the rendering differs below.
affix_type_pt_data, pt_equiv_for_affix_type = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt)
local cdpt = placetype_data[pt]
return cdpt and cdpt.affix_type and cdpt or nil
end
)
affix_pt_data, pt_equiv_for_affix = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt)
local cdpt = placetype_data[pt]
return cdpt and (cdpt.affix_type or cdpt.affix or cdpt.prefix or cdpt.suffix) and cdpt or nil
end
)
if affix_type_pt_data then
affix_type = affix_type_pt_data.affix_type
need_affix = true
end
if affix_pt_data then
prefix = affix_pt_data.prefix or affix_pt_data.affix
suffix = affix_pt_data.suffix or affix_pt_data.affix
need_affix = true
end
no_affix_strings = affix_pt_data and affix_pt_data.no_affix_strings or
affix_type_pt_data and affix_type_pt_data.no_affix_strings
if holonym.affix_type and placetype then
affix_type = holonym.affix_type
prefix = prefix or placetype
suffix = suffix or placetype
need_affix = true
end
if need_affix then
affix_is_prefix = affix_type == "pref" or affix_type == "Pref"
if affix_is_prefix then
affix = prefix
else
affix = suffix
end
if not affix then
if not pt_equiv_for_affix_type then
internal_error("Something wrong, `pt_equiv_for_affix_type` not set processing holonym: %s",
holonym)
end
affix = pt_equiv_for_affix_type.placetype
if not affix then
internal_error("Something wrong, no affix could be located in `pt_equiv_for_affix_type` for " ..
"holonym %s: %s", holonym, pt_equiv_for_affix_type)
end
end
no_affix_strings = no_affix_strings or lc(affix)
-- ZH: skip pluralize_affix (Chinese doesn't pluralize)
end
end
-- ZH: resolve zh_suffix for the affix placetype before linking.
local zh_sfx_to_append = nil
if need_affix then
local _, zh_sfx = m_zh_data.get_zh_placetype_props(affix, m_placetypes)
if zh_sfx then
local zh_sfx_str = m_zh_data.format_zh_name(zh_sfx)
-- Check if zh_suffix already present in the unlinked output.
local unlinked = m_placetypes.remove_links_and_html(output)
if not unlinked:find(zh_sfx_str, 1, true) then
zh_sfx_to_append = zh_sfx_str
end
end
end
output = link(output, holonym.langcode or placetype and "zh" or nil)
-- ZH: for both pref and suf, append zh_suffix directly after the linked name.
-- (EN prefix construction "placetype of placename" is not used in Chinese.)
if zh_sfx_to_append then
output = output .. zh_sfx_to_append
end
-- No article for Chinese.
return output
end
-- Format holonyms for a ZH old-style place description.
-- Collects all holonyms, filters "and"/"or" connectors, reverses for big→small containment order,
-- groups consecutive same-type holonyms (peer locations), then joins with ZH enumeration (、/和).
-- Returns the concatenated holonym string, e.g. "美國賓夕法尼亞州", "波蘭、白俄羅斯和烏克蘭".
local function format_holonyms_zh(place_desc)
local holonyms = place_desc.holonyms
if not holonyms or #holonyms == 0 then
return ""
end
-- Collect non-"and"/"or"/"的" holonym items with their original indices.
-- A raw "的" holonym (from |的| in the template, like enwikt's |of|) signals possessive preposition;
-- filter it from display since format_old_style_place_desc_for_display already appends de_particle.
local items = {}
local has_de_joiner = false
for i, h in ipairs(holonyms) do
if not h.no_display then
local dname = h.display_placename
if dname ~= "and" and dname ~= "or" then
if not h.placetype and dname == zh_strings.de_particle then
has_de_joiner = true
else
insert(items, {holonym_index = i, placetype = h.placetype})
end
end
end
end
-- Separate trailing raw text (items after the last structural holonym) from non-trailing.
-- Trailing raw text should NOT be reversed; it is appended after the full description with ,.
local last_structural_idx = 0
for i = #items, 1, -1 do
if items[i].placetype then
last_structural_idx = i
break
end
end
local non_trailing = {}
local trailing_texts = {}
for i = 1, #items do
if i <= last_structural_idx then
insert(non_trailing, items[i])
else
insert(trailing_texts, holonyms[items[i].holonym_index].display_placename)
end
end
-- Reverse non-trailing for big→small order.
local reversed = {}
for i = #non_trailing, 1, -1 do
insert(reversed, non_trailing[i])
end
-- Group consecutive items with the same placetype (peers like multiple countries).
-- Raw-text holonyms (no placetype) break any current structural group.
local groups = {}
local i = 1
while i <= #reversed do
local item = reversed[i]
if not item.placetype then
-- Raw text (e.g. "南部", "東北部") forms its own singleton group.
local h = holonyms[item.holonym_index]
insert(groups, {type = "raw", text = h.display_placename})
i = i + 1
else
-- Structural holonym: collect consecutive ones of the same placetype.
local group = {type = "structural", items = {item}}
local pt = item.placetype
i = i + 1
while i <= #reversed do
local next_item = reversed[i]
if next_item.placetype == pt then
insert(group.items, next_item)
i = i + 1
else
break
end
end
insert(groups, group)
end
end
-- Format each group and assemble.
local parts = {}
for _, group in ipairs(groups) do
if group.type == "raw" then
insert(parts, group.text)
else
local formatted = {}
for _, item in ipairs(group.items) do
insert(formatted, format_holonym(place_desc, item.holonym_index, false))
end
if #formatted == 1 then
insert(parts, formatted[1])
elseif #formatted == 2 then
insert(parts, formatted[1] .. zh_strings.and_conj .. formatted[2])
else
local last = table.remove(formatted)
insert(parts, concat(formatted, zh_strings.enum_sep) .. zh_strings.and_conj .. last)
end
end
end
return concat(parts), has_de_joiner, trailing_texts
end
-- Get the Chinese display name for a single (possibly qualified) placetype.
-- Strips qualifiers, looks up zh_name via m_zh_data, and prepends translated qualifier text.
-- `first_holonym_placetype` enables context-sensitive names (e.g. capital city → 首都/省會/首府).
local function get_zh_placetype_name(placetype, first_holonym_placetype)
local resolved_pt = m_placetypes.resolve_placetype_aliases(placetype)
local zh_name, _, zh_by_holonym = m_zh_data.get_zh_placetype_props(resolved_pt, m_placetypes)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, first_holonym_placetype)
return m_zh_data.format_zh_name(resolved)
end
-- Fallback to English name; add tracking for missing zh_data entries.
track("missing-zh-placetype/" .. tostring(placetype))
return placetype
end
-- Format a single entry placetype (possibly with qualifiers) for ZH display.
-- Strips qualifiers from the placetype, translates each qualifier via zh_qualifiers,
-- and prepends them to the Chinese placetype name.
local function format_one_zh_placetype(pt, first_holonym_placetype)
-- Try progressive qualifier splits; use the first that has a zh_name entry.
local splits = m_placetypes.split_qualifiers_from_placetype(pt)
local qualifier_prefix = ""
for _, sp in ipairs(splits) do
local prev_qualifier, this_qualifier, bare_pt = unpack(sp, 1, 3)
-- Accumulate qualifier strings.
local q_str = ""
if prev_qualifier then
q_str = (m_zh_data.zh_qualifiers[prev_qualifier] or prev_qualifier) ..
(m_zh_data.zh_qualifiers[this_qualifier] or (this_qualifier or ""))
elseif this_qualifier then
q_str = m_zh_data.zh_qualifiers[this_qualifier] or this_qualifier
end
local zh_n = get_zh_placetype_name(bare_pt, first_holonym_placetype)
if zh_n ~= bare_pt then
-- Found a known ZH entry; use it.
return q_str .. zh_n
end
qualifier_prefix = q_str
end
-- Fallback: just translate the full (possibly unrecognized) placetype.
return qualifier_prefix .. get_zh_placetype_name(pt, first_holonym_placetype)
end
-- Build the ZH entry placetype description from the `placetypes` list.
-- Handles "and"/"or" splitting (e.g. "城市/and/市鎮" → "城市和市鎮"),
-- multiple placetypes without and/or (joined with "、...和"),
-- and context-sensitive names via first_holonym_placetype.
local function get_zh_entry_placetype_desc(placetypes, first_holonym_placetype)
local is_ignorable = m_placetypes.placetype_is_ignorable
-- Find last and/or position.
local and_or_pos
for i, pt in ipairs(placetypes) do
if pt == "and" or pt == "or" then
and_or_pos = i
end
end
if and_or_pos then
-- Split into group before and group after the conjunction.
local group1, group2 = {}, {}
for i = 1, and_or_pos - 1 do
if not is_ignorable(placetypes[i]) then
insert(group1, format_one_zh_placetype(placetypes[i], first_holonym_placetype))
end
end
for i = and_or_pos + 1, #placetypes do
if not is_ignorable(placetypes[i]) then
insert(group2, format_one_zh_placetype(placetypes[i], first_holonym_placetype))
end
end
local conj_str = placetypes[and_or_pos] == "or" and "或" or zh_strings.and_conj
local all = {}
for _, v in ipairs(group1) do insert(all, v) end
for _, v in ipairs(group2) do insert(all, v) end
if #all == 0 then return "" end
if #all == 1 then return all[1] end
local last = table.remove(all)
return concat(all, zh_strings.enum_sep) .. conj_str .. last
else
-- No explicit and/or: collect all non-ignorable placetypes.
local formatted = {}
for _, pt in ipairs(placetypes) do
if not is_ignorable(pt) then
insert(formatted, format_one_zh_placetype(pt, first_holonym_placetype))
end
end
if #formatted == 0 then return "" end
if #formatted == 1 then return formatted[1] end
local last = table.remove(formatted)
return concat(formatted, zh_strings.enum_sep) .. zh_strings.and_conj .. last
end
end
-- Return the ZH description of a placetype for use in new-style <<placetype>> segments.
local function get_placetype_description(placetype)
return format_one_zh_placetype(placetype, nil)
end
-- Return the ZH description of a qualifier for use in new-style <<qualifier>> segments.
local function get_qualifier_description(qualifier)
-- Trim to just the qualifier word (split_qualifiers_from_placetype requires a trailing non-qualifier word).
local splits = m_placetypes.split_qualifiers_from_placetype(qualifier .. " foo")
local sp = splits[#splits]
local prev_qualifier, this_qualifier = unpack(sp, 1, 2)
if this_qualifier then
local q = m_zh_data.zh_qualifiers[this_qualifier] or this_qualifier
if prev_qualifier then
return (m_zh_data.zh_qualifiers[prev_qualifier] or prev_qualifier) .. q
end
return q
end
return qualifier
end
-- Format a set of form-of directive terms (unchanged from enwikt, only conjunction uses zh_strings).
local function format_form_of_directive(overall_place_spec, directive_terms, ucfirst, from_tcl)
local formatted_terms = {}
local placetypes
if not overall_place_spec.descs[2] then
placetypes = overall_place_spec.descs[1].placetypes
else
placetypes = {}
for _, desc in ipairs(overall_place_spec.descs) do
m_table.extend(placetypes, desc.placetypes)
end
end
for _, termobj in ipairs(directive_terms.terms) do
local placename_article
if not termobj.alt and termobj.term and not termobj.term:find("%[%[") then
placename_article = get_placename_article(termobj.term, placetypes)
end
local linked_term = m_links.full_link(termobj, "term", nil, "show qualifiers")
linked_term = "<span class='form-of-definition-link'>" .. linked_term .. "</span>"
if termobj.eq then
linked_term = linked_term .. " (= " .. m_links.full_link {term = termobj.eq, lang = zhlang} .. ")"
end
if placename_article then
linked_term = placename_article .. " " .. linked_term
end
insert(formatted_terms, linked_term)
end
local spec = directive_terms.spec
local text = spec.text
if type(text) == "function" then
text = text(overall_place_spec)
end
if text == "+" then
text = directive_terms.directive
end
if ucfirst then
text = m_strutils.ucfirst(text)
end
if not from_tcl then
local tracking_prefix = "form-of/" .. directive_terms.directive
track(tracking_prefix)
local langcode = overall_place_spec.lang:getCode()
local full_langcode = overall_place_spec.lang:getFullCode()
track(tracking_prefix .. "/" .. langcode)
if full_langcode ~= langcode then
track(tracking_prefix .. "/" .. full_langcode)
end
if full_langcode ~= "zh" then
track(tracking_prefix .. "/non-chinese")
end
end
return (require(form_of_module).format_form_of {
text = text,
lemmas = m_table.serialCommaJoin(formatted_terms, {conj = directive_terms.conj or spec.conjunction or zh_strings.and_conj}),
lemma_classes = false,
})
end
-- Format extra-info terms (capital, largest city, modern name, etc.) for ZH.
-- * Labels come from m_zh_data.zh_extra_info_labels (or zh_capital_label_by_holonym_type for capital).
-- * Separator: "。" + label in sentence style; ";" + label otherwise.
-- * Multiple terms joined with 、/和 instead of serial comma.
-- * auto_plural is skipped (Chinese doesn't pluralize).
local function format_extra_info(overall_place_spec, extra_info_terms, sentence_style)
local formatted_terms = {}
for _, termobj in ipairs(extra_info_terms.terms) do
insert(formatted_terms, m_links.full_link(termobj, nil, nil, "show qualifiers"))
end
local spec = extra_info_terms.spec
-- Resolve ZH label: look up by spec.arg, then spec.text as fallback.
local zh_label = m_zh_data.zh_extra_info_labels[spec.arg]
if not zh_label then
-- Try spec.text as the lookup key (e.g. "capital and largest city").
local spec_text = spec.text
if type(spec_text) == "function" then
spec_text = spec_text(overall_place_spec)
end
zh_label = m_zh_data.zh_extra_info_labels[spec_text] or spec_text or spec.arg
end
-- Context-sensitive "capital" label based on first holonym type (首都/省會/首府/縣治…).
if spec.arg == "capital" then
if overall_place_spec.descs and overall_place_spec.descs[1] and overall_place_spec.descs[1].holonyms then
for _, h in ipairs(overall_place_spec.descs[1].holonyms) do
if h.placetype then
local ctx_label = m_zh_data.zh_capital_label_by_holonym_type[h.placetype]
if ctx_label then
zh_label = ctx_label
end
break
end
end
end
end
local text = zh_label
if spec.with_colon then
text = text .. ":" -- full-width colon
end
if sentence_style and spec.match_sentence_style then
text = "。" .. text
else
text = zh_strings.semicolon .. text
end
-- Join terms with ZH enumeration.
local conj = extra_info_terms.conj or zh_strings.and_conj
local joined
if #formatted_terms == 0 then
joined = ""
elseif #formatted_terms == 1 then
joined = formatted_terms[1]
elseif #formatted_terms == 2 then
joined = formatted_terms[1] .. conj .. formatted_terms[2]
else
local last = table.remove(formatted_terms)
joined = concat(formatted_terms, zh_strings.enum_sep) .. conj .. last
end
return text .. joined
end
-- Format an old-style place description for ZH display.
-- Chinese pattern: [位於|""][holonym_string][的][zh_placetype_name]
-- * Holonyms are reversed (big→small), grouped, and joined with 、/和.
-- * "位於" is prepended for "in"-type placetypes; omitted for "of"-type (e.g. capitals).
-- * args.a (article override) is used as a prefix to the placetype name.
local function format_old_style_place_desc_for_display(args, place_desc, desc_index, with_article, ucfirst_flag)
local placetypes = place_desc.placetypes
-- Determine the entry placetype (last non-ignorable, non-conjunction item) for preposition lookup.
local entry_placetype_for_prep = nil
for i = #placetypes, 1, -1 do
local pt = placetypes[i]
if not m_placetypes.placetype_is_ignorable(pt) and pt ~= "and" and pt ~= "or" then
entry_placetype_for_prep = pt
break
end
end
-- Determine first structured holonym placetype for context-sensitive zh_name lookups.
local first_holonym_placetype = nil
if place_desc.holonyms then
for _, h in ipairs(place_desc.holonyms) do
if h.placetype then
first_holonym_placetype = h.placetype
break
end
end
end
-- Build the Chinese placetype description (possibly with qualifiers and multiple types).
local zh_pt_name = get_zh_entry_placetype_desc(placetypes, first_holonym_placetype)
-- Handle args.a (article override): used as a direct prefix in Chinese, e.g. a=盎格魯撒克遜 → "盎格魯撒克遜王國".
if with_article and desc_index == 1 and args.a then
zh_pt_name = args.a .. zh_pt_name
end
-- Build holonym string (reversed, grouped, ZH-joined).
-- has_de_joiner is true when a bare |的| token was in the holonym list (like enwikt's |of|).
local holonym_str, has_de_joiner, trailing_texts = "", false, {}
if place_desc.holonyms and #place_desc.holonyms > 0 then
holonym_str, has_de_joiner, trailing_texts = format_holonyms_zh(place_desc)
end
-- Determine preposition style ("in" → 位於…的; "of" → …的 with no 位於).
-- An explicit |的| joiner in the template overrides to possessive (no 位於).
local use_wei_yu = true
if has_de_joiner then
use_wei_yu = false
elseif entry_placetype_for_prep then
local prep = m_placetypes.get_placetype_entry_preposition(entry_placetype_for_prep)
if prep == "of" then
use_wei_yu = false
end
end
-- Assemble final string.
local result
if holonym_str ~= "" then
if use_wei_yu then
result = zh_strings.in_preposition .. holonym_str .. zh_strings.de_particle .. zh_pt_name
else
result = holonym_str .. zh_strings.de_particle .. zh_pt_name
end
else
result = zh_pt_name
end
if #trailing_texts > 0 then
result = result .. zh_strings.trans_sep .. concat(trailing_texts, zh_strings.trans_sep)
end
return result
end
--[==[
Get the full gloss (Chinese description) of a new-style place description. New-style place descriptions are
specified with a single string containing raw text interspersed with placetypes and holonyms surrounded by `<<...>>`.
Exported for use by [[Module:demonyms]].
]==]
function export.format_new_style_place_desc_for_display(args, place_desc, with_article)
local parts = {}
local function ins(txt)
insert(parts, txt)
end
-- args.a not used in Chinese (no article system).
local max_holonym = 0
for _, order in ipairs(place_desc.order) do
local segment_type, segment = order.type, order.value
if segment_type == "raw" then
ins(segment)
elseif segment_type == "placetype" then
ins(get_placetype_description(segment))
elseif segment_type == "qualifier" then
ins(get_qualifier_description(segment))
elseif segment_type == "holonym" then
ins(format_holonym(place_desc, segment, false))
if segment > max_holonym then
max_holonym = segment
end
else
internal_error("Unrecognized segment type %s", segment_type)
end
end
if place_desc.holonyms and max_holonym < #place_desc.holonyms then
local holonym_no_prefix = true
for holonym_index = max_holonym + 1, #place_desc.holonyms do
-- Append remaining holonyms with a space prefix (no "in"/"of" for new-style).
ins(" " .. format_holonym(place_desc, holonym_index, false))
holonym_no_prefix = false
end
end
return concat(parts)
end
-- Return a string with the gloss (the description of the place itself, as opposed to translations).
-- `sentence_style` controls whether extra-info uses "。" (sentence) or ";" (semicolon) separation.
local function get_display_form(data)
local overall_place_spec, ucfirst, sentence_style, drop_extra_info, extra_info_overridden_set, from_tcl =
data.overall_place_spec, data.ucfirst, data.sentence_style, data.drop_extra_info,
data.extra_info_overridden_set, data.from_tcl
local args = overall_place_spec.args
local parts = {}
local function ins(txt)
table.insert(parts, txt)
end
if overall_place_spec.directives and overall_place_spec.directives[1] then
for i, directive_terms in ipairs(overall_place_spec.directives) do
ins(directive_terms.pretext)
if directive_terms.pretext ~= "" then
ucfirst = false
end
if not args.def or args.def == "-" then
ins(format_form_of_directive(overall_place_spec, directive_terms, ucfirst, from_tcl))
ucfirst = false
if i == #overall_place_spec.directives and directive_terms.posttext then
ins(directive_terms.posttext)
end
end
end
end
if args.def == "-" then
return concat(parts)
end
if args.def then
if args.def:find("<<") then
local def_desc = export.parse_new_style_place_desc(args.def, args[1])
ins(export.format_new_style_place_desc_for_display({}, def_desc, false))
else
ins(args.def)
end
else
local include_article = true
for n, desc in ipairs(overall_place_spec.descs) do
if desc.order then
ins(export.format_new_style_place_desc_for_display(args, desc, n == 1))
else
ins(format_old_style_place_desc_for_display(args, desc, n, include_article, ucfirst))
end
if desc.joiner then
ins(desc.joiner)
end
include_article = desc.include_following_article
ucfirst = false
end
end
local addl = args.addl
if addl then
if addl:find("^[;:]") then
ins(addl)
elseif addl:find("^_") then
ins(" " .. addl:sub(2))
else
ins("," .. addl)
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
if not drop_extra_info or extra_info_terms.spec.display_even_when_dropped or
extra_info_overridden_set and extra_info_overridden_set[extra_info_terms.spec.arg] then
ins(format_extra_info(overall_place_spec, extra_info_terms, sentence_style))
end
end
return concat(parts)
end
-- Return the definition line.
-- ZH: sentence_style is always true; ucfirst is always false (no case in Chinese);
-- parentheses around glosses are full-width ().
local function get_def(data)
local overall_place_spec, from_tcl, drop_extra_info, extra_info_overridden_set, translation_follows =
data.overall_place_spec, data.from_tcl, data.drop_extra_info, data.extra_info_overridden_set,
data.translation_follows
local args = overall_place_spec.args
local sentence_style = true -- always sentence style in Chinese
local ucfirst = false -- Chinese has no case
if #args.t > 0 then
local gloss = get_display_form {
overall_place_spec = overall_place_spec,
ucfirst = false,
sentence_style = false,
drop_extra_info = drop_extra_info,
extra_info_overridden_set = extra_info_overridden_set,
from_tcl = from_tcl,
}
if from_tcl and not args.tcl_nolc then
gloss = m_strutils.lcfirst(gloss)
end
if translation_follows then
return (gloss == "" and "" or gloss .. ":") .. get_translations(args.t, args.tid)
else
return get_translations(args.t, args.tid) ..
(gloss == "" and "" or zh_strings.paren_open .. gloss .. zh_strings.paren_close)
end
else
return get_display_form {
overall_place_spec = overall_place_spec,
ucfirst = ucfirst,
sentence_style = sentence_style,
drop_extra_info = drop_extra_info,
extra_info_overridden_set = extra_info_overridden_set,
from_tcl = from_tcl,
}
end
end
---------- Functions for the category wikicode
-- The code in this section finds the categories to which a given place belongs. See enwikt [[Module:place]]
-- for detailed documentation of the algorithm.
--[=[
Find the appropriate category specs for a given place description and placetype.
See enwikt [[Module:place]] for detailed documentation.
]=]
local function find_placetype_cat_specs(data)
local entry_placetype, place_desc, first_holonym_index, overriding_holonym, from_demonym =
data.entry_placetype, data.place_desc, data.first_holonym_index, data.overriding_holonym, data.from_demonym
local form_of_directive = data.form_of_directive
local function fetch_cat_specs(holonym_to_match, index, no_fallback)
local holonym_placetype = holonym_to_match.placetype
if not holonym_placetype then
return nil
end
local holonym_placename = holonym_to_match.unlinked_placename
if not holonym_placename then
internal_error("Missing unlinked_placename in holonym (index %s): %s", index, holonym_to_match)
end
local cat_specs, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
return m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt) return m_placetypes.political_division_cat_handler {
entry_placetype = equiv_entry_pt,
holonym_placetype = equiv_holonym_pt,
holonym_placename = holonym_placename,
holonym_index = index,
place_desc = place_desc,
from_demonym = from_demonym,
} end)
end,
{no_fallback = no_fallback, form_of_directive = form_of_directive}
)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
local cat_handler, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
local entry_placetype_data = m_placetypes.placetype_data[equiv_entry_pt]
if entry_placetype_data and entry_placetype_data.cat_handler then
return entry_placetype_data.cat_handler
end
end,
{no_fallback = no_fallback, form_of_directive = form_of_directive}
)
if cat_handler then
local cat_specs = m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt) return cat_handler {
entry_placetype = equiv_entry_placetype_and_qualifier.placetype,
holonym_placetype = equiv_holonym_pt,
holonym_placename = holonym_placename,
holonym_index = index,
place_desc = place_desc,
from_demonym = from_demonym,
} end)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
end
if not no_fallback then
local cat_specs, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
local entry_placetype_data = m_placetypes.placetype_data[equiv_entry_pt]
if entry_placetype_data then
return m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt)
return entry_placetype_data[equiv_holonym_pt .. "/*"]
end)
end
end,
{form_of_directive = form_of_directive}
)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
end
return nil
end
if overriding_holonym then
local cat_specs, fetched_entry_placetype = fetch_cat_specs(overriding_holonym, nil)
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = overriding_holonym,
}
end
else
-- First pass: no fallback (exact entry placetype match only).
for i, holonym in ipairs(place_desc.holonyms) do
if first_holonym_index and i < first_holonym_index then
-- continue
else
local cat_specs, fetched_entry_placetype = fetch_cat_specs(holonym, i, "no_fallback")
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = holonym,
triggering_holonym_index = i,
}
end
end
end
-- Second pass: with fallback.
for i, holonym in ipairs(place_desc.holonyms) do
if first_holonym_index and i < first_holonym_index then
-- continue
else
local cat_specs, fetched_entry_placetype = fetch_cat_specs(holonym, i)
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = holonym,
triggering_holonym_index = i,
}
end
end
end
end
return nil
end
-- Turn a list of category specs (see comment at section top) into the corresponding categories
-- (minus the language code prefix).
local function cat_specs_to_categories(place_desc, cat_data)
local all_cats = {}
local cat_specs, entry_placetype, triggering_holonym, triggering_holonym_index =
cat_data.cat_specs, cat_data.entry_placetype, cat_data.triggering_holonym, cat_data.triggering_holonym_index
if triggering_holonym then
for _, cat_spec in ipairs(cat_specs) do
local cat
if cat_spec == true then
-- ZH: "法國的城市" / "非洲國家" (continent/region omit 的); +++ replaced below
local de = triggering_holonym and (
triggering_holonym.placetype == "continent" or
triggering_holonym.placetype == "region" or
triggering_holonym.placetype == "continental region" or
triggering_holonym.placetype == "supercontinent" or
triggering_holonym.placetype == "planet"
) and "" or zh_strings.de_particle
cat = "+++" .. de .. get_zh_placetype_name(entry_placetype)
else
cat = cat_spec
end
if cat:find("%+%+%+") then
local group, key, spec, container_trail = m_placetypes.find_matching_holonym_location {
holonym_placetype = triggering_holonym.placetype,
holonym_placename = triggering_holonym.unlinked_placename,
holonym_index = triggering_holonym_index,
place_desc = place_desc,
}
if group then
cat = cat:gsub("%+%+%+", m_strutils.replacement_escape(m_placetypes.get_prefixed_key(key, spec)))
insert(all_cats, cat)
else
mw.log(("Unable to insert category for cat spec '%s' because holonym '%s/%s' did not match a " ..
"known location"):format(cat, triggering_holonym.placetype, triggering_holonym.unlinked_placename))
track("cant-match-holonym-for-category-spec")
end
else
insert(all_cats, cat)
end
end
else
for _, cat_spec in ipairs(cat_specs) do
local cat
if cat_spec == true then
-- ZH: bare placetype category (e.g. "城市")
cat = get_zh_placetype_name(entry_placetype)
else
cat = cat_spec
if cat:find("%+%+%+") then
internal_error("Category %s contains +++ but there is no holonym to substitute", cat)
end
end
insert(all_cats, cat)
end
end
return all_cats
end
-- Return the categories (without initial lang code) that should be added to the entry, given the place description
-- and a particular entry placetype.
local function get_placetype_cats(place_desc, entry_placetype, from_demonym, form_of_directive)
local cats = {}
local first_holonym_index = 1
while first_holonym_index <= #place_desc.holonyms do
local cat_data = find_placetype_cat_specs {
entry_placetype = entry_placetype,
place_desc = place_desc,
first_holonym_index = first_holonym_index,
from_demonym = from_demonym,
form_of_directive = form_of_directive,
}
if not cat_data then
break
end
local triggering_holonym = cat_data.triggering_holonym
if not triggering_holonym then
internal_error("find_placetype_cat_specs should have returned a triggering holonym: %s", cat_data)
end
extend(cats, cat_specs_to_categories(place_desc, cat_data))
first_holonym_index = cat_data.triggering_holonym_index
local equiv_triggering_placetypes = m_placetypes.get_placetype_equivs(triggering_holonym.placetype,
{no_fallback = true})
for _, equiv in ipairs(equiv_triggering_placetypes) do
local other_holonyms_of_same_type = place_desc.holonyms_by_placetype[equiv.placetype]
if other_holonyms_of_same_type then
for _, other_placename_of_same_type in ipairs(other_holonyms_of_same_type) do
if other_placename_of_same_type ~= triggering_holonym.unlinked_placename then
local overriding_holonym = {
placetype = triggering_holonym.placetype,
unlinked_placename = other_placename_of_same_type,
}
local other_cat_data = find_placetype_cat_specs {
entry_placetype = entry_placetype,
place_desc = place_desc,
overriding_holonym = overriding_holonym,
from_demonym = from_demonym,
form_of_directive = form_of_directive,
}
if other_cat_data then
extend(cats, cat_specs_to_categories(place_desc, other_cat_data))
end
end
end
end
end
first_holonym_index = first_holonym_index + 1
while first_holonym_index <= #place_desc.holonyms do
if place_desc.holonyms[first_holonym_index].continue_cat_loop then
break
end
first_holonym_index = first_holonym_index + 1
end
end
if cats[1] then
return cats
end
local entry_pt_default, equiv_entry_placetype_and_qualifier =
m_placetypes.get_equiv_placetype_prop(entry_placetype, function(pt)
return m_placetypes.placetype_data[pt] and m_placetypes.placetype_data[pt].default
end,
{form_of_directive = form_of_directive})
if entry_pt_default then
return cat_specs_to_categories(place_desc, {
cat_specs = entry_pt_default,
entry_placetype = equiv_entry_placetype_and_qualifier.placetype,
})
end
return {}
end
--[==[
Iterate through each type of place and return a list of the categories that need to be added to the entry.
See enwikt [[Module:place]] for detailed documentation.
]==]
function export.get_cats(args, overall_place_spec, from_demonym)
local cats = {}
local place_descriptions = overall_place_spec.descs
handle_category_implications(place_descriptions, m_placetypes.cat_implications)
m_placetypes.augment_holonyms_with_container(place_descriptions)
if overall_place_spec.directives then
for _, directive_terms in ipairs(overall_place_spec.directives) do
local spec_cats = directive_terms.spec.cat
if spec_cats then
if type(spec_cats) == "string" then
spec_cats = {spec_cats}
end
for _, spec_cat in ipairs(spec_cats) do
insert(cats, spec_cat)
end
end
if directive_terms.spec.type_prefix then
for _, place_desc in ipairs(place_descriptions) do
for _, placetype in ipairs(place_desc.placetypes) do
if not m_placetypes.placetype_is_ignorable(placetype) then
extend(cats, get_placetype_cats(place_desc, placetype, from_demonym,
directive_terms.spec.type_prefix))
end
end
end
end
end
end
if not from_demonym then
local bare_categories = m_placetypes.get_bare_categories(args, overall_place_spec)
extend(cats, bare_categories)
end
for _, place_desc in ipairs(place_descriptions) do
if not from_demonym then
for _, placetype in ipairs(place_desc.placetypes) do
if not m_placetypes.placetype_is_ignorable(placetype) then
extend(cats, get_placetype_cats(place_desc, placetype))
end
end
end
extend(cats, get_placetype_cats(place_desc, "*", from_demonym))
end
if args.cat then
for _, cat in ipairs(args.cat) do
local split_cats = split_on_comma(cat)
extend(cats, split_cats)
end
end
return cats
end
-- Return the category wikicode for a list of categories.
-- ZH: uses `lang:getFullName() .. " " .. cat` format for regular categories (same as cln: format in enwikt),
-- matching zhwikt's convention of "漢語 XX" category names instead of "zh:XX".
local function format_cats(lang, cats, sort_key)
local full_cats = {}
local langname = lang:getFullName()
for _, cat in ipairs(cats) do
local cln_cat = cat:match("^cln:(.*)$")
if cln_cat then
insert(full_cats, langname .. " " .. cln_cat)
else
-- ZH: use langname prefix instead of langcode:cat
insert(full_cats, langname .. " " .. cat)
end
end
return require(utilities_module).format_categories(full_cats, lang, sort_key, nil,
force_cat or m_placetypes.get_force_cat())
end
----------- Main entry point
--[==[
Implementation of {{tl|place}}. Meant to be callable from another module.
See enwikt [[Module:place]] for full documentation of the `data` argument fields.
]==]
function export.format(data)
local template_args = data.template_args
local list_param = {list = true}
local boolean_param = {type = "boolean"}
local params = {
[1] = {required = true, type = "language", default = "und"},
[2] = {required = true, list = true},
["t"] = list_param,
["tid"] = {list = true, allow_holes = true},
["cat"] = list_param,
["nocat"] = boolean_param,
["nocap"] = boolean_param,
["sort"] = true,
["pagename"] = true, -- for testing or documentation purposes
["a"] = true,
["addl"] = true,
["def"] = true,
-- params that are only used when transcluding using {{tcl}}/{{transclude}}, to transmit information to {{tcl}}.
["tcl"] = true,
["tcl_t"] = list_param,
["tcl_tid"] = list_param,
["tcl_nolb"] = true,
["tcl_nolc"] = boolean_param,
["tcl_noextratext"] = boolean_param,
}
-- add "extra info" parameters
for _, extra_arg_spec in ipairs(export.extra_info_args) do
params[extra_arg_spec.arg] = list_param
end
if template_args.def == "" then
error("Cannot currently pass def= as an empty parameter; use def=- if you want to suppress the definition display")
end
local args = require("Module:parameters").process(template_args, params)
if args.a then
track("a")
end
data.args = args
local overall_place_spec = parse_overall_place_spec(data)
data.overall_place_spec = overall_place_spec
return get_def(data) .. (
args.nocat and "" or format_cats(args[1], export.get_cats(args, overall_place_spec), args.sort))
end
--[==[
Actual entry point of {{tl|place}}.
]==]
function export.show(frame)
return export.format {
template_args = frame:getParent().args,
}
end
return export
trg8n2x5hp77k47m8nrc16k7mioo6kv
9759529
9759526
2026-05-14T21:46:23Z
TongcyDai
53191
9759529
Scribunto
text/plain
local export = {}
local force_cat = false -- set to true for testing
local m_placetypes = require("Module:place/placetypes")
local m_links = require("Module:links")
local memoize = require("Module:memoize")
local m_strutils = require("Module:string utilities")
local m_table = require("Module:table")
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local form_of_module = "Module:form of"
local languages_module = "Module:languages"
local parse_interface_module = "Module:parse interface"
local parse_utilities_module = "Module:parse utilities"
local parameter_utilities_module = "Module:parameter utilities"
local utilities_module = "Module:utilities"
local zhlang = require(languages_module).getByCode("zh")
local rmatch = m_strutils.match
local rfind = m_strutils.find
local ulen = m_strutils.len
local split = m_strutils.split
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local pluralize = require(en_utilities_module).pluralize
local extend = m_table.extend
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local internal_error = m_placetypes.internal_error
local process_error = m_placetypes.process_error
local placetype_data = m_placetypes.placetype_data
-- Shorthand for the ZH localization string table.
local zh_strings = m_zh_data.zh_strings
--[==[
ZH fork of [[Module:place]] (enwikt). Architecture and data structures are identical to the English version;
only the display-formatting functions are changed to produce Chinese-language definitions.
Key structural differences from enwikt:
* Old-style holonyms are reversed (big→small containment order) and joined with 、/和 rather than "in X, Y".
* Sentence pattern: 位於[holonyms]的[placetype] (or [holonyms]的[placetype] for "of"-type placetypes).
* No articles (a/an/the) in generated text.
* Pref/suf holonym affixes append the Chinese zh_suffix instead of English "placetype of X".
* Translations are joined with "," (full-width comma); parenthetical glosses use ().
* Extra-info labels (capital, largest city, etc.) come from Module:place/data zh_extra_info_labels.
* sentence_style is always true for ZH (extra info uses "。" separator, not ";").
]==]
--[==[ var:
List specifying the allowed form-of directives, used for former names, official names, abbreviations, etc. of places.
The key is the form-of directive and the value is an object with the following properties:
* `text`: The actual text displayed before the terms. If the value is `+`, the key is used as the text. If the value is
a function, it is passed a single argument, the overall place spec (see comment at top of file) and should return
the text to be displayed.
* `type_prefix`: The prefix used to generate the placetype for looking up the appropriate category or categories in the
placetype data structure. Can be omitted if there are no categories associated with the directive.
* `conjunction`: The conjunction used to join multiple terms, defaulting to `and`.
* `cat`: Additional category or categories to add the term to, whenever this particular directive is used.
* `default_foreign`: If specified, the default language of terms given along with this directive is the language in
{{para|1}}; otherwise it is English.
]==]
export.all_form_of_directives = {
["former name of"] = {text = "+", type_prefix = "FORMER_NAME_OF"},
["fmr of"] = {alias_of = "former name of"},
["ancient name of"] = {text = "+", type_prefix = "FORMER_NAME_OF"},
["official name of"] = {text = "+", type_prefix = "OFFICIAL_NAME_OF"},
["former official name of"] = {text = "+", type_prefix = "FORMER_OFFICIAL_NAME_OF"},
["long form of"] = {text = "+", type_prefix = "LONG_FORM_OF"},
["former long form of"] = {text = "+", type_prefix = "FORMER_LONG_FORM_OF"},
["nickname for"] = {text = "+", type_prefix = "NICKNAME_FOR"},
["official nickname for"] = {text = "+", type_prefix = "OFFICIAL_NICKNAME_FOR"},
["former nickname for"] = {text = "+", type_prefix = "FORMER_NICKNAME_FOR"},
["derogatory name for"] = {text = "[[Appendix:Glossary#derogatory|derogatory]] name for", type_prefix = "DEROGATORY_NAME_FOR"},
["synonym of"] = {text = "+"},
["syn of"] = {alias_of = "synonym of"},
["abbreviation of"] = {text = "[[Appendix:Glossary#abbreviation|abbreviation]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:abbreviations",
default_foreign = true},
["abbr of"] = {alias_of = "abbreviation of"},
["abbrev of"] = {alias_of = "abbreviation of"},
["initialism of"] = {text = "[[Appendix:Glossary#initialism|initialism]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:initialisms",
default_foreign = true},
["init of"] = {alias_of = "initialism of"},
["acronym of"] = {text = "[[Appendix:Glossary#acronym|acronym]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:acronyms",
default_foreign = true},
["syllabic abbreviation of"] = {text = "[[Appendix:Glossary#syllabic abbreviation|syllabic abbreviation]] of", type_prefix = "ABBREVIATION_OF", cat = "cln:syllabic abbreviations",
default_foreign = true},
["sylabbr of"] = {alias_of = "syllabic abbreviation of"},
["sylabbrev of"] = {alias_of = "syllabic abbreviation of"},
["ellipsis of"] = {text = "[[Appendix:Glossary#ellipsis|ellipsis]] of", type_prefix = "ELLIPSIS_OF", cat = "cln:ellipses",
default_foreign = true},
["ellip of"] = {alias_of = "ellipsis of"},
["clipping of"] = {text = "[[Appendix:Glossary#clipping|clipping]] of", type_prefix = "CLIPPING_OF", cat = "cln:clippings",
default_foreign = true},
["clip of"] = {alias_of = "clipping of"},
["alternative form of"] = {text = "+", default_foreign = true},
["alt form"] = {alias_of = "alternative form of"},
["alternative spelling of"] = {text = "+", default_foreign = true},
["alt spell"] = {alias_of = "alternative spelling of"},
["alt sp"] = {alias_of = "alternative spelling of"},
["dated form of"] = {text = "[[Appendix:Glossary#dated|dated]] form of", type_prefix = "DATED_FORM_OF", cat = "cln:dated forms",
default_foreign = true},
["dated form"] = {alias_of = "dated form of"},
["dated spelling of"] = {text = "[[Appendix:Glossary#dated|dated]] spelling of", type_prefix = "DATED_FORM_OF", cat = "cln:dated forms",
default_foreign = true},
["dated spell"] = {alias_of = "dated spelling of"},
["dated sp"] = {alias_of = "dated spelling of"},
["archaic form of"] = {text = "[[Appendix:Glossary#archaic|archaic]] form of", type_prefix = "ARCHAIC_FORM_OF", cat = "cln:archaic forms",
default_foreign = true},
["arch form"] = {alias_of = "archaic form of"},
["archaic spelling of"] = {text = "[[Appendix:Glossary#archaic|archaic]] spelling of", type_prefix = "ARCHAIC_FORM_OF", cat = "cln:archaic forms",
default_foreign = true},
["arch spell"] = {alias_of = "archaic spelling of"},
["arch sp"] = {alias_of = "archaic spelling of"},
["obsolete form of"] = {text = "[[Appendix:Glossary#obsolete|obsolete]] form of", type_prefix = "OBSOLETE_FORM_OF", cat = "cln:obsolete forms",
default_foreign = true},
["obs form"] = {alias_of = "obsolete form of"},
["obsolete spelling of"] = {text = "[[Appendix:Glossary#obsolete|obsolete]] spelling of", type_prefix = "OBSOLETE_FORM_OF", cat = "cln:obsolete forms",
default_foreign = true},
["obs spell"] = {alias_of = "obsolete spelling of"},
["obs sp"] = {alias_of = "obsolete spelling of"},
}
local function get_seat_text(overall_place_spec)
local placetype = overall_place_spec.descs[1].placetypes[1]
if placetype == "county" or placetype == "counties" then
return "county seat"
elseif placetype == "parish" or placetype == "parishes" then
return "parish seat"
elseif placetype == "borough" or placetype == "boroughs" then
return "borough seat"
else
return "seat"
end
end
--[==[ var:
List specifying the allowed arguments containing extra information that is sometimes added to a definition, such as the
capital, largest city, modern name, official name, etc., along with associated properties; displayed in the order given.
See enwikt [[Module:place]] for full documentation of each field.
]==]
export.extra_info_args = {
{arg = "modern", text = "+", conjunction = "or", display_even_when_dropped = true},
{arg = "now", text = "now,", conjunction = "or", display_even_when_dropped = true},
{arg = "full", text = "in full,", conjunction = "or", display_even_when_dropped = true},
{arg = "short", text = "short form", conjunction = "or"},
{arg = "abbr", text = "abbreviation", conjunction = "or"},
{arg = "former", text = "formerly,"},
{arg = "official", text = "official name", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "capital", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "largest city", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "caplc", text = "capital and largest city", match_sentence_style = true, auto_plural = false,
with_colon = true},
{arg = "seat", text = get_seat_text, match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "shire town", text = "+", match_sentence_style = true, auto_plural = true, with_colon = true},
{arg = "headquarters", text = "+", match_sentence_style = true, auto_plural = false, with_colon = true},
{arg = "center", text = "administrative center", match_sentence_style = true, auto_plural = false, with_colon = true},
{arg = "centre", text = "administrative centre", match_sentence_style = true, auto_plural = false, with_colon = true},
}
export.extra_info_arg_map = {}
for _, spec in ipairs(export.extra_info_args) do
export.extra_info_arg_map[spec.arg] = spec
end
----------- Wikicode utility functions
-- Return a wikilink link {{l|language|text}}
local function link(text, langcode, id)
if not langcode then
return text
end
return m_links.language_link( -- l10n, avoid simp/trad or applying special fonts
{
term = text,
alt = text,
lang = require(languages_module).getByCode(langcode, true, "allow etym"),
id = id
}
)
end
---------- Basic utility functions
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
local function ucfirst_all(text)
if text:find(" ") then
local parts = split(text, " ", true)
for i, part in ipairs(parts) do
parts[i] = m_strutils.ucfirst(part)
end
return concat(parts, " ")
else
return m_strutils.ucfirst(text)
end
end
local function lc(text)
return mw.getContentLanguage():lc(text)
end
---------- Argument parsing functions and utilities
-- Split an argument on comma, but not comma followed by whitespace.
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
-- Split an argument on slash, but not slash occurring inside of HTML tags like </span> or <br />.
local function split_on_slash(arg)
if arg:find("<") then
local m_parse_utilities = require(parse_utilities_module)
-- We implement this by parsing balanced segment runs involving <...>, and splitting on slash in the remainder.
-- The result is a list of lists, so we have to rejoin the inner lists by concatenating.
local segments = m_parse_utilities.parse_balanced_segment_run(arg, "<", ">")
local slash_separated_groups = m_parse_utilities.split_alternating_runs(segments, "/")
for i, group in ipairs(slash_separated_groups) do
slash_separated_groups[i] = concat(group)
end
return slash_separated_groups
else
return split(arg, "/", true)
end
end
-- Implement "implications", i.e. where the presence of a given holonym causes additional holonym(s) to be added.
-- Implications apply only to categorization.
local function handle_category_implications(place_descriptions, implication_data)
for i, desc in ipairs(place_descriptions) do
if desc.holonyms then
local new_holonyms = {}
for _, holonym in ipairs(desc.holonyms) do
insert(new_holonyms, holonym)
local imp_data = m_placetypes.get_equiv_placetype_prop(holonym.placetype, function(pt)
local implication = implication_data[pt] and implication_data[pt][holonym.unlinked_placename]
if implication then
return implication
end
end)
if imp_data then
for _, holonym_to_add in ipairs(imp_data) do
local split_holonym = split_on_slash(holonym_to_add)
if #split_holonym ~= 2 then
internal_error("Invalid holonym in implications: %s", holonym_to_add)
end
local holonym_placetype, holonym_placename = unpack(split_holonym, 1, 2)
local new_holonym = {
placetype = holonym_placetype, unlinked_placename = holonym_placename
}
insert(new_holonyms, new_holonym)
m_placetypes.key_holonym_into_place_desc(desc, new_holonym)
end
end
end
desc.holonyms = new_holonyms
end
end
end
-- Split a holonym (e.g. "continent/Europe" or "country/en:Italy" or "in southern" or "r:suf/O'Higgins" or
-- "c/Austria,Germany,Czech Republic") into its components. Return a list of holonym objects (see top of file). Note
-- that if there isn't a slash in the holonym (e.g. "in southern"), the `placetype` field of the holonym will be nil.
-- Placetype aliases (e.g. "r" for "region") and placename aliases (e.g. "US" or "USA" for "United States") will be
-- expanded.
local function split_holonym(raw)
local no_display, combined_holonym = raw:match("^(!)(.*)$")
no_display = not not no_display
combined_holonym = combined_holonym or raw
local suppress_comma, combined_holonym_without_comma = combined_holonym:match("^(%*)(.*)$")
suppress_comma = not not suppress_comma
combined_holonym = combined_holonym_without_comma or combined_holonym
local holonym_parts = split_on_slash(combined_holonym)
if #holonym_parts == 1 then
-- `unlinked_placename` should not be used.
return {{display_placename = combined_holonym, no_display = no_display, suppress_comma = suppress_comma}}
end
-- Rejoin further slashes in case of slash in holonym placename, e.g. Admaston/Bromley.
local placetype = holonym_parts[1]
local placename = concat(holonym_parts, "/", 2)
-- Check for modifiers after the holonym placetype.
local split_holonym_placetype = split(placetype, ":", true)
placetype = split_holonym_placetype[1]
local affix_type
local saw_also
local saw_the
for i = 2, #split_holonym_placetype do
local modifier = split_holonym_placetype[i]
if modifier == "also" then
if saw_also then
error(("Modifier ':also' occurs twice in holonym '%s'"):format(combined_holonym))
end
saw_also = true
elseif modifier == "the" then
if saw_the then
error(("Modifier ':the' occurs twice in holonym '%s'"):format(combined_holonym))
end
saw_the = true
elseif modifier == "pref" or modifier == "Pref" or modifier == "suf" or modifier == "Suf" or
modifier == "noaff" then
if affix_type then
error(("Affix-type modifier ':%s' occurs twice in holonym '%s'"):format(modifier, combined_holonym))
end
affix_type = modifier
else
error(("Unrecognized holonym placetype modifier '%s', should be one of " ..
"'pref', 'Pref', 'suf', 'Suf', 'noaff', 'also' or 'the'"):format(modifier))
end
end
placetype = m_placetypes.resolve_placetype_aliases(placetype)
local holonyms = split_on_comma(placename)
local pluralize_affix = #holonyms > 1
local affix_holonym_index = (affix_type == "pref" or affix_type == "Pref") and 1 or affix_type == "noaff" and 0 or
#holonyms
for i, placename in ipairs(holonyms) do
-- Check for langcode before the holonym placename, but don't get tripped up by Wikipedia links, which begin
-- "[[w:...]]" or "[[wikipedia:]]".
local langcode, placename_without_langcode = rmatch(placename, "^([^%[%]]-):(.*)$")
if langcode then
placename = placename_without_langcode
end
placename = m_placetypes.resolve_placename_display_aliases(placetype, placename)
holonyms[i] = {
placetype = placetype,
display_placename = placename,
unlinked_placename = m_placetypes.remove_links_and_html(placename),
langcode = langcode,
affix_type = i == affix_holonym_index and affix_type or nil,
pluralize_affix = i == affix_holonym_index and pluralize_affix,
suppress_affix = i ~= affix_holonym_index,
no_display = no_display,
suppress_comma = suppress_comma,
continue_cat_loop = saw_also,
force_the = i == 1 and saw_the,
}
end
return holonyms
end
local get_param_mods = memoize(function()
local m_param_utils = require(parameter_utilities_module)
return m_param_utils.construct_param_mods {
{group = {"link", "q", "l", "ref"}},
{param = "eq"},
{param = "conj", set = {["and"] = true, ["or"] = true, ["and/or"] = true}, overall = true},
}
end)
local function parse_term_with_inline_modifiers(term, paramname, default_lang)
local function generate_obj(raw_term, parse_err)
local obj = require(parameter_utilities_module).generate_obj_maybe_parsing_lang_prefix {
term = raw_term,
parse_err = parse_err,
parse_lang_prefix = true,
}
obj.lang = obj.lang or default_lang
return obj
end
return require(parse_interface_module).parse_inline_modifiers(term, {
paramname = paramname,
param_mods = get_param_mods(),
generate_obj = generate_obj,
splitchar = ",",
outer_container = {},
})
end
local function parse_form_of_directive(arg, lang, form_of_overridden_args)
local form_of_directive, raw_terms = arg:match("^@([a-z -]+):(.*)$")
if not form_of_directive then
error("Misformatted @-directive: " .. dump(arg))
end
if not export.all_form_of_directives[form_of_directive] then
local known_directives = {}
for k, _ in pairs(export.all_form_of_directives) do
insert(known_directives, '"' .. k .. '"')
end
table.sort(known_directives)
error(("Unrecognized form-of directive %s in @-directive %s; recognized directives are %s"):format(
dump(form_of_directive), dump(arg), concat(known_directives, ", ")))
end
local spec = export.all_form_of_directives[form_of_directive]
local canonical_directive = form_of_directive
if spec.alias_of then
canonical_directive = spec.alias_of
spec = export.all_form_of_directives[canonical_directive]
if not spec then
internal_error("Form-of directive alias %s points to %s, which is not a directive",
"@" .. form_of_directive, canonical_directive)
elseif spec.alias_of then
internal_error("Form-of directive alias %s points to %s, which is also an alias",
"@" .. form_of_directive, canonical_directive)
end
end
local default_foreign = spec.default_foreign
local directive_param = "@" .. form_of_directive
if form_of_overridden_args and form_of_overridden_args[canonical_directive] then
raw_terms = form_of_overridden_args[canonical_directive].new_value
local new_directive = form_of_overridden_args[canonical_directive].new_directive
local new_spec = export.all_form_of_directives[new_directive]
if not new_spec then
error(("Internal error: [[Module:transclude]] passed in unrecognized replacement directive '@%s'"):
format(new_directive))
end
if new_spec.alias_of then
error(("Internal error: [[Module:transclude]] passed in replacement directive alias '@%s', " ..
"should be canonical"):format(new_directive))
end
if new_directive ~= canonical_directive then
directive_param = directive_param .. (" (replaced with @%s)"):format(new_directive)
canonical_directive = new_directive
spec = new_spec
end
default_foreign = true
end
local terms = parse_term_with_inline_modifiers(raw_terms, directive_param,
default_foreign and lang or zhlang)
return {
directive = canonical_directive,
terms = terms.terms,
conj = terms.conj,
spec = spec,
}
end
-- Parse an argument containing extra information that is sometimes added to a definition, such as the capital, largest
-- city, modern name, official name, etc. `args` is the value from the parsed argument structure and can be either nil,
-- a string or a list. `spec` is the extra info spec corresponding to the type of extra info. Each value in `args` can
-- be a comma-separated list of terms with inline modifiers attached.
local function parse_extra_info_arg(args, spec, default_lang)
if not args then
return nil
end
if type(args) ~= "table" then
args = {args}
end
if not args[1] then
return nil
end
local terms = nil
local conj
for i, arg in ipairs(args) do
local this_terms = parse_term_with_inline_modifiers(arg, spec.arg .. (i == 1 and "" or i), default_lang)
local thisconj = this_terms.conj
if not conj then
conj = thisconj
elseif thisconj and conj ~= thisconj then
error(("Two different conjunctions '%s' and '%s' specified for |%s=; you only need to specify the " ..
"conjunction once"):format(conj, thisconj))
end
if not terms then
terms = this_terms.terms
else
m_table.extend(terms, this_terms.terms)
end
end
return {
spec = spec,
terms = terms,
conj = conj,
}
end
--[==[
Parse a "new-style" place description, with placetypes and holonyms surrounded by `<<...>>` amid otherwise raw text.
Return value is a place description object as documented at the top of the file. Exported for use by
[[Module:demonyms]].
]==]
function export.parse_new_style_place_desc(text, lang, form_of_directives, form_of_overridden_args)
local placetypes = {}
local segments = split(text, "<<(.-)>>")
local retval = {holonyms = {}, order = {}}
local form_of_directives_already_present = form_of_directives and not not form_of_directives[1]
for i, segment in ipairs(segments) do
if i % 2 == 1 then
insert(retval.order, {type = "raw", value = segment})
elseif segment:find("@") then
if not form_of_directives then
error(("Form-of directive '%s' not allowed in this context"):format(segment))
elseif form_of_directives_already_present then
error(("Saw form-of directive '%s' in new-style place desc followed by direct (separate-parameter) form-of directives; not allowed"):format(
segment))
elseif placetypes[1] or retval.holonyms[1] then
error(("Form-of directive '%s' must come first, before placetypes and holonyms"):format(segment))
else
local form_of_directive = parse_form_of_directive(segment, lang, form_of_overridden_args)
if not retval.order[1] or retval.order[1].type ~= "raw" or retval.order[2] then
internal_error("`retval.order` should have a single raw element: %s", retval.order)
end
form_of_directive.pretext = retval.order[1].value
retval.order[1] = nil
insert(form_of_directives, form_of_directive)
end
elseif segment:find("/") then
local holonyms = split_holonym(segment)
for j, holonym in ipairs(holonyms) do
if j > 1 then
if not holonym.no_display then
if j == #holonyms then
insert(retval.order, {type = "raw", value = zh_strings.and_conj})
else
insert(retval.order, {type = "raw", value = zh_strings.enum_sep})
end
end
holonym.needs_article = true
end
insert(retval.holonyms, holonym)
if not holonym.no_display then
insert(retval.order, {type = "holonym", value = #retval.holonyms})
end
m_placetypes.key_holonym_into_place_desc(retval, holonym)
end
else
local treat_as, display = segment:match("^(..-):(.+)$")
if treat_as then
segment = treat_as
else
display = segment
end
-- see if the placetype segment is just qualifiers
local only_qualifiers = true
local split_segments = split(segment, " ", true)
for _, split_segment in ipairs(split_segments) do
if m_placetypes.placetype_qualifiers[split_segment] == nil then
only_qualifiers = false
break
end
end
insert(placetypes, {placetype = segment, only_qualifiers = only_qualifiers})
if only_qualifiers then
insert(retval.order, {type = "qualifier", value = display})
else
insert(retval.order, {type = "placetype", value = display})
end
end
end
if not form_of_directives_already_present and form_of_directives and form_of_directives[1] then
form_of_directives[#form_of_directives].posttext = ""
end
local final_placetypes = {}
for i, placetype in ipairs(placetypes) do
if i > 1 and placetypes[i - 1].only_qualifiers then
final_placetypes[#final_placetypes] = final_placetypes[#final_placetypes] .. " " .. placetypes[i].placetype
else
insert(final_placetypes, placetypes[i].placetype)
end
end
retval.placetypes = final_placetypes
return retval
end
--[==[
Parse one or more "new-style" place descriptions, with placetypes and holonyms surrounded by `<<...>>` amid otherwise
raw text. Multiple descriptions are separated by two semicolons in a row. Return value is a list of place description
objects as documented at the top of the file.
]==]
local function parse_conjoined_new_style_place_desc(text, lang, form_of_directives, form_of_overridden_args)
local separate_specs = split(text, ";(;[^ ]*)")
local descs = {}
for i = 1, #separate_specs do
if i % 2 == 1 then
insert(descs, export.parse_new_style_place_desc(separate_specs[i], lang, form_of_directives,
form_of_overridden_args))
form_of_directives = nil
else
descs[#descs].separator = separate_specs[i]
end
end
return descs
end
--[=[
Process numeric and "extra info" arguments into an overall place spec, as described at the top of the file.
]=]
local function parse_overall_place_spec(data)
local args, from_tcl, extra_info_overridden_set, form_of_overridden_args =
data.args, data.from_tcl, data.extra_info_overridden_set, data.form_of_overridden_args
local descs = {}
local this_desc
-- Index of separate (semicolon-separated) place descriptions within `descs`.
local desc_index = 1
-- Index of separate holonyms within a place description. 0 means we've seen no holonyms and have yet to process
-- the placetypes that precede the holonyms. 1 means we've seen no holonyms but have already processed the
-- placetypes.
local holonym_index = 0
local in_place_desc = false
local form_of_directives = {}
-- ZH: use Chinese semicolon and space characters for multi-description joiners.
local function set_desc_joiner(desc, separator)
if separator == ";" then
this_desc.joiner = zh_strings.semicolon -- ";" instead of "; "
this_desc.include_following_article = true
elseif separator == ";;" then
this_desc.joiner = " "
else
local joiner = separator:sub(2)
if rfind(joiner, "^%a") then
this_desc.joiner = " " .. joiner .. " "
elseif joiner == "," then
-- ZH: ASCII comma → full-width ,(無空格)
this_desc.joiner = zh_strings.trans_sep
else
this_desc.joiner = joiner .. " "
end
end
end
for _, arg in ipairs(args[2]) do
if arg:find("^@") then
if not (desc_index == 1 and holonym_index == 0) then
error("@-directives cannot follow place descriptions")
end
local form_of_directive = parse_form_of_directive(arg, args[1], form_of_overridden_args)
if form_of_directives[1] then
form_of_directive.pretext = ", "
else
form_of_directive.pretext = ""
end
insert(form_of_directives, form_of_directive)
elseif arg == ";" or arg:find("^;[^ ]") then
if not this_desc then
error("Saw semicolon joiner without preceding place description")
end
set_desc_joiner(this_desc, arg)
desc_index = desc_index + 1
holonym_index = 0
in_place_desc = false
else
if arg:find("<<") then
if in_place_desc then
error("New-style place description must come first or following a separator (semicolon or similar), not directly following another description")
end
in_place_desc = true
local this_descs = parse_conjoined_new_style_place_desc(arg, args[1], form_of_directives,
form_of_overridden_args)
for j, desc in ipairs(this_descs) do
this_desc = desc
if holonym_index > 0 then
desc_index = desc_index + 1
holonym_index = 0
end
if j < #this_descs then
set_desc_joiner(this_desc, this_desc.separator)
end
descs[desc_index] = this_desc
last_was_new_style = true
holonym_index = #this_desc.holonyms + 1
end
else
-- Old-style arguments can directly follow a new-style argument; they become additional holonyms
-- tacked onto the end of the holonym list, and are displayed old-style except that there is no
-- prefix before the first one following the new-style argument.
in_place_desc = true
if holonym_index == 0 then
local entry_placetypes = split_on_slash(arg)
this_desc = {placetypes = entry_placetypes, holonyms = {}}
descs[desc_index] = this_desc
holonym_index = holonym_index + 1
else
local holonyms = split_holonym(arg)
for j, holonym in ipairs(holonyms) do
if j > 1 then
-- All but the first in a multi-holonym need an article. Not for the first one because e.g.
-- {{place|en|city|s/Arizona|c/United States}} should not display as "a city in Arizona, the
-- United States". The overall first holonym in the place description gets an article if
-- needed regardless of our setting here.
holonym.needs_article = true
-- Insert "and" before the last holonym.
if j == #holonyms then
this_desc.holonyms[holonym_index] = {
-- Use the no_display value from the first holonym; it should be the same for all
-- holonyms. `unlinked_placename` should not be used.
display_placename = "and", no_display = holonyms[1].no_display
}
holonym_index = holonym_index + 1
end
end
this_desc.holonyms[holonym_index] = holonym
m_placetypes.key_holonym_into_place_desc(this_desc, this_desc.holonyms[holonym_index])
holonym_index = holonym_index + 1
end
end
end
end
end
if form_of_directives[1] and not form_of_directives[#form_of_directives].posttext then
form_of_directives[#form_of_directives].posttext =
(args.def and args.def ~= "-" or not args.def and descs[1]) and ": " or ""
end
-- Tracking code (unchanged from enwikt).
for _, desc in ipairs(descs) do
for _, entry_placetype in ipairs(desc.placetypes) do
local splits = m_placetypes.split_qualifiers_from_placetype(entry_placetype, "no canon qualifiers")
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, bare_placetype = unpack(split, 1, 3)
track("entry-placetype/" .. bare_placetype)
if this_qualifier then
track("entry-qualifier/" .. this_qualifier)
end
end
end
for _, holonym in ipairs(desc.holonyms) do
if holonym.placetype then
track("holonym-placetype/" .. holonym.placetype)
end
end
end
local extra_info = {}
for _, extra_info_spec in ipairs(export.extra_info_args) do
local extra_info_terms = parse_extra_info_arg(args[extra_info_spec.arg], extra_info_spec,
from_tcl and extra_info_overridden_set and extra_info_overridden_set[extra_info_spec.arg] and args[1] or
zhlang)
if extra_info_terms then
insert(extra_info, extra_info_terms)
end
end
return {
lang = args[1],
args = args,
directives = form_of_directives,
descs = descs,
extra_info = extra_info,
}
end
-------- Definition-generating functions
-- Return a string with the wikilinks to the ZH translations of the word.
-- ZH: joins multiple translations with "," (full-width comma) instead of ", ".
local function get_translations(transl, ids)
local ret = {}
for i, t in ipairs(transl) do
local arg_transls = split_on_comma(t)
local arg_ids = ids[i]
if arg_ids then
arg_ids = split_on_comma(arg_ids)
if #arg_transls ~= #arg_ids then
error(("Saw %s translation%s in t%s=%s but %s ID%s in tid%s=%s"):format(
#arg_transls, #arg_transls > 1 and "s" or "", i == 1 and "" or i, t, #arg_ids,
#arg_ids > 1 and "'s" or "", i == 1 and "" or i, ids[i]))
end
end
for j, arg_transl in ipairs(arg_transls) do
insert(ret, link(arg_transl, "zh", arg_ids and arg_ids[j] or nil))
end
end
return concat(ret, zh_strings.trans_sep) -- "," instead of ", "
end
-- Chinese has no articles; these stubs keep the call-sites intact.
local function get_placename_article(decorated_placename, placetypes, placename, suppress_holonym_use_the_check)
return nil
end
local function get_holonym_article(decorated_placename, place_desc, holonym_index)
return nil
end
-- Convert a holonym into display format. For ZH:
-- * No article prepended (Chinese has no articles).
-- * Both prefix and suffix affix types append the zh_suffix (e.g. "州", "省") directly to the linked name,
-- instead of the English "placetype of placename" / "placename placetype" construction.
-- * Display handlers are applied unchanged (they may add text based on the holonym's surrounding context).
local function format_holonym(place_desc, holonym_index, needs_article)
local holonym = place_desc.holonyms[holonym_index]
if holonym.no_display then
return ""
end
-- needs_article and force_the are not used in Chinese.
local output = holonym.display_placename
local placetype = holonym.placetype
local affix_type_pt_data, affix_type, affix_is_prefix, affix, prefix, suffix, no_affix_strings
local pt_equiv_for_affix_type, already_seen_affix, need_affix
local affix_pt_data, pt_equiv_for_affix
-- Implement display handlers (unchanged from enwikt).
local display_handler = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt) return placetype_data[pt] and placetype_data[pt].display_handler end)
if display_handler then
output = display_handler(placetype, output)
end
if not holonym.suppress_affix then
-- Affix detection logic is unchanged from enwikt; only the rendering differs below.
affix_type_pt_data, pt_equiv_for_affix_type = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt)
local cdpt = placetype_data[pt]
return cdpt and cdpt.affix_type and cdpt or nil
end
)
affix_pt_data, pt_equiv_for_affix = m_placetypes.get_equiv_placetype_prop(placetype,
function(pt)
local cdpt = placetype_data[pt]
return cdpt and (cdpt.affix_type or cdpt.affix or cdpt.prefix or cdpt.suffix) and cdpt or nil
end
)
if affix_type_pt_data then
affix_type = affix_type_pt_data.affix_type
need_affix = true
end
if affix_pt_data then
prefix = affix_pt_data.prefix or affix_pt_data.affix
suffix = affix_pt_data.suffix or affix_pt_data.affix
need_affix = true
end
no_affix_strings = affix_pt_data and affix_pt_data.no_affix_strings or
affix_type_pt_data and affix_type_pt_data.no_affix_strings
if holonym.affix_type and placetype then
affix_type = holonym.affix_type
prefix = prefix or placetype
suffix = suffix or placetype
need_affix = true
end
if need_affix then
affix_is_prefix = affix_type == "pref" or affix_type == "Pref"
if affix_is_prefix then
affix = prefix
else
affix = suffix
end
if not affix then
if not pt_equiv_for_affix_type then
internal_error("Something wrong, `pt_equiv_for_affix_type` not set processing holonym: %s",
holonym)
end
affix = pt_equiv_for_affix_type.placetype
if not affix then
internal_error("Something wrong, no affix could be located in `pt_equiv_for_affix_type` for " ..
"holonym %s: %s", holonym, pt_equiv_for_affix_type)
end
end
no_affix_strings = no_affix_strings or lc(affix)
-- ZH: skip pluralize_affix (Chinese doesn't pluralize)
end
end
-- ZH: resolve zh_suffix for the affix placetype before linking.
local zh_sfx_to_append = nil
if need_affix then
local _, zh_sfx = m_zh_data.get_zh_placetype_props(affix, m_placetypes)
if zh_sfx then
local zh_sfx_str = m_zh_data.format_zh_name(zh_sfx)
-- Check if zh_suffix already present in the unlinked output.
local unlinked = m_placetypes.remove_links_and_html(output)
if not unlinked:find(zh_sfx_str, 1, true) then
zh_sfx_to_append = zh_sfx_str
end
end
end
output = link(output, holonym.langcode or placetype and "zh" or nil)
-- ZH: for both pref and suf, append zh_suffix directly after the linked name.
-- (EN prefix construction "placetype of placename" is not used in Chinese.)
if zh_sfx_to_append then
output = output .. zh_sfx_to_append
end
-- No article for Chinese.
return output
end
-- Format holonyms for a ZH old-style place description.
-- Collects all holonyms, filters "and"/"or" connectors, reverses for big→small containment order,
-- groups consecutive same-type holonyms (peer locations), then joins with ZH enumeration (、/和).
-- Returns the concatenated holonym string, e.g. "美國賓夕法尼亞州", "波蘭、白俄羅斯和烏克蘭".
local function format_holonyms_zh(place_desc)
local holonyms = place_desc.holonyms
if not holonyms or #holonyms == 0 then
return ""
end
-- Collect non-"and"/"or"/"的" holonym items with their original indices.
-- A raw "的" holonym (from |的| in the template, like enwikt's |of|) signals possessive preposition;
-- filter it from display since format_old_style_place_desc_for_display already appends de_particle.
local items = {}
local has_de_joiner = false
for i, h in ipairs(holonyms) do
if not h.no_display then
local dname = h.display_placename
if dname ~= "and" and dname ~= "or" then
if not h.placetype and dname == zh_strings.de_particle then
has_de_joiner = true
else
insert(items, {holonym_index = i, placetype = h.placetype})
end
end
end
end
-- Separate trailing raw text (items after the last structural holonym) from non-trailing.
-- Trailing raw text should NOT be reversed; it is appended after the full description with ,.
local last_structural_idx = 0
for i = #items, 1, -1 do
if items[i].placetype then
last_structural_idx = i
break
end
end
local non_trailing = {}
local trailing_texts = {}
for i = 1, #items do
if i <= last_structural_idx then
insert(non_trailing, items[i])
else
insert(trailing_texts, holonyms[items[i].holonym_index].display_placename)
end
end
-- Reverse non-trailing for big→small order.
local reversed = {}
for i = #non_trailing, 1, -1 do
insert(reversed, non_trailing[i])
end
-- Group consecutive items with the same placetype (peers like multiple countries).
-- Raw-text holonyms (no placetype) break any current structural group.
local groups = {}
local i = 1
while i <= #reversed do
local item = reversed[i]
if not item.placetype then
-- Raw text (e.g. "南部", "東北部") forms its own singleton group.
local h = holonyms[item.holonym_index]
insert(groups, {type = "raw", text = h.display_placename})
i = i + 1
else
-- Structural holonym: collect consecutive ones of the same placetype.
local group = {type = "structural", items = {item}}
local pt = item.placetype
i = i + 1
while i <= #reversed do
local next_item = reversed[i]
if next_item.placetype == pt then
insert(group.items, next_item)
i = i + 1
else
break
end
end
insert(groups, group)
end
end
-- Format each group and assemble.
local parts = {}
for _, group in ipairs(groups) do
if group.type == "raw" then
insert(parts, group.text)
else
local formatted = {}
for _, item in ipairs(group.items) do
insert(formatted, format_holonym(place_desc, item.holonym_index, false))
end
if #formatted == 1 then
insert(parts, formatted[1])
elseif #formatted == 2 then
insert(parts, formatted[1] .. zh_strings.and_conj .. formatted[2])
else
local last = table.remove(formatted)
insert(parts, concat(formatted, zh_strings.enum_sep) .. zh_strings.and_conj .. last)
end
end
end
return concat(parts), has_de_joiner, trailing_texts
end
-- Get the Chinese display name for a single (possibly qualified) placetype.
-- Strips qualifiers, looks up zh_name via m_zh_data, and prepends translated qualifier text.
-- `first_holonym_placetype` enables context-sensitive names (e.g. capital city → 首都/省會/首府).
local function get_zh_placetype_name(placetype, first_holonym_placetype)
local resolved_pt = m_placetypes.resolve_placetype_aliases(placetype)
local zh_name, _, zh_by_holonym = m_zh_data.get_zh_placetype_props(resolved_pt, m_placetypes)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, first_holonym_placetype)
return m_zh_data.format_zh_name(resolved)
end
-- Fallback to English name; add tracking for missing zh_data entries.
track("missing-zh-placetype/" .. tostring(placetype))
return placetype
end
-- Format a single entry placetype (possibly with qualifiers) for ZH display.
-- Strips qualifiers from the placetype, translates each qualifier via zh_qualifiers,
-- and prepends them to the Chinese placetype name.
local function format_one_zh_placetype(pt, first_holonym_placetype)
-- Try progressive qualifier splits; use the first that has a zh_name entry.
local splits = m_placetypes.split_qualifiers_from_placetype(pt)
local qualifier_prefix = ""
for _, sp in ipairs(splits) do
local prev_qualifier, this_qualifier, bare_pt = unpack(sp, 1, 3)
-- Accumulate qualifier strings.
local q_str = ""
if prev_qualifier then
q_str = (m_zh_data.zh_qualifiers[prev_qualifier] or prev_qualifier) ..
(m_zh_data.zh_qualifiers[this_qualifier] or (this_qualifier or ""))
elseif this_qualifier then
q_str = m_zh_data.zh_qualifiers[this_qualifier] or this_qualifier
end
local zh_n = get_zh_placetype_name(bare_pt, first_holonym_placetype)
if zh_n ~= bare_pt then
-- Found a known ZH entry; use it.
return q_str .. zh_n
end
qualifier_prefix = q_str
end
-- Fallback: just translate the full (possibly unrecognized) placetype.
return qualifier_prefix .. get_zh_placetype_name(pt, first_holonym_placetype)
end
-- Build the ZH entry placetype description from the `placetypes` list.
-- Handles "and"/"or" splitting (e.g. "城市/and/市鎮" → "城市和市鎮"),
-- multiple placetypes without and/or (joined with "、...和"),
-- and context-sensitive names via first_holonym_placetype.
local function get_zh_entry_placetype_desc(placetypes, first_holonym_placetype)
local is_ignorable = m_placetypes.placetype_is_ignorable
-- Find last and/or position.
local and_or_pos
for i, pt in ipairs(placetypes) do
if pt == "and" or pt == "or" then
and_or_pos = i
end
end
if and_or_pos then
-- Split into group before and group after the conjunction.
local group1, group2 = {}, {}
for i = 1, and_or_pos - 1 do
if not is_ignorable(placetypes[i]) then
insert(group1, format_one_zh_placetype(placetypes[i], first_holonym_placetype))
end
end
for i = and_or_pos + 1, #placetypes do
if not is_ignorable(placetypes[i]) then
insert(group2, format_one_zh_placetype(placetypes[i], first_holonym_placetype))
end
end
local conj_str = placetypes[and_or_pos] == "or" and "或" or zh_strings.and_conj
local all = {}
for _, v in ipairs(group1) do insert(all, v) end
for _, v in ipairs(group2) do insert(all, v) end
if #all == 0 then return "" end
if #all == 1 then return all[1] end
local last = table.remove(all)
return concat(all, zh_strings.enum_sep) .. conj_str .. last
else
-- No explicit and/or: collect all non-ignorable placetypes.
local formatted = {}
for _, pt in ipairs(placetypes) do
if not is_ignorable(pt) then
insert(formatted, format_one_zh_placetype(pt, first_holonym_placetype))
end
end
if #formatted == 0 then return "" end
if #formatted == 1 then return formatted[1] end
local last = table.remove(formatted)
return concat(formatted, zh_strings.enum_sep) .. zh_strings.and_conj .. last
end
end
-- Return the ZH description of a placetype for use in new-style <<placetype>> segments.
local function get_placetype_description(placetype)
return format_one_zh_placetype(placetype, nil)
end
-- Return the ZH description of a qualifier for use in new-style <<qualifier>> segments.
local function get_qualifier_description(qualifier)
-- Trim to just the qualifier word (split_qualifiers_from_placetype requires a trailing non-qualifier word).
local splits = m_placetypes.split_qualifiers_from_placetype(qualifier .. " foo")
local sp = splits[#splits]
local prev_qualifier, this_qualifier = unpack(sp, 1, 2)
if this_qualifier then
local q = m_zh_data.zh_qualifiers[this_qualifier] or this_qualifier
if prev_qualifier then
return (m_zh_data.zh_qualifiers[prev_qualifier] or prev_qualifier) .. q
end
return q
end
return qualifier
end
-- Format a set of form-of directive terms (unchanged from enwikt, only conjunction uses zh_strings).
local function format_form_of_directive(overall_place_spec, directive_terms, ucfirst, from_tcl)
local formatted_terms = {}
local placetypes
if not overall_place_spec.descs[2] then
placetypes = overall_place_spec.descs[1].placetypes
else
placetypes = {}
for _, desc in ipairs(overall_place_spec.descs) do
m_table.extend(placetypes, desc.placetypes)
end
end
for _, termobj in ipairs(directive_terms.terms) do
local placename_article
if not termobj.alt and termobj.term and not termobj.term:find("%[%[") then
placename_article = get_placename_article(termobj.term, placetypes)
end
local linked_term = m_links.full_link(termobj, "term", nil, "show qualifiers")
linked_term = "<span class='form-of-definition-link'>" .. linked_term .. "</span>"
if termobj.eq then
linked_term = linked_term .. " (= " .. m_links.full_link {term = termobj.eq, lang = zhlang} .. ")"
end
if placename_article then
linked_term = placename_article .. " " .. linked_term
end
insert(formatted_terms, linked_term)
end
local spec = directive_terms.spec
local text = spec.text
if type(text) == "function" then
text = text(overall_place_spec)
end
if text == "+" then
text = directive_terms.directive
end
if ucfirst then
text = m_strutils.ucfirst(text)
end
if not from_tcl then
local tracking_prefix = "form-of/" .. directive_terms.directive
track(tracking_prefix)
local langcode = overall_place_spec.lang:getCode()
local full_langcode = overall_place_spec.lang:getFullCode()
track(tracking_prefix .. "/" .. langcode)
if full_langcode ~= langcode then
track(tracking_prefix .. "/" .. full_langcode)
end
if full_langcode ~= "zh" then
track(tracking_prefix .. "/non-chinese")
end
end
return (require(form_of_module).format_form_of {
text = text,
lemmas = m_table.serialCommaJoin(formatted_terms, {conj = directive_terms.conj or spec.conjunction or zh_strings.and_conj}),
lemma_classes = false,
})
end
-- Format extra-info terms (capital, largest city, modern name, etc.) for ZH.
-- * Labels come from m_zh_data.zh_extra_info_labels (or zh_capital_label_by_holonym_type for capital).
-- * Separator: "。" + label in sentence style; ";" + label otherwise.
-- * Multiple terms joined with 、/和 instead of serial comma.
-- * auto_plural is skipped (Chinese doesn't pluralize).
local function format_extra_info(overall_place_spec, extra_info_terms, sentence_style)
local formatted_terms = {}
for _, termobj in ipairs(extra_info_terms.terms) do
insert(formatted_terms, m_links.full_link(termobj, nil, nil, "show qualifiers"))
end
local spec = extra_info_terms.spec
-- Resolve ZH label: look up by spec.arg, then spec.text as fallback.
local zh_label = m_zh_data.zh_extra_info_labels[spec.arg]
if not zh_label then
-- Try spec.text as the lookup key (e.g. "capital and largest city").
local spec_text = spec.text
if type(spec_text) == "function" then
spec_text = spec_text(overall_place_spec)
end
zh_label = m_zh_data.zh_extra_info_labels[spec_text] or spec_text or spec.arg
end
-- Context-sensitive "capital" label based on first holonym type (首都/省會/首府/縣治…).
if spec.arg == "capital" then
if overall_place_spec.descs and overall_place_spec.descs[1] and overall_place_spec.descs[1].holonyms then
for _, h in ipairs(overall_place_spec.descs[1].holonyms) do
if h.placetype then
local ctx_label = m_zh_data.zh_capital_label_by_holonym_type[h.placetype]
if ctx_label then
zh_label = ctx_label
end
break
end
end
end
end
local text = zh_label
if spec.with_colon then
text = text .. ":" -- full-width colon
end
if sentence_style and spec.match_sentence_style then
text = "。" .. text
else
text = zh_strings.semicolon .. text
end
-- Join terms with ZH enumeration.
local conj = extra_info_terms.conj or zh_strings.and_conj
local joined
if #formatted_terms == 0 then
joined = ""
elseif #formatted_terms == 1 then
joined = formatted_terms[1]
elseif #formatted_terms == 2 then
joined = formatted_terms[1] .. conj .. formatted_terms[2]
else
local last = table.remove(formatted_terms)
joined = concat(formatted_terms, zh_strings.enum_sep) .. conj .. last
end
return text .. joined
end
-- Format an old-style place description for ZH display.
-- Chinese pattern: [位於|""][holonym_string][的][zh_placetype_name]
-- * Holonyms are reversed (big→small), grouped, and joined with 、/和.
-- * "位於" is prepended for "in"-type placetypes; omitted for "of"-type (e.g. capitals).
-- * args.a (article override) is used as a prefix to the placetype name.
local function format_old_style_place_desc_for_display(args, place_desc, desc_index, with_article, ucfirst_flag)
local placetypes = place_desc.placetypes
-- Determine the entry placetype (last non-ignorable, non-conjunction item) for preposition lookup.
local entry_placetype_for_prep = nil
for i = #placetypes, 1, -1 do
local pt = placetypes[i]
if not m_placetypes.placetype_is_ignorable(pt) and pt ~= "and" and pt ~= "or" then
entry_placetype_for_prep = pt
break
end
end
-- Determine first structured holonym placetype for context-sensitive zh_name lookups.
local first_holonym_placetype = nil
if place_desc.holonyms then
for _, h in ipairs(place_desc.holonyms) do
if h.placetype then
first_holonym_placetype = h.placetype
break
end
end
end
-- Build the Chinese placetype description (possibly with qualifiers and multiple types).
local zh_pt_name = get_zh_entry_placetype_desc(placetypes, first_holonym_placetype)
-- Handle args.a (article override): used as a direct prefix in Chinese, e.g. a=盎格魯撒克遜 → "盎格魯撒克遜王國".
if with_article and desc_index == 1 and args.a then
zh_pt_name = args.a .. zh_pt_name
end
-- Build holonym string (reversed, grouped, ZH-joined).
-- has_de_joiner is true when a bare |的| token was in the holonym list (like enwikt's |of|).
local holonym_str, has_de_joiner, trailing_texts = "", false, {}
if place_desc.holonyms and #place_desc.holonyms > 0 then
holonym_str, has_de_joiner, trailing_texts = format_holonyms_zh(place_desc)
end
-- Determine preposition style ("in" → 位於…的; "of" → …的 with no 位於).
-- An explicit |的| joiner in the template overrides to possessive (no 位於).
local use_wei_yu = true
if has_de_joiner then
use_wei_yu = false
elseif entry_placetype_for_prep then
local prep = m_placetypes.get_placetype_entry_preposition(entry_placetype_for_prep)
if prep == "of" then
use_wei_yu = false
end
end
-- Assemble final string.
local result
if holonym_str ~= "" then
if use_wei_yu then
result = zh_strings.in_preposition .. holonym_str .. zh_strings.de_particle .. zh_pt_name
else
result = holonym_str .. zh_strings.de_particle .. zh_pt_name
end
else
result = zh_pt_name
end
if #trailing_texts > 0 then
result = result .. zh_strings.trans_sep .. concat(trailing_texts, zh_strings.trans_sep)
end
return result
end
--[==[
Get the full gloss (Chinese description) of a new-style place description. New-style place descriptions are
specified with a single string containing raw text interspersed with placetypes and holonyms surrounded by `<<...>>`.
Exported for use by [[Module:demonyms]].
]==]
function export.format_new_style_place_desc_for_display(args, place_desc, with_article)
local parts = {}
local function ins(txt)
insert(parts, txt)
end
-- args.a not used in Chinese (no article system).
local max_holonym = 0
for _, order in ipairs(place_desc.order) do
local segment_type, segment = order.type, order.value
if segment_type == "raw" then
ins(segment)
elseif segment_type == "placetype" then
ins(get_placetype_description(segment))
elseif segment_type == "qualifier" then
ins(get_qualifier_description(segment))
elseif segment_type == "holonym" then
ins(format_holonym(place_desc, segment, false))
if segment > max_holonym then
max_holonym = segment
end
else
internal_error("Unrecognized segment type %s", segment_type)
end
end
if place_desc.holonyms and max_holonym < #place_desc.holonyms then
local holonym_no_prefix = true
for holonym_index = max_holonym + 1, #place_desc.holonyms do
-- Append remaining holonyms with a space prefix (no "in"/"of" for new-style).
ins(" " .. format_holonym(place_desc, holonym_index, false))
holonym_no_prefix = false
end
end
return concat(parts)
end
-- Return a string with the gloss (the description of the place itself, as opposed to translations).
-- `sentence_style` controls whether extra-info uses "。" (sentence) or ";" (semicolon) separation.
local function get_display_form(data)
local overall_place_spec, ucfirst, sentence_style, drop_extra_info, extra_info_overridden_set, from_tcl =
data.overall_place_spec, data.ucfirst, data.sentence_style, data.drop_extra_info,
data.extra_info_overridden_set, data.from_tcl
local args = overall_place_spec.args
local parts = {}
local function ins(txt)
table.insert(parts, txt)
end
if overall_place_spec.directives and overall_place_spec.directives[1] then
for i, directive_terms in ipairs(overall_place_spec.directives) do
ins(directive_terms.pretext)
if directive_terms.pretext ~= "" then
ucfirst = false
end
if not args.def or args.def == "-" then
ins(format_form_of_directive(overall_place_spec, directive_terms, ucfirst, from_tcl))
ucfirst = false
if i == #overall_place_spec.directives and directive_terms.posttext then
ins(directive_terms.posttext)
end
end
end
end
if args.def == "-" then
return concat(parts)
end
if args.def then
if args.def:find("<<") then
local def_desc = export.parse_new_style_place_desc(args.def, args[1])
ins(export.format_new_style_place_desc_for_display({}, def_desc, false))
else
ins(args.def)
end
else
local include_article = true
for n, desc in ipairs(overall_place_spec.descs) do
if desc.order then
ins(export.format_new_style_place_desc_for_display(args, desc, n == 1))
else
ins(format_old_style_place_desc_for_display(args, desc, n, include_article, ucfirst))
end
if desc.joiner then
ins(desc.joiner)
end
include_article = desc.include_following_article
ucfirst = false
end
end
local addl = args.addl
if addl then
if addl:find("^[;:]") then
ins(addl)
elseif addl:find("^_") then
ins(" " .. addl:sub(2))
else
ins("," .. addl)
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
if not drop_extra_info or extra_info_terms.spec.display_even_when_dropped or
extra_info_overridden_set and extra_info_overridden_set[extra_info_terms.spec.arg] then
ins(format_extra_info(overall_place_spec, extra_info_terms, sentence_style))
end
end
return concat(parts)
end
-- Return the definition line.
-- ZH: sentence_style is always true; ucfirst is always false (no case in Chinese);
-- parentheses around glosses are full-width ().
local function get_def(data)
local overall_place_spec, from_tcl, drop_extra_info, extra_info_overridden_set, translation_follows =
data.overall_place_spec, data.from_tcl, data.drop_extra_info, data.extra_info_overridden_set,
data.translation_follows
local args = overall_place_spec.args
local sentence_style = true -- always sentence style in Chinese
local ucfirst = false -- Chinese has no case
if #args.t > 0 then
local gloss = get_display_form {
overall_place_spec = overall_place_spec,
ucfirst = false,
sentence_style = false,
drop_extra_info = drop_extra_info,
extra_info_overridden_set = extra_info_overridden_set,
from_tcl = from_tcl,
}
if from_tcl and not args.tcl_nolc then
gloss = m_strutils.lcfirst(gloss)
end
if translation_follows then
return (gloss == "" and "" or gloss .. ":") .. get_translations(args.t, args.tid)
else
return get_translations(args.t, args.tid) ..
(gloss == "" and "" or zh_strings.paren_open .. gloss .. zh_strings.paren_close)
end
else
return get_display_form {
overall_place_spec = overall_place_spec,
ucfirst = ucfirst,
sentence_style = sentence_style,
drop_extra_info = drop_extra_info,
extra_info_overridden_set = extra_info_overridden_set,
from_tcl = from_tcl,
}
end
end
---------- Functions for the category wikicode
-- The code in this section finds the categories to which a given place belongs. See enwikt [[Module:place]]
-- for detailed documentation of the algorithm.
--[=[
Find the appropriate category specs for a given place description and placetype.
See enwikt [[Module:place]] for detailed documentation.
]=]
local function find_placetype_cat_specs(data)
local entry_placetype, place_desc, first_holonym_index, overriding_holonym, from_demonym =
data.entry_placetype, data.place_desc, data.first_holonym_index, data.overriding_holonym, data.from_demonym
local form_of_directive = data.form_of_directive
local function fetch_cat_specs(holonym_to_match, index, no_fallback)
local holonym_placetype = holonym_to_match.placetype
if not holonym_placetype then
return nil
end
local holonym_placename = holonym_to_match.unlinked_placename
if not holonym_placename then
internal_error("Missing unlinked_placename in holonym (index %s): %s", index, holonym_to_match)
end
local cat_specs, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
return m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt) return m_placetypes.political_division_cat_handler {
entry_placetype = equiv_entry_pt,
holonym_placetype = equiv_holonym_pt,
holonym_placename = holonym_placename,
holonym_index = index,
place_desc = place_desc,
from_demonym = from_demonym,
} end)
end,
{no_fallback = no_fallback, form_of_directive = form_of_directive}
)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
local cat_handler, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
local entry_placetype_data = m_placetypes.placetype_data[equiv_entry_pt]
if entry_placetype_data and entry_placetype_data.cat_handler then
return entry_placetype_data.cat_handler
end
end,
{no_fallback = no_fallback, form_of_directive = form_of_directive}
)
if cat_handler then
local cat_specs = m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt) return cat_handler {
entry_placetype = equiv_entry_placetype_and_qualifier.placetype,
holonym_placetype = equiv_holonym_pt,
holonym_placename = holonym_placename,
holonym_index = index,
place_desc = place_desc,
from_demonym = from_demonym,
} end)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
end
if not no_fallback then
local cat_specs, equiv_entry_placetype_and_qualifier = m_placetypes.get_equiv_placetype_prop(entry_placetype,
function(equiv_entry_pt)
local entry_placetype_data = m_placetypes.placetype_data[equiv_entry_pt]
if entry_placetype_data then
return m_placetypes.get_equiv_placetype_prop(holonym_placetype,
function(equiv_holonym_pt)
return entry_placetype_data[equiv_holonym_pt .. "/*"]
end)
end
end,
{form_of_directive = form_of_directive}
)
if cat_specs and cat_specs[1] then
return cat_specs, equiv_entry_placetype_and_qualifier.placetype
end
end
return nil
end
if overriding_holonym then
local cat_specs, fetched_entry_placetype = fetch_cat_specs(overriding_holonym, nil)
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = overriding_holonym,
}
end
else
-- First pass: no fallback (exact entry placetype match only).
for i, holonym in ipairs(place_desc.holonyms) do
if first_holonym_index and i < first_holonym_index then
-- continue
else
local cat_specs, fetched_entry_placetype = fetch_cat_specs(holonym, i, "no_fallback")
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = holonym,
triggering_holonym_index = i,
}
end
end
end
-- Second pass: with fallback.
for i, holonym in ipairs(place_desc.holonyms) do
if first_holonym_index and i < first_holonym_index then
-- continue
else
local cat_specs, fetched_entry_placetype = fetch_cat_specs(holonym, i)
if cat_specs and cat_specs[1] then
return {
entry_placetype = fetched_entry_placetype,
cat_specs = cat_specs,
triggering_holonym = holonym,
triggering_holonym_index = i,
}
end
end
end
end
return nil
end
-- Turn a list of category specs (see comment at section top) into the corresponding categories
-- (minus the language code prefix).
local function cat_specs_to_categories(place_desc, cat_data)
local all_cats = {}
local cat_specs, entry_placetype, triggering_holonym, triggering_holonym_index =
cat_data.cat_specs, cat_data.entry_placetype, cat_data.triggering_holonym, cat_data.triggering_holonym_index
if triggering_holonym then
for _, cat_spec in ipairs(cat_specs) do
local cat
if cat_spec == true then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name); +++ replaced below
cat = "+++" .. zh_strings.de_particle .. get_zh_placetype_name(entry_placetype)
else
cat = cat_spec
end
if cat:find("%+%+%+") then
local group, key, spec, container_trail = m_placetypes.find_matching_holonym_location {
holonym_placetype = triggering_holonym.placetype,
holonym_placename = triggering_holonym.unlinked_placename,
holonym_index = triggering_holonym_index,
place_desc = place_desc,
}
if group then
cat = cat:gsub("%+%+%+", m_strutils.replacement_escape(m_placetypes.get_prefixed_key(key, spec)))
insert(all_cats, cat)
else
mw.log(("Unable to insert category for cat spec '%s' because holonym '%s/%s' did not match a " ..
"known location"):format(cat, triggering_holonym.placetype, triggering_holonym.unlinked_placename))
track("cant-match-holonym-for-category-spec")
end
else
insert(all_cats, cat)
end
end
else
for _, cat_spec in ipairs(cat_specs) do
local cat
if cat_spec == true then
-- ZH: bare placetype category (e.g. "城市")
cat = get_zh_placetype_name(entry_placetype)
else
cat = cat_spec
if cat:find("%+%+%+") then
internal_error("Category %s contains +++ but there is no holonym to substitute", cat)
end
end
insert(all_cats, cat)
end
end
return all_cats
end
-- Return the categories (without initial lang code) that should be added to the entry, given the place description
-- and a particular entry placetype.
local function get_placetype_cats(place_desc, entry_placetype, from_demonym, form_of_directive)
local cats = {}
local first_holonym_index = 1
while first_holonym_index <= #place_desc.holonyms do
local cat_data = find_placetype_cat_specs {
entry_placetype = entry_placetype,
place_desc = place_desc,
first_holonym_index = first_holonym_index,
from_demonym = from_demonym,
form_of_directive = form_of_directive,
}
if not cat_data then
break
end
local triggering_holonym = cat_data.triggering_holonym
if not triggering_holonym then
internal_error("find_placetype_cat_specs should have returned a triggering holonym: %s", cat_data)
end
extend(cats, cat_specs_to_categories(place_desc, cat_data))
first_holonym_index = cat_data.triggering_holonym_index
local equiv_triggering_placetypes = m_placetypes.get_placetype_equivs(triggering_holonym.placetype,
{no_fallback = true})
for _, equiv in ipairs(equiv_triggering_placetypes) do
local other_holonyms_of_same_type = place_desc.holonyms_by_placetype[equiv.placetype]
if other_holonyms_of_same_type then
for _, other_placename_of_same_type in ipairs(other_holonyms_of_same_type) do
if other_placename_of_same_type ~= triggering_holonym.unlinked_placename then
local overriding_holonym = {
placetype = triggering_holonym.placetype,
unlinked_placename = other_placename_of_same_type,
}
local other_cat_data = find_placetype_cat_specs {
entry_placetype = entry_placetype,
place_desc = place_desc,
overriding_holonym = overriding_holonym,
from_demonym = from_demonym,
form_of_directive = form_of_directive,
}
if other_cat_data then
extend(cats, cat_specs_to_categories(place_desc, other_cat_data))
end
end
end
end
end
first_holonym_index = first_holonym_index + 1
while first_holonym_index <= #place_desc.holonyms do
if place_desc.holonyms[first_holonym_index].continue_cat_loop then
break
end
first_holonym_index = first_holonym_index + 1
end
end
if cats[1] then
return cats
end
local entry_pt_default, equiv_entry_placetype_and_qualifier =
m_placetypes.get_equiv_placetype_prop(entry_placetype, function(pt)
return m_placetypes.placetype_data[pt] and m_placetypes.placetype_data[pt].default
end,
{form_of_directive = form_of_directive})
if entry_pt_default then
return cat_specs_to_categories(place_desc, {
cat_specs = entry_pt_default,
entry_placetype = equiv_entry_placetype_and_qualifier.placetype,
})
end
return {}
end
--[==[
Iterate through each type of place and return a list of the categories that need to be added to the entry.
See enwikt [[Module:place]] for detailed documentation.
]==]
function export.get_cats(args, overall_place_spec, from_demonym)
local cats = {}
local place_descriptions = overall_place_spec.descs
handle_category_implications(place_descriptions, m_placetypes.cat_implications)
m_placetypes.augment_holonyms_with_container(place_descriptions)
if overall_place_spec.directives then
for _, directive_terms in ipairs(overall_place_spec.directives) do
local spec_cats = directive_terms.spec.cat
if spec_cats then
if type(spec_cats) == "string" then
spec_cats = {spec_cats}
end
for _, spec_cat in ipairs(spec_cats) do
insert(cats, spec_cat)
end
end
if directive_terms.spec.type_prefix then
for _, place_desc in ipairs(place_descriptions) do
for _, placetype in ipairs(place_desc.placetypes) do
if not m_placetypes.placetype_is_ignorable(placetype) then
extend(cats, get_placetype_cats(place_desc, placetype, from_demonym,
directive_terms.spec.type_prefix))
end
end
end
end
end
end
if not from_demonym then
local bare_categories = m_placetypes.get_bare_categories(args, overall_place_spec)
extend(cats, bare_categories)
end
for _, place_desc in ipairs(place_descriptions) do
if not from_demonym then
for _, placetype in ipairs(place_desc.placetypes) do
if not m_placetypes.placetype_is_ignorable(placetype) then
extend(cats, get_placetype_cats(place_desc, placetype))
end
end
end
extend(cats, get_placetype_cats(place_desc, "*", from_demonym))
end
if args.cat then
for _, cat in ipairs(args.cat) do
local split_cats = split_on_comma(cat)
extend(cats, split_cats)
end
end
return cats
end
-- Return the category wikicode for a list of categories.
-- ZH: uses `lang:getFullName() .. " " .. cat` format for regular categories (same as cln: format in enwikt),
-- matching zhwikt's convention of "漢語 XX" category names instead of "zh:XX".
local function format_cats(lang, cats, sort_key)
local full_cats = {}
local langname = lang:getFullName()
for _, cat in ipairs(cats) do
local cln_cat = cat:match("^cln:(.*)$")
if cln_cat then
insert(full_cats, langname .. " " .. cln_cat)
else
-- ZH: use langname prefix instead of langcode:cat
insert(full_cats, langname .. " " .. cat)
end
end
return require(utilities_module).format_categories(full_cats, lang, sort_key, nil,
force_cat or m_placetypes.get_force_cat())
end
----------- Main entry point
--[==[
Implementation of {{tl|place}}. Meant to be callable from another module.
See enwikt [[Module:place]] for full documentation of the `data` argument fields.
]==]
function export.format(data)
local template_args = data.template_args
local list_param = {list = true}
local boolean_param = {type = "boolean"}
local params = {
[1] = {required = true, type = "language", default = "und"},
[2] = {required = true, list = true},
["t"] = list_param,
["tid"] = {list = true, allow_holes = true},
["cat"] = list_param,
["nocat"] = boolean_param,
["nocap"] = boolean_param,
["sort"] = true,
["pagename"] = true, -- for testing or documentation purposes
["a"] = true,
["addl"] = true,
["def"] = true,
-- params that are only used when transcluding using {{tcl}}/{{transclude}}, to transmit information to {{tcl}}.
["tcl"] = true,
["tcl_t"] = list_param,
["tcl_tid"] = list_param,
["tcl_nolb"] = true,
["tcl_nolc"] = boolean_param,
["tcl_noextratext"] = boolean_param,
}
-- add "extra info" parameters
for _, extra_arg_spec in ipairs(export.extra_info_args) do
params[extra_arg_spec.arg] = list_param
end
if template_args.def == "" then
error("Cannot currently pass def= as an empty parameter; use def=- if you want to suppress the definition display")
end
local args = require("Module:parameters").process(template_args, params)
if args.a then
track("a")
end
data.args = args
local overall_place_spec = parse_overall_place_spec(data)
data.overall_place_spec = overall_place_spec
return get_def(data) .. (
args.nocat and "" or format_cats(args[1], export.get_cats(args, overall_place_spec), args.sort))
end
--[==[
Actual entry point of {{tl|place}}.
]==]
function export.show(frame)
return export.format {
template_args = frame:getParent().args,
}
end
return export
67gb2kfxsd9zvqtgindvp0s2oyfkffx
Module:Place/data
828
1629828
9759443
9758832
2026-05-14T16:50:00Z
TongcyDai
53191
9759443
Scribunto
text/plain
local export = {}
--[==[
Chinese localization data for [[Module:place]].
Fields per placetype entry:
zh_name -- Chinese display name in definition sentences (string or {string,...})
zh_suffix -- Chinese suffix for :pref/:suf holonym modifiers; if nil, falls back to zh_name
zh_name_by_holonym_type
-- context-sensitive Chinese name keyed by the first holonym's placetype;
-- used when the correct term depends on what the place is capital/seat of
zh_preposition -- "in" (→ 位於…的) or "of" (→ …的); nil means inherit from enwikt `preposition` field
-- Only needed when the Chinese preposition differs from the English one.
Multiple-regional-variant names are stored as arrays {"primary", "alt1", "alt2",...}.
- The first element is the canonical/primary form used in categories.
- All elements are displayed, joined with "/" in holonym context.
For zh_suffix with regional variants, use the same array convention.
]==]
-- ---------------------------------------------------------------------------
-- Placetype qualifier translations
-- ---------------------------------------------------------------------------
-- Maps English qualifier words (as canonicalized in placetype_qualifiers) to
-- their Chinese equivalents. Used when displaying qualified placetypes such as
-- "前城市"、"古代王國" etc.
export.zh_qualifiers = {
-- Historicity
["former"] = "前",
["ancient"] = "古代",
["medieval"] = "中世紀",
["historical"] = "歷史上的",
["extinct"] = "已消亡的",
["abandoned"] = "廢棄的",
["deserted"] = "廢棄的",
["ruined"] = "廢墟",
-- Hypothetical
["fictional"] = "虛構的",
["mythological"]= "神話中的",
-- Size
["small"] = "小",
["large"] = "大",
["major"] = "主要的",
["minor"] = "次要的",
["tiny"] = "微小的",
["huge"] = "龐大的",
-- Coastal/water
["coastal"] = "沿海",
["inland"] = "內陸",
["maritime"] = "濱海",
["riverine"] = "沿河",
-- Direction (adjectival use before holonym)
["northern"] = "北部",
["southern"] = "南部",
["eastern"] = "東部",
["western"] = "西部",
["central"] = "中部",
["northeastern"]= "東北部",
["northwestern"]= "西北部",
["southeastern"]= "東南部",
["southwestern"]= "西南部",
-- Status
["autonomous"] = "自治",
["independent"] = "獨立的",
["unincorporated"] = "非建制",
["incorporated"] = "建制",
["rural"] = "農村",
["urban"] = "城市",
["suburban"] = "郊區",
["industrial"] = "工業",
-- Terrain
["mountainous"] = "山地",
["volcanic"] = "火山",
}
-- ---------------------------------------------------------------------------
-- Extra-info label translations
-- ---------------------------------------------------------------------------
-- Maps the enwikt extra-info parameter names to Chinese display labels.
-- Used when appending "首都:X"、"最大城市:X" etc. to definitions.
export.zh_extra_info_labels = {
["capital"] = "首都", -- overridden for non-country holonyms; see zh_capital_label_by_holonym
["largest city"] = "最大城市",
["capital and largest city"] = "首都和最大城市",
["official"] = "官方名稱",
["modern"] = "現代名稱",
["full"] = "全稱",
["seat"] = "治所",
["county seat"] = "縣治",
["borough seat"] = "區治",
["parish seat"] = "教區治所",
["shire town"] = "郡鎮",
}
-- Context-sensitive label for `capital=` parameter, keyed by entry placetype.
-- When a capital-bearing placetype is identified, we look up the holonym type
-- to determine the correct Chinese term for the capital. Falls back to "首都".
export.zh_capital_label_by_holonym_type = {
["country"] = "首都",
["constituent country"]= "首都",
["state"] = "首府",
["province"] = "省會",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
}
-- ---------------------------------------------------------------------------
-- Special-syntax string translations
-- ---------------------------------------------------------------------------
-- Miscellaneous fixed strings used in building definition sentences.
export.zh_strings = {
in_preposition = "位於", -- prepended for "in" placetypes
-- "of" placetypes use no prepositional prefix; holonym directly precedes 的
de_particle = "的", -- possessive/locative particle
and_conj = "和", -- final conjunction in enumerations
enum_sep = "、", -- enumeration separator (replaces serial comma)
multi_name_sep = "/", -- separator for regional name variants (e.g. 格魯吉亞/喬治亞)
trans_sep = ",", -- separator for multiple t1/t2 translations
paren_open = "(",
paren_close = ")",
semicolon = ";", -- multiple-description join (replaces "; ")
former_name_of = "的舊稱", -- @former name of:X → "X的舊稱"
}
-- ---------------------------------------------------------------------------
-- Placetype data (zh_ fields)
-- ---------------------------------------------------------------------------
-- Keys match the canonical English placetype keys in enwikt's placetype_data.
-- Entries without zh_name will be looked up recursively through enwikt's
-- `fallback` chain until a zh_name is found; if none found, the English name
-- is displayed and a tracking category is added.
export.zh_placetype_data = {
-- -----------------------------------------------------------------------
-- Top-level polities
-- -----------------------------------------------------------------------
["country"] = {
zh_name = "國家",
zh_suffix = "國",
},
["city-state"] = {
zh_name = "城邦",
},
["polity"] = {
zh_name = "政體",
},
["empire"] = {
zh_name = "帝國",
zh_suffix = "帝國",
},
["kingdom"] = {
zh_name = "王國",
zh_suffix = "王國",
},
["republic"] = {
zh_name = "共和國",
zh_suffix = "共和國",
},
["federation"] = {
zh_name = "聯邦",
zh_suffix = "聯邦",
},
["confederation"] = {
zh_name = "邦聯",
zh_suffix = "邦聯",
},
["monarchy"] = {
zh_name = "君主國",
},
["principality"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["duchy"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["caliphate"] = {
zh_name = "哈里發國",
},
["khanate"] = {
zh_name = "汗國",
zh_suffix = "汗國",
},
["emirate"] = {
zh_name = "酋長國",
zh_suffix = "酋長國",
},
["bailiwick"] = {
zh_name = "行政管轄區",
},
["captaincy"] = {
zh_name = "都督區",
},
["microstate"] = {
zh_name = "微型國家",
},
["unrecognized country"] = {
zh_name = "未獲承認的國家",
},
-- -----------------------------------------------------------------------
-- Constituent / pseudo-countries
-- -----------------------------------------------------------------------
["constituent country"] = {
-- England, Scotland, Wales, Northern Ireland within the UK
zh_name = "構成國",
zh_suffix = "構成國",
},
["autonomous community"] = {
-- Spain
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous republic"] = {
zh_name = "自治共和國",
zh_suffix = "自治共和國",
},
["special administrative region"] = {
-- China: Hong Kong, Macau
zh_name = "特別行政區",
zh_suffix = "特別行政區",
},
["dependent territory"] = {
zh_name = "屬地",
},
["overseas territory"] = {
zh_name = "海外屬地",
},
["Crown dependency"] = {
zh_name = "王室屬地",
},
["crown dependency"] = {
zh_name = "王室屬地",
},
-- -----------------------------------------------------------------------
-- First-level administrative divisions
-- -----------------------------------------------------------------------
["state"] = {
zh_name = "州",
zh_suffix = "州",
},
["province"] = {
zh_name = "省",
zh_suffix = "省",
},
["territory"] = {
zh_name = "地區",
zh_suffix = "地區",
},
["region"] = {
zh_name = "地區", -- fallback; specific regions use location data (e.g. 法國大區)
zh_suffix = "地區",
},
["administrative region"] = {
zh_name = "行政區",
zh_suffix = "行政區",
},
["autonomous region"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous oblast"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous okrug"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous province"] = {
zh_name = "自治省",
zh_suffix = "自治省",
},
["autonomous prefecture"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous territory"] = {
zh_name = "自治領地",
},
["autonomous territorial unit"] = {
-- Moldova (Gagauzia, Transnistria)
zh_name = "自治地域單位",
},
["federal subject"] = {
-- Russia
zh_name = "聯邦主體",
},
["voivodeship"] = {
-- Poland
zh_name = "省",
zh_suffix = "省",
},
["oblast"] = {
-- Russia/Ukraine
zh_name = "州",
zh_suffix = "州",
},
["okrug"] = {
zh_name = "區",
zh_suffix = "區",
},
["krai"] = {
-- Russia
zh_name = "邊疆區",
zh_suffix = "邊疆區",
},
["raion"] = {
-- Ukraine/Russia
zh_name = "區",
zh_suffix = "區",
},
["department"] = {
-- France and other countries
zh_name = "省",
zh_suffix = "省",
},
["governorate"] = {
zh_name = "省",
zh_suffix = "省",
},
["canton"] = {
-- Switzerland, Luxembourg etc.
zh_name = "州",
zh_suffix = "州",
},
["division"] = {
zh_name = "省",
zh_suffix = "省",
},
["periphery"] = {
-- Greece
zh_name = "大區",
zh_suffix = "大區",
},
["collectivity"] = {
-- France overseas
zh_name = "集體",
},
["commonwealth"] = {
-- Puerto Rico
zh_name = "自由邦",
},
["constituent republic"] = {
-- Yugoslavia/Russia
zh_name = "加盟共和國",
zh_suffix = "共和國",
},
["colony"] = {
zh_name = "殖民地",
},
["viceroyalty"] = {
zh_name = "副王轄地",
},
["regency"] = {
zh_name = "縣",
zh_suffix = "縣",
},
-- -----------------------------------------------------------------------
-- Second-level and lower administrative divisions
-- -----------------------------------------------------------------------
["county"] = {
zh_name = "縣",
zh_suffix = "縣",
},
["district"] = {
zh_name = "區",
zh_suffix = "區",
},
["municipality"] = {
zh_name = "市鎮",
zh_suffix = "市鎮",
},
["commune"] = {
zh_name = "市鎮",
},
["comune"] = {
-- Italy/Switzerland
zh_name = "市鎮",
},
["borough"] = {
zh_name = "區",
zh_suffix = "區",
},
["metropolitan borough"] = {
zh_name = "都會區",
zh_suffix = "都會區",
},
["London borough"] = {
zh_name = "倫敦區",
zh_suffix = "區",
},
["royal borough"] = {
zh_name = "皇家自治市",
},
["county borough"] = {
zh_name = "郡市",
zh_suffix = "郡市",
},
["parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["civil parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["council area"] = {
-- Scotland
zh_name = "議會地區",
zh_suffix = "議會地區",
},
["prefecture"] = {
-- Japan: 縣(ken); France: 省治城市(handled by capital city logic)
zh_name = "都道府縣",
zh_suffix = "縣",
},
["prefecture-level city"] = {
-- China
zh_name = "地級市",
zh_suffix = "市",
},
["county-level city"] = {
-- China
zh_name = "縣級市",
zh_suffix = "市",
},
["subprovincial city"] = {
-- China
zh_name = "副省級市",
zh_suffix = "市",
},
["direct-administered municipality"] = {
-- China (Beijing, Shanghai, etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["special municipality"] = {
-- Taiwan (Taipei, New Taipei etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["county-administered city"] = {
-- Taiwan
zh_name = "縣轄市",
zh_suffix = "市",
},
["special ward"] = {
-- Tokyo
zh_name = "特別區",
zh_suffix = "區",
},
["municipal district"] = {
zh_name = "市轄區",
zh_suffix = "區",
},
["subdistrict"] = {
zh_name = "街道",
zh_suffix = "街道",
},
["township"] = {
zh_name = "鄉鎮",
zh_suffix = "鄉鎮",
},
["rural township"] = {
-- Taiwan
zh_name = "鄉",
zh_suffix = "鄉",
},
["urban township"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["mountain indigenous township"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["mountain indigenous district"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["community development block"] = {
-- India
zh_name = "社區發展區",
},
["union territory"] = {
-- India
zh_name = "聯合地區",
},
["hromada"] = {
-- Ukraine
zh_name = "社區",
zh_suffix = "社區",
},
["urban hromada"] = {
zh_name = "城市社區",
zh_suffix = "社區",
},
["rural hromada"] = {
zh_name = "農村社區",
zh_suffix = "社區",
},
["settlement hromada"] = {
zh_name = "聚落社區",
zh_suffix = "社區",
},
["regional unit"] = {
-- Greece
zh_name = "地區單位",
zh_suffix = "地區",
},
["regional county municipality"] = {
-- Quebec
zh_name = "地區縣市",
},
["regional district"] = {
-- Canada
zh_name = "地區區",
},
["regional municipality"] = {
zh_name = "地區市",
},
["local government area"] = {
-- Australia
zh_name = "地方政府區",
},
["local government district"] = {
zh_name = "地方政府區",
},
["arrondissement"] = {
zh_name = "區",
zh_suffix = "區",
},
["cercle"] = {
-- Mali
zh_name = "縣",
},
["geopolitical zone"] = {
-- Nigeria
zh_name = "地緣政治區",
},
["enclave"] = {
zh_name = "飛地",
},
["exclave"] = {
zh_name = "外飛地",
},
-- -----------------------------------------------------------------------
-- Capitals and seats
-- -----------------------------------------------------------------------
["capital city"] = {
-- Default for most contexts; see zh_name_by_holonym_type for overrides
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["microstate"] = "首都",
["city-state"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["province"] = "省會",
["autonomous province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
["municipality"] = "市治",
},
},
["capital"] = {
-- Alias for capital city; same logic
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
},
},
["state capital"] = {
zh_name = "首府",
},
["provincial capital"] = {
zh_name = "省會",
},
["regional capital"] = {
zh_name = "首府",
},
["district capital"] = {
zh_name = "區治",
},
["departmental capital"] = {
zh_name = "省治",
},
["national capital"] = {
zh_name = "首都",
},
["administrative capital"] = {
zh_name = "行政首都",
},
["legislative capital"] = {
zh_name = "立法首都",
},
["judicial capital"] = {
zh_name = "司法首都",
},
["royal capital"] = {
zh_name = "王都",
},
["co-capital"] = {
zh_name = "共同首都",
},
["largest city"] = {
zh_name = "最大城市",
},
["caplc"] = {
zh_name = "首都和最大城市",
},
["non-city capital"] = {
zh_name = "首府",
},
["county seat"] = {
zh_name = "縣治",
},
["county town"] = {
zh_name = "縣城",
},
["borough seat"] = {
zh_name = "區治",
},
["parish seat"] = {
zh_name = "教區治所",
},
["shire town"] = {
zh_name = "郡鎮",
},
["administrative center"] = {
zh_name = "行政中心",
},
["administrative centre"] = {
zh_name = "行政中心",
},
["administrative headquarters"] = {
zh_name = "行政總部",
},
["French prefecture"] = {
-- A city that is the administrative capital of a French department
zh_name = "省府",
zh_name_by_holonym_type = {
["department"] = "省府",
},
},
-- -----------------------------------------------------------------------
-- Cities and urban settlements
-- -----------------------------------------------------------------------
["city"] = {
zh_name = "市",
zh_suffix = "市",
},
["town"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["village"] = {
zh_name = "村",
zh_suffix = "村",
},
["hamlet"] = {
zh_name = "小村",
},
["locality"] = {
zh_name = "村落",
},
["settlement"] = {
zh_name = "聚落",
},
["populated place"] = {
zh_name = "居民點",
},
["neighborhood"] = {
zh_name = "街區",
},
["neighbourhood"] = {
zh_name = "街區",
},
["suburb"] = {
zh_name = "郊區",
},
["community"] = {
zh_name = "社區",
},
["urban area"] = {
zh_name = "城市地區",
},
["residential area"] = {
zh_name = "住宅區",
},
["housing estate"] = {
zh_name = "住宅區",
},
["planned community"] = {
zh_name = "計劃社區",
},
["administrative village"] = {
zh_name = "行政村",
zh_suffix = "村",
},
["barangay"] = {
-- Philippines
zh_name = "里",
},
["barrio"] = {
zh_name = "里",
},
["kibbutz"] = {
zh_name = "集體農場",
},
["ghost town"] = {
zh_name = "鬼城",
},
["unincorporated community"] = {
zh_name = "非建制社區",
},
["census-designated place"] = {
zh_name = "人口普查指定地區",
},
["military base"] = {
zh_name = "軍事基地",
},
["research station"] = {
zh_name = "研究站",
},
["home rule city"] = {
zh_name = "自治市",
},
["federal district"] = {
zh_name = "聯邦特區",
zh_suffix = "特區",
},
["independent city"] = {
zh_name = "獨立市",
},
["autonomous city"] = {
zh_name = "自治市",
},
["port city"] = {
zh_name = "港市",
},
["port town"] = {
zh_name = "港鎮",
},
["market town"] = {
zh_name = "市集鎮",
},
["resort town"] = {
zh_name = "度假鎮",
},
["new town"] = {
zh_name = "新市鎮",
},
-- -----------------------------------------------------------------------
-- Geographic / natural features
-- -----------------------------------------------------------------------
["continent"] = {
zh_name = "洲",
zh_suffix = "洲",
},
["continental region"] = {
zh_name = "大陸地區",
},
["ocean"] = {
zh_name = "洋",
zh_suffix = "洋",
},
["sea"] = {
zh_name = "海",
zh_suffix = "海",
},
["inland sea"] = {
zh_name = "內陸海",
},
["marginal sea"] = {
zh_name = "邊緣海",
},
["river"] = {
zh_name = "河",
zh_suffix = "河",
},
["lake"] = {
zh_name = "湖",
zh_suffix = "湖",
},
["reservoir"] = {
zh_name = "水庫",
zh_suffix = "水庫",
},
["stream"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["creek"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["bay"] = {
zh_name = "灣",
zh_suffix = "灣",
},
["gulf"] = {
zh_name = "海灣",
zh_suffix = "海灣",
},
["fjord"] = {
zh_name = "峽灣",
},
["strait"] = {
zh_name = "海峽",
zh_suffix = "海峽",
},
["channel"] = {
zh_name = "水道",
zh_suffix = "水道",
},
["inlet"] = {
zh_name = "海灣",
zh_suffix = "灣",
},
["arm"] = {
zh_name = "海灣",
},
["island"] = {
zh_name = "島",
zh_suffix = "島",
},
["islet"] = {
zh_name = "小島",
zh_suffix = "島",
},
["island group"] = {
zh_name = "群島",
},
["archipelago"] = {
zh_name = "群島",
zh_suffix = "群島",
},
["atoll"] = {
zh_name = "環礁",
zh_suffix = "環礁",
},
["peninsula"] = {
zh_name = "半島",
zh_suffix = "半島",
},
["spit"] = {
zh_name = "沙嘴",
},
["cape"] = {
zh_name = "角",
zh_suffix = "角",
},
["headland"] = {
zh_name = "岬角",
},
["mountain"] = {
zh_name = "山",
zh_suffix = "山",
},
["hill"] = {
zh_name = "丘",
zh_suffix = "丘",
},
["mountain range"] = {
zh_name = "山脈",
zh_suffix = "山脈",
},
["mountain pass"] = {
zh_name = "山口",
},
["plateau"] = {
zh_name = "高原",
zh_suffix = "高原",
},
["valley"] = {
zh_name = "谷",
zh_suffix = "谷",
},
["glen"] = {
zh_name = "峽谷",
},
["volcano"] = {
zh_name = "火山",
zh_suffix = "火山",
},
["forest"] = {
zh_name = "林地",
zh_suffix = "林",
},
["moor"] = {
zh_name = "荒原",
},
["desert"] = {
zh_name = "沙漠",
zh_suffix = "沙漠",
},
["beach"] = {
zh_name = "海灘",
zh_suffix = "海灘",
},
["spring"] = {
zh_name = "泉",
zh_suffix = "泉",
},
["hot spring"] = {
zh_name = "溫泉",
zh_suffix = "溫泉",
},
["tributary"] = {
zh_name = "支流",
},
["distributary"] = {
zh_name = "分流",
},
-- -----------------------------------------------------------------------
-- Geographic / cultural regions (non-admin)
-- -----------------------------------------------------------------------
["geographic and cultural area"] = {
zh_name = "地區",
},
["geographic region"] = {
zh_name = "地理區域",
},
["historical region"] = {
zh_name = "歷史地區",
},
["historic region"] = {
zh_name = "歷史地區",
},
["cultural region"] = {
zh_name = "文化地區",
},
["subregion"] = {
zh_name = "次地區",
},
["macroregion"] = {
zh_name = "大區域",
},
-- -----------------------------------------------------------------------
-- Man-made structures
-- -----------------------------------------------------------------------
["airport"] = {
zh_name = "機場",
},
["port"] = {
zh_name = "港口",
},
["bridge"] = {
zh_name = "橋",
},
["road"] = {
zh_name = "道路",
},
["highway"] = {
zh_name = "公路",
},
["motorway"] = {
zh_name = "高速公路",
},
["street"] = {
zh_name = "街道",
},
["building"] = {
zh_name = "建築物",
},
["university"] = {
zh_name = "大學",
},
["park"] = {
zh_name = "公園",
},
["national park"] = {
zh_name = "國家公園",
},
["metro station"] = {
zh_name = "地鐵站",
},
["temple"] = {
zh_name = "廟宇",
},
["castle"] = {
zh_name = "城堡",
},
-- -----------------------------------------------------------------------
-- Misc / hypothetical
-- -----------------------------------------------------------------------
["fictional location"] = {
zh_name = "虛構地點",
},
["mythological location"] = {
zh_name = "神話地點",
},
["star"] = {
zh_name = "恆星",
},
["space station"] = {
zh_name = "太空站",
},
}
-- ---------------------------------------------------------------------------
-- Helper: look up zh_name for a placetype via fallback chain
-- ---------------------------------------------------------------------------
-- Looks up zh_name (and optionally zh_name_by_holonym_type) for a given
-- placetype, recursively following the enwikt fallback chain if needed.
-- Returns zh_name (string or table), zh_suffix (string or table or nil),
-- zh_name_by_holonym_type (table or nil).
-- `m_pt` should be the enwikt place-placetypes module (for fallback data).
function export.get_zh_placetype_props(placetype, m_pt)
local visited = {}
local current = placetype
while current and not visited[current] do
visited[current] = true
local zh = export.zh_placetype_data[current]
if zh and zh.zh_name then
return zh.zh_name, zh.zh_suffix, zh.zh_name_by_holonym_type
end
-- Follow enwikt fallback
if m_pt then
local ptdata = m_pt.placetype_data[current]
if ptdata and ptdata.fallback then
current = ptdata.fallback
-- Strip FORMER/ANCIENT prefixes from synthetic fallbacks like "FORMER settlement"
current = current:match("^FORMER (.+)$") or current:match("^ANCIENT (.+)$") or current
else
break
end
else
break
end
end
return nil, nil, nil
end
-- ---------------------------------------------------------------------------
-- Helper: resolve zh_name given holonym context
-- ---------------------------------------------------------------------------
-- Given the zh_name (possibly a table of variants) and zh_name_by_holonym_type,
-- and the holonym's placetype, return the appropriate Chinese name string.
-- If multiple variants, returns the array (caller joins with zh_strings.multi_name_sep).
function export.resolve_zh_name(zh_name, zh_name_by_holonym_type, holonym_placetype)
if zh_name_by_holonym_type and holonym_placetype then
local override = zh_name_by_holonym_type[holonym_placetype]
if override then
return override
end
end
return zh_name
end
-- ---------------------------------------------------------------------------
-- Helper: format zh_name for display (join variants with "/")
-- ---------------------------------------------------------------------------
function export.format_zh_name(zh_name_or_array)
if type(zh_name_or_array) == "table" then
return table.concat(zh_name_or_array, export.zh_strings.multi_name_sep)
end
return zh_name_or_array or ""
end
return export
e4arwgp61uezwzrjdbcqd58wmcknt2b
9759562
9759443
2026-05-14T22:26:33Z
TongcyDai
53191
9759562
Scribunto
text/plain
local export = {}
--[==[
Chinese localization data for [[Module:place]].
Fields per placetype entry:
zh_name -- Chinese display name in definition sentences (string or {string,...})
zh_suffix -- Chinese suffix for :pref/:suf holonym modifiers; if nil, falls back to zh_name
zh_name_by_holonym_type
-- context-sensitive Chinese name keyed by the first holonym's placetype;
-- used when the correct term depends on what the place is capital/seat of
zh_preposition -- "in" (→ 位於…的) or "of" (→ …的); nil means inherit from enwikt `preposition` field
-- Only needed when the Chinese preposition differs from the English one.
Multiple-regional-variant names are stored as arrays {"primary", "alt1", "alt2",...}.
- The first element is the canonical/primary form used in categories.
- All elements are displayed, joined with "/" in holonym context.
For zh_suffix with regional variants, use the same array convention.
]==]
-- ---------------------------------------------------------------------------
-- Placetype qualifier translations
-- ---------------------------------------------------------------------------
-- Maps English qualifier words (as canonicalized in placetype_qualifiers) to
-- their Chinese equivalents. Used when displaying qualified placetypes such as
-- "前城市"、"古代王國" etc.
export.zh_qualifiers = {
-- Historicity
["former"] = "前",
["ancient"] = "古代",
["medieval"] = "中世紀",
["historical"] = "歷史上的",
["extinct"] = "已消亡的",
["abandoned"] = "廢棄的",
["deserted"] = "廢棄的",
["ruined"] = "廢墟",
-- Hypothetical
["fictional"] = "虛構的",
["mythological"]= "神話中的",
-- Size
["small"] = "小",
["large"] = "大",
["major"] = "主要的",
["minor"] = "次要的",
["tiny"] = "微小的",
["huge"] = "龐大的",
-- Coastal/water
["coastal"] = "沿海",
["inland"] = "內陸",
["maritime"] = "濱海",
["riverine"] = "沿河",
-- Direction (adjectival use before holonym)
["northern"] = "北部",
["southern"] = "南部",
["eastern"] = "東部",
["western"] = "西部",
["central"] = "中部",
["northeastern"]= "東北部",
["northwestern"]= "西北部",
["southeastern"]= "東南部",
["southwestern"]= "西南部",
-- Status
["autonomous"] = "自治",
["independent"] = "獨立的",
["unincorporated"] = "非建制",
["incorporated"] = "建制",
["rural"] = "農村",
["urban"] = "城市",
["suburban"] = "郊區",
["industrial"] = "工業",
-- Terrain
["mountainous"] = "山地",
["volcanic"] = "火山",
}
-- ---------------------------------------------------------------------------
-- Extra-info label translations
-- ---------------------------------------------------------------------------
-- Maps the enwikt extra-info parameter names to Chinese display labels.
-- Used when appending "首都:X"、"最大城市:X" etc. to definitions.
export.zh_extra_info_labels = {
["capital"] = "首都", -- overridden for non-country holonyms; see zh_capital_label_by_holonym
["largest city"] = "最大城市",
["capital and largest city"] = "首都和最大城市",
["official"] = "官方名稱",
["modern"] = "現代名稱",
["full"] = "全稱",
["seat"] = "治所",
["county seat"] = "縣治",
["borough seat"] = "區治",
["parish seat"] = "教區治所",
["shire town"] = "郡鎮",
}
-- Context-sensitive label for `capital=` parameter, keyed by entry placetype.
-- When a capital-bearing placetype is identified, we look up the holonym type
-- to determine the correct Chinese term for the capital. Falls back to "首都".
export.zh_capital_label_by_holonym_type = {
["country"] = "首都",
["constituent country"]= "首都",
["state"] = "首府",
["province"] = "省會",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
}
-- ---------------------------------------------------------------------------
-- Special-syntax string translations
-- ---------------------------------------------------------------------------
-- Miscellaneous fixed strings used in building definition sentences.
export.zh_strings = {
in_preposition = "位於", -- prepended for "in" placetypes
-- "of" placetypes use no prepositional prefix; holonym directly precedes 的
de_particle = "的", -- possessive/locative particle
and_conj = "和", -- final conjunction in enumerations
enum_sep = "、", -- enumeration separator (replaces serial comma)
multi_name_sep = "/", -- separator for regional name variants (e.g. 格魯吉亞/喬治亞)
trans_sep = ",", -- separator for multiple t1/t2 translations
paren_open = "(",
paren_close = ")",
semicolon = ";", -- multiple-description join (replaces "; ")
former_name_of = "的舊稱", -- @former name of:X → "X的舊稱"
}
-- ---------------------------------------------------------------------------
-- Placetype data (zh_ fields)
-- ---------------------------------------------------------------------------
-- Keys match the canonical English placetype keys in enwikt's placetype_data.
-- Entries without zh_name will be looked up recursively through enwikt's
-- `fallback` chain until a zh_name is found; if none found, the English name
-- is displayed and a tracking category is added.
export.zh_placetype_data = {
-- -----------------------------------------------------------------------
-- Top-level polities
-- -----------------------------------------------------------------------
["country"] = {
zh_name = "國家",
zh_suffix = "國",
},
["city-state"] = {
zh_name = "城邦",
},
["polity"] = {
zh_name = "政體",
},
["empire"] = {
zh_name = "帝國",
zh_suffix = "帝國",
},
["kingdom"] = {
zh_name = "王國",
zh_suffix = "王國",
},
["republic"] = {
zh_name = "共和國",
zh_suffix = "共和國",
},
["federation"] = {
zh_name = "聯邦",
zh_suffix = "聯邦",
},
["confederation"] = {
zh_name = "邦聯",
zh_suffix = "邦聯",
},
["monarchy"] = {
zh_name = "君主國",
},
["principality"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["duchy"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["caliphate"] = {
zh_name = "哈里發國",
},
["khanate"] = {
zh_name = "汗國",
zh_suffix = "汗國",
},
["emirate"] = {
zh_name = "酋長國",
zh_suffix = "酋長國",
},
["bailiwick"] = {
zh_name = "行政管轄區",
},
["captaincy"] = {
zh_name = "都督區",
},
["microstate"] = {
zh_name = "微型國家",
},
["unrecognized country"] = {
zh_name = "未獲承認的國家",
},
-- -----------------------------------------------------------------------
-- Constituent / pseudo-countries
-- -----------------------------------------------------------------------
["constituent country"] = {
-- England, Scotland, Wales, Northern Ireland within the UK
zh_name = "構成國",
zh_suffix = "構成國",
},
["autonomous community"] = {
-- Spain
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous republic"] = {
zh_name = "自治共和國",
zh_suffix = "自治共和國",
},
["special administrative region"] = {
-- China: Hong Kong, Macau
zh_name = "特別行政區",
zh_suffix = "特別行政區",
},
["dependent territory"] = {
zh_name = "屬地",
},
["overseas territory"] = {
zh_name = "海外屬地",
},
["Crown dependency"] = {
zh_name = "王室屬地",
},
["crown dependency"] = {
zh_name = "王室屬地",
},
-- -----------------------------------------------------------------------
-- First-level administrative divisions
-- -----------------------------------------------------------------------
["state"] = {
zh_name = "州",
zh_suffix = "州",
},
["province"] = {
zh_name = "省",
zh_suffix = "省",
},
["territory"] = {
zh_name = "地區",
zh_suffix = "地區",
},
["region"] = {
zh_name = "地區", -- fallback; specific regions use location data (e.g. 法國大區)
zh_suffix = "地區",
},
["administrative region"] = {
zh_name = "行政區",
zh_suffix = "行政區",
},
["autonomous region"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous oblast"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous okrug"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous province"] = {
zh_name = "自治省",
zh_suffix = "自治省",
},
["autonomous prefecture"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous territory"] = {
zh_name = "自治領地",
},
["autonomous territorial unit"] = {
-- Moldova (Gagauzia, Transnistria)
zh_name = "自治地域單位",
},
["federal subject"] = {
-- Russia
zh_name = "聯邦主體",
},
["voivodeship"] = {
-- Poland
zh_name = "省",
zh_suffix = "省",
},
["oblast"] = {
-- Russia/Ukraine
zh_name = "州",
zh_suffix = "州",
},
["okrug"] = {
zh_name = "區",
zh_suffix = "區",
},
["krai"] = {
-- Russia
zh_name = "邊疆區",
zh_suffix = "邊疆區",
},
["raion"] = {
-- Ukraine/Russia
zh_name = "區",
zh_suffix = "區",
},
["department"] = {
-- France and other countries
zh_name = "省",
zh_suffix = "省",
},
["governorate"] = {
zh_name = "省",
zh_suffix = "省",
},
["canton"] = {
-- Switzerland, Luxembourg etc.
zh_name = "州",
zh_suffix = "州",
},
["division"] = {
zh_name = "省",
zh_suffix = "省",
},
["periphery"] = {
-- Greece
zh_name = "大區",
zh_suffix = "大區",
},
["collectivity"] = {
-- France overseas
zh_name = "集體",
},
["commonwealth"] = {
-- Puerto Rico
zh_name = "自由邦",
},
["constituent republic"] = {
-- Yugoslavia/Russia
zh_name = "加盟共和國",
zh_suffix = "共和國",
},
["colony"] = {
zh_name = "殖民地",
},
["viceroyalty"] = {
zh_name = "副王轄地",
},
["regency"] = {
zh_name = "縣",
zh_suffix = "縣",
},
-- -----------------------------------------------------------------------
-- Second-level and lower administrative divisions
-- -----------------------------------------------------------------------
["county"] = {
zh_name = "縣",
zh_suffix = "縣",
},
["district"] = {
zh_name = "區",
zh_suffix = "區",
},
["municipality"] = {
zh_name = "市鎮",
zh_suffix = "市鎮",
},
["commune"] = {
zh_name = "市鎮",
},
["comune"] = {
-- Italy/Switzerland
zh_name = "市鎮",
},
["borough"] = {
zh_name = "區",
zh_suffix = "區",
},
["metropolitan borough"] = {
zh_name = "都會區",
zh_suffix = "都會區",
},
["London borough"] = {
zh_name = "倫敦區",
zh_suffix = "區",
},
["royal borough"] = {
zh_name = "皇家自治市",
},
["county borough"] = {
zh_name = "郡市",
zh_suffix = "郡市",
},
["parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["civil parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["council area"] = {
-- Scotland
zh_name = "議會地區",
zh_suffix = "議會地區",
},
["prefecture"] = {
-- Japan: 縣(ken); France: 省治城市(handled by capital city logic)
zh_name = "都道府縣",
zh_suffix = "縣",
},
["prefecture-level city"] = {
-- China
zh_name = "地級市",
zh_suffix = "市",
},
["county-level city"] = {
-- China
zh_name = "縣級市",
zh_suffix = "市",
},
["subprovincial city"] = {
-- China
zh_name = "副省級市",
zh_suffix = "市",
},
["direct-administered municipality"] = {
-- China (Beijing, Shanghai, etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["special municipality"] = {
-- Taiwan (Taipei, New Taipei etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["county-administered city"] = {
-- Taiwan
zh_name = "縣轄市",
zh_suffix = "市",
},
["special ward"] = {
-- Tokyo
zh_name = "特別區",
zh_suffix = "區",
},
["municipal district"] = {
zh_name = "市轄區",
zh_suffix = "區",
},
["subdistrict"] = {
zh_name = "街道",
zh_suffix = "街道",
},
["township"] = {
zh_name = "鄉鎮",
zh_suffix = "鄉鎮",
},
["rural township"] = {
-- Taiwan
zh_name = "鄉",
zh_suffix = "鄉",
},
["urban township"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["mountain indigenous township"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["mountain indigenous district"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["community development block"] = {
-- India
zh_name = "社區發展區",
},
["union territory"] = {
-- India
zh_name = "聯合地區",
},
["hromada"] = {
-- Ukraine
zh_name = "社區",
zh_suffix = "社區",
},
["urban hromada"] = {
zh_name = "城市社區",
zh_suffix = "社區",
},
["rural hromada"] = {
zh_name = "農村社區",
zh_suffix = "社區",
},
["settlement hromada"] = {
zh_name = "聚落社區",
zh_suffix = "社區",
},
["regional unit"] = {
-- Greece
zh_name = "地區單位",
zh_suffix = "地區",
},
["regional county municipality"] = {
-- Quebec
zh_name = "地區縣市",
},
["regional district"] = {
-- Canada
zh_name = "地區區",
},
["regional municipality"] = {
zh_name = "地區市",
},
["local government area"] = {
-- Australia
zh_name = "地方政府區",
},
["local government district"] = {
zh_name = "地方政府區",
},
["arrondissement"] = {
zh_name = "區",
zh_suffix = "區",
},
["cercle"] = {
-- Mali
zh_name = "縣",
},
["geopolitical zone"] = {
-- Nigeria
zh_name = "地緣政治區",
},
["enclave"] = {
zh_name = "飛地",
},
["exclave"] = {
zh_name = "外飛地",
},
-- -----------------------------------------------------------------------
-- Capitals and seats
-- -----------------------------------------------------------------------
["capital city"] = {
-- Default for most contexts; see zh_name_by_holonym_type for overrides
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["microstate"] = "首都",
["city-state"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["province"] = "省會",
["autonomous province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
["municipality"] = "市治",
},
},
["capital"] = {
-- Alias for capital city; same logic
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
},
},
["state capital"] = {
zh_name = "首府",
},
["provincial capital"] = {
zh_name = "省會",
},
["regional capital"] = {
zh_name = "首府",
},
["district capital"] = {
zh_name = "區治",
},
["departmental capital"] = {
zh_name = "省治",
},
["national capital"] = {
zh_name = "首都",
},
["administrative capital"] = {
zh_name = "行政首都",
},
["legislative capital"] = {
zh_name = "立法首都",
},
["judicial capital"] = {
zh_name = "司法首都",
},
["royal capital"] = {
zh_name = "王都",
},
["co-capital"] = {
zh_name = "共同首都",
},
["largest city"] = {
zh_name = "最大城市",
},
["caplc"] = {
zh_name = "首都和最大城市",
},
["non-city capital"] = {
zh_name = "首府",
},
["county seat"] = {
zh_name = "縣治",
},
["county town"] = {
zh_name = "縣城",
},
["borough seat"] = {
zh_name = "區治",
},
["parish seat"] = {
zh_name = "教區治所",
},
["shire town"] = {
zh_name = "郡鎮",
},
["administrative center"] = {
zh_name = "行政中心",
},
["administrative centre"] = {
zh_name = "行政中心",
},
["administrative headquarters"] = {
zh_name = "行政總部",
},
["French prefecture"] = {
-- A city that is the administrative capital of a French department
zh_name = "省府",
zh_name_by_holonym_type = {
["department"] = "省府",
},
},
-- -----------------------------------------------------------------------
-- Cities and urban settlements
-- -----------------------------------------------------------------------
["city"] = {
zh_name = "市",
zh_suffix = "市",
},
["town"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["village"] = {
zh_name = "村",
zh_suffix = "村",
},
["hamlet"] = {
zh_name = "小村",
},
["locality"] = {
zh_name = "村落",
},
["settlement"] = {
zh_name = "聚落",
},
["populated place"] = {
zh_name = "居民點",
},
["neighborhood"] = {
zh_name = "街區",
},
["neighbourhood"] = {
zh_name = "街區",
},
["suburb"] = {
zh_name = "郊區",
},
["community"] = {
zh_name = "社區",
},
["urban area"] = {
zh_name = "城市地區",
},
["residential area"] = {
zh_name = "住宅區",
},
["housing estate"] = {
zh_name = "住宅區",
},
["planned community"] = {
zh_name = "計劃社區",
},
["administrative village"] = {
zh_name = "行政村",
zh_suffix = "村",
},
["barangay"] = {
-- Philippines
zh_name = "里",
},
["barrio"] = {
zh_name = "里",
},
["kibbutz"] = {
zh_name = "集體農場",
},
["ghost town"] = {
zh_name = "鬼城",
},
["unincorporated community"] = {
zh_name = "非建制社區",
},
["census-designated place"] = {
zh_name = "人口普查指定地區",
},
["military base"] = {
zh_name = "軍事基地",
},
["research station"] = {
zh_name = "研究站",
},
["home rule city"] = {
zh_name = "自治市",
},
["federal district"] = {
zh_name = "聯邦特區",
zh_suffix = "特區",
},
["independent city"] = {
zh_name = "獨立市",
},
["autonomous city"] = {
zh_name = "自治市",
},
["port city"] = {
zh_name = "港市",
},
["port town"] = {
zh_name = "港鎮",
},
["market town"] = {
zh_name = "市集鎮",
},
["resort town"] = {
zh_name = "度假鎮",
},
["new town"] = {
zh_name = "新市鎮",
},
-- -----------------------------------------------------------------------
-- Geographic / natural features
-- -----------------------------------------------------------------------
["continent"] = {
zh_name = "洲",
zh_suffix = "洲",
},
["continental region"] = {
zh_name = "大陸地區",
},
["continents and continental regions!"] = {
zh_name = "大洲及大陸地區",
},
["ocean"] = {
zh_name = "洋",
zh_suffix = "洋",
},
["sea"] = {
zh_name = "海",
zh_suffix = "海",
},
["inland sea"] = {
zh_name = "內陸海",
},
["marginal sea"] = {
zh_name = "邊緣海",
},
["river"] = {
zh_name = "河",
zh_suffix = "河",
},
["lake"] = {
zh_name = "湖",
zh_suffix = "湖",
},
["reservoir"] = {
zh_name = "水庫",
zh_suffix = "水庫",
},
["stream"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["creek"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["bay"] = {
zh_name = "灣",
zh_suffix = "灣",
},
["gulf"] = {
zh_name = "海灣",
zh_suffix = "海灣",
},
["fjord"] = {
zh_name = "峽灣",
},
["strait"] = {
zh_name = "海峽",
zh_suffix = "海峽",
},
["channel"] = {
zh_name = "水道",
zh_suffix = "水道",
},
["inlet"] = {
zh_name = "海灣",
zh_suffix = "灣",
},
["arm"] = {
zh_name = "海灣",
},
["island"] = {
zh_name = "島",
zh_suffix = "島",
},
["islet"] = {
zh_name = "小島",
zh_suffix = "島",
},
["island group"] = {
zh_name = "群島",
},
["archipelago"] = {
zh_name = "群島",
zh_suffix = "群島",
},
["atoll"] = {
zh_name = "環礁",
zh_suffix = "環礁",
},
["peninsula"] = {
zh_name = "半島",
zh_suffix = "半島",
},
["spit"] = {
zh_name = "沙嘴",
},
["cape"] = {
zh_name = "角",
zh_suffix = "角",
},
["headland"] = {
zh_name = "岬角",
},
["mountain"] = {
zh_name = "山",
zh_suffix = "山",
},
["hill"] = {
zh_name = "丘",
zh_suffix = "丘",
},
["mountain range"] = {
zh_name = "山脈",
zh_suffix = "山脈",
},
["mountain pass"] = {
zh_name = "山口",
},
["plateau"] = {
zh_name = "高原",
zh_suffix = "高原",
},
["valley"] = {
zh_name = "谷",
zh_suffix = "谷",
},
["glen"] = {
zh_name = "峽谷",
},
["volcano"] = {
zh_name = "火山",
zh_suffix = "火山",
},
["forest"] = {
zh_name = "林地",
zh_suffix = "林",
},
["moor"] = {
zh_name = "荒原",
},
["desert"] = {
zh_name = "沙漠",
zh_suffix = "沙漠",
},
["beach"] = {
zh_name = "海灘",
zh_suffix = "海灘",
},
["spring"] = {
zh_name = "泉",
zh_suffix = "泉",
},
["hot spring"] = {
zh_name = "溫泉",
zh_suffix = "溫泉",
},
["tributary"] = {
zh_name = "支流",
},
["distributary"] = {
zh_name = "分流",
},
-- -----------------------------------------------------------------------
-- Geographic / cultural regions (non-admin)
-- -----------------------------------------------------------------------
["geographic and cultural area"] = {
zh_name = "地區",
},
["geographic region"] = {
zh_name = "地理區域",
},
["historical region"] = {
zh_name = "歷史地區",
},
["historic region"] = {
zh_name = "歷史地區",
},
["cultural region"] = {
zh_name = "文化地區",
},
["subregion"] = {
zh_name = "次地區",
},
["macroregion"] = {
zh_name = "大區域",
},
-- -----------------------------------------------------------------------
-- Man-made structures
-- -----------------------------------------------------------------------
["airport"] = {
zh_name = "機場",
},
["port"] = {
zh_name = "港口",
},
["bridge"] = {
zh_name = "橋",
},
["road"] = {
zh_name = "道路",
},
["highway"] = {
zh_name = "公路",
},
["motorway"] = {
zh_name = "高速公路",
},
["street"] = {
zh_name = "街道",
},
["building"] = {
zh_name = "建築物",
},
["university"] = {
zh_name = "大學",
},
["park"] = {
zh_name = "公園",
},
["national park"] = {
zh_name = "國家公園",
},
["metro station"] = {
zh_name = "地鐵站",
},
["temple"] = {
zh_name = "廟宇",
},
["castle"] = {
zh_name = "城堡",
},
-- -----------------------------------------------------------------------
-- Misc / hypothetical
-- -----------------------------------------------------------------------
["fictional location"] = {
zh_name = "虛構地點",
},
["mythological location"] = {
zh_name = "神話地點",
},
["star"] = {
zh_name = "恆星",
},
["space station"] = {
zh_name = "太空站",
},
}
-- ---------------------------------------------------------------------------
-- Helper: look up zh_name for a placetype via fallback chain
-- ---------------------------------------------------------------------------
-- Looks up zh_name (and optionally zh_name_by_holonym_type) for a given
-- placetype, recursively following the enwikt fallback chain if needed.
-- Returns zh_name (string or table), zh_suffix (string or table or nil),
-- zh_name_by_holonym_type (table or nil).
-- `m_pt` should be the enwikt place-placetypes module (for fallback data).
function export.get_zh_placetype_props(placetype, m_pt)
local visited = {}
local current = placetype
while current and not visited[current] do
visited[current] = true
local zh = export.zh_placetype_data[current]
if zh and zh.zh_name then
return zh.zh_name, zh.zh_suffix, zh.zh_name_by_holonym_type
end
-- Follow enwikt fallback
if m_pt then
local ptdata = m_pt.placetype_data[current]
if ptdata and ptdata.fallback then
current = ptdata.fallback
-- Strip FORMER/ANCIENT prefixes from synthetic fallbacks like "FORMER settlement"
current = current:match("^FORMER (.+)$") or current:match("^ANCIENT (.+)$") or current
else
break
end
else
break
end
end
return nil, nil, nil
end
-- ---------------------------------------------------------------------------
-- Helper: resolve zh_name given holonym context
-- ---------------------------------------------------------------------------
-- Given the zh_name (possibly a table of variants) and zh_name_by_holonym_type,
-- and the holonym's placetype, return the appropriate Chinese name string.
-- If multiple variants, returns the array (caller joins with zh_strings.multi_name_sep).
function export.resolve_zh_name(zh_name, zh_name_by_holonym_type, holonym_placetype)
if zh_name_by_holonym_type and holonym_placetype then
local override = zh_name_by_holonym_type[holonym_placetype]
if override then
return override
end
end
return zh_name
end
-- ---------------------------------------------------------------------------
-- Helper: format zh_name for display (join variants with "/")
-- ---------------------------------------------------------------------------
function export.format_zh_name(zh_name_or_array)
if type(zh_name_or_array) == "table" then
return table.concat(zh_name_or_array, export.zh_strings.multi_name_sep)
end
return zh_name_or_array or ""
end
return export
851lcq0yecmqeoe2nelsk0p3897nsdc
9759701
9759562
2026-05-15T00:38:25Z
TongcyDai
53191
9759701
Scribunto
text/plain
local export = {}
--[==[
Chinese localization data for [[Module:place]].
Fields per placetype entry:
zh_name -- Chinese display name in definition sentences (string or {string,...})
zh_suffix -- Chinese suffix for :pref/:suf holonym modifiers; if nil, falls back to zh_name
zh_name_by_holonym_type
-- context-sensitive Chinese name keyed by the first holonym's placetype;
-- used when the correct term depends on what the place is capital/seat of
zh_preposition -- "in" (→ 位於…的) or "of" (→ …的); nil means inherit from enwikt `preposition` field
-- Only needed when the Chinese preposition differs from the English one.
Multiple-regional-variant names are stored as arrays {"primary", "alt1", "alt2",...}.
- The first element is the canonical/primary form used in categories.
- All elements are displayed, joined with "/" in holonym context.
For zh_suffix with regional variants, use the same array convention.
]==]
-- ---------------------------------------------------------------------------
-- Placetype qualifier translations
-- ---------------------------------------------------------------------------
-- Maps English qualifier words (as canonicalized in placetype_qualifiers) to
-- their Chinese equivalents. Used when displaying qualified placetypes such as
-- "前城市"、"古代王國" etc.
export.zh_qualifiers = {
-- Historicity
["former"] = "前",
["ancient"] = "古代",
["medieval"] = "中世紀",
["historical"] = "歷史上的",
["extinct"] = "已消亡的",
["abandoned"] = "廢棄的",
["deserted"] = "廢棄的",
["ruined"] = "廢墟",
-- Hypothetical
["fictional"] = "虛構的",
["mythological"]= "神話中的",
-- Size
["small"] = "小",
["large"] = "大",
["major"] = "主要的",
["minor"] = "次要的",
["tiny"] = "微小的",
["huge"] = "龐大的",
-- Coastal/water
["coastal"] = "沿海",
["inland"] = "內陸",
["maritime"] = "濱海",
["riverine"] = "沿河",
-- Direction (adjectival use before holonym)
["northern"] = "北部",
["southern"] = "南部",
["eastern"] = "東部",
["western"] = "西部",
["central"] = "中部",
["northeastern"]= "東北部",
["northwestern"]= "西北部",
["southeastern"]= "東南部",
["southwestern"]= "西南部",
-- Status
["autonomous"] = "自治",
["independent"] = "獨立的",
["unincorporated"] = "非建制",
["incorporated"] = "建制",
["rural"] = "農村",
["urban"] = "城市",
["suburban"] = "郊區",
["industrial"] = "工業",
-- Terrain
["mountainous"] = "山地",
["volcanic"] = "火山",
}
-- ---------------------------------------------------------------------------
-- Extra-info label translations
-- ---------------------------------------------------------------------------
-- Maps the enwikt extra-info parameter names to Chinese display labels.
-- Used when appending "首都:X"、"最大城市:X" etc. to definitions.
export.zh_extra_info_labels = {
["capital"] = "首都", -- overridden for non-country holonyms; see zh_capital_label_by_holonym
["largest city"] = "最大城市",
["capital and largest city"] = "首都和最大城市",
["official"] = "官方名稱",
["modern"] = "現代名稱",
["full"] = "全稱",
["seat"] = "治所",
["county seat"] = "縣治",
["borough seat"] = "區治",
["parish seat"] = "教區治所",
["shire town"] = "郡鎮",
}
-- Context-sensitive label for `capital=` parameter, keyed by entry placetype.
-- When a capital-bearing placetype is identified, we look up the holonym type
-- to determine the correct Chinese term for the capital. Falls back to "首都".
export.zh_capital_label_by_holonym_type = {
["country"] = "首都",
["constituent country"]= "首都",
["state"] = "首府",
["province"] = "省會",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
}
-- ---------------------------------------------------------------------------
-- Special-syntax string translations
-- ---------------------------------------------------------------------------
-- Miscellaneous fixed strings used in building definition sentences.
export.zh_strings = {
in_preposition = "位於", -- prepended for "in" placetypes
-- "of" placetypes use no prepositional prefix; holonym directly precedes 的
de_particle = "的", -- possessive/locative particle
and_conj = "和", -- final conjunction in enumerations
enum_sep = "、", -- enumeration separator (replaces serial comma)
multi_name_sep = "/", -- separator for regional name variants (e.g. 格魯吉亞/喬治亞)
trans_sep = ",", -- separator for multiple t1/t2 translations
paren_open = "(",
paren_close = ")",
semicolon = ";", -- multiple-description join (replaces "; ")
former_name_of = "的舊稱", -- @former name of:X → "X的舊稱"
}
-- ---------------------------------------------------------------------------
-- Placetype data (zh_ fields)
-- ---------------------------------------------------------------------------
-- Keys match the canonical English placetype keys in enwikt's placetype_data.
-- Entries without zh_name will be looked up recursively through enwikt's
-- `fallback` chain until a zh_name is found; if none found, the English name
-- is displayed and a tracking category is added.
export.zh_placetype_data = {
-- -----------------------------------------------------------------------
-- Top-level polities
-- -----------------------------------------------------------------------
["country"] = {
zh_name = "國家",
zh_suffix = "國",
},
["city-state"] = {
zh_name = "城邦",
},
["polity"] = {
zh_name = "政體",
},
["empire"] = {
zh_name = "帝國",
zh_suffix = "帝國",
},
["kingdom"] = {
zh_name = "王國",
zh_suffix = "王國",
},
["republic"] = {
zh_name = "共和國",
zh_suffix = "共和國",
},
["federation"] = {
zh_name = "聯邦",
zh_suffix = "聯邦",
},
["confederation"] = {
zh_name = "邦聯",
zh_suffix = "邦聯",
},
["monarchy"] = {
zh_name = "君主國",
},
["principality"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["duchy"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["caliphate"] = {
zh_name = "哈里發國",
},
["khanate"] = {
zh_name = "汗國",
zh_suffix = "汗國",
},
["emirate"] = {
zh_name = "酋長國",
zh_suffix = "酋長國",
},
["bailiwick"] = {
zh_name = "行政管轄區",
},
["captaincy"] = {
zh_name = "都督區",
},
["microstate"] = {
zh_name = "微型國家",
},
["unrecognized country"] = {
zh_name = "未獲承認的國家",
},
-- -----------------------------------------------------------------------
-- Constituent / pseudo-countries
-- -----------------------------------------------------------------------
["constituent country"] = {
-- England, Scotland, Wales, Northern Ireland within the UK
zh_name = "構成國",
zh_suffix = "構成國",
},
["autonomous community"] = {
-- Spain
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous republic"] = {
zh_name = "自治共和國",
zh_suffix = "自治共和國",
},
["special administrative region"] = {
-- China: Hong Kong, Macau
zh_name = "特別行政區",
zh_suffix = "特別行政區",
},
["dependent territory"] = {
zh_name = "屬地",
},
["overseas territory"] = {
zh_name = "海外屬地",
},
["Crown dependency"] = {
zh_name = "王室屬地",
},
["crown dependency"] = {
zh_name = "王室屬地",
},
-- -----------------------------------------------------------------------
-- First-level administrative divisions
-- -----------------------------------------------------------------------
["state"] = {
zh_name = "州",
zh_suffix = "州",
},
["province"] = {
zh_name = "省",
zh_suffix = "省",
},
["territory"] = {
zh_name = "地區",
zh_suffix = "地區",
},
["region"] = {
zh_name = "地區", -- fallback; specific regions use location data (e.g. 法國大區)
zh_suffix = "地區",
},
["administrative region"] = {
zh_name = "行政區",
zh_suffix = "行政區",
},
["autonomous region"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous oblast"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous okrug"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous province"] = {
zh_name = "自治省",
zh_suffix = "自治省",
},
["autonomous prefecture"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous territory"] = {
zh_name = "自治領地",
},
["autonomous territorial unit"] = {
-- Moldova (Gagauzia, Transnistria)
zh_name = "自治地域單位",
},
["federal subject"] = {
-- Russia
zh_name = "聯邦主體",
},
["voivodeship"] = {
-- Poland
zh_name = "省",
zh_suffix = "省",
},
["oblast"] = {
-- Russia/Ukraine
zh_name = "州",
zh_suffix = "州",
},
["okrug"] = {
zh_name = "區",
zh_suffix = "區",
},
["krai"] = {
-- Russia
zh_name = "邊疆區",
zh_suffix = "邊疆區",
},
["raion"] = {
-- Ukraine/Russia
zh_name = "區",
zh_suffix = "區",
},
["department"] = {
-- France and other countries
zh_name = "省",
zh_suffix = "省",
},
["governorate"] = {
zh_name = "省",
zh_suffix = "省",
},
["canton"] = {
-- Switzerland, Luxembourg etc.
zh_name = "州",
zh_suffix = "州",
},
["division"] = {
zh_name = "省",
zh_suffix = "省",
},
["periphery"] = {
-- Greece
zh_name = "大區",
zh_suffix = "大區",
},
["collectivity"] = {
-- France overseas
zh_name = "集體",
},
["commonwealth"] = {
-- Puerto Rico
zh_name = "自由邦",
},
["constituent republic"] = {
-- Yugoslavia/Russia
zh_name = "加盟共和國",
zh_suffix = "共和國",
},
["colony"] = {
zh_name = "殖民地",
},
["viceroyalty"] = {
zh_name = "副王轄地",
},
["regency"] = {
zh_name = "縣",
zh_suffix = "縣",
},
-- -----------------------------------------------------------------------
-- Second-level and lower administrative divisions
-- -----------------------------------------------------------------------
["county"] = {
zh_name = "縣",
zh_suffix = "縣",
},
["district"] = {
zh_name = "區",
zh_suffix = "區",
},
["municipality"] = {
zh_name = "市鎮",
zh_suffix = "市鎮",
},
["commune"] = {
zh_name = "市鎮",
},
["comune"] = {
-- Italy/Switzerland
zh_name = "市鎮",
},
["borough"] = {
zh_name = "區",
zh_suffix = "區",
},
["metropolitan borough"] = {
zh_name = "都會區",
zh_suffix = "都會區",
},
["London borough"] = {
zh_name = "倫敦區",
zh_suffix = "區",
},
["royal borough"] = {
zh_name = "皇家自治市",
},
["county borough"] = {
zh_name = "郡市",
zh_suffix = "郡市",
},
["parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["civil parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["council area"] = {
-- Scotland
zh_name = "議會地區",
zh_suffix = "議會地區",
},
["prefecture"] = {
-- Japan: 縣(ken); France: 省治城市(handled by capital city logic)
zh_name = "都道府縣",
zh_suffix = "縣",
},
["prefecture-level city"] = {
-- China
zh_name = "地級市",
zh_suffix = "市",
},
["county-level city"] = {
-- China
zh_name = "縣級市",
zh_suffix = "市",
},
["subprovincial city"] = {
-- China
zh_name = "副省級市",
zh_suffix = "市",
},
["direct-administered municipality"] = {
-- China (Beijing, Shanghai, etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["special municipality"] = {
-- Taiwan (Taipei, New Taipei etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["county-administered city"] = {
-- Taiwan
zh_name = "縣轄市",
zh_suffix = "市",
},
["special ward"] = {
-- Tokyo
zh_name = "特別區",
zh_suffix = "區",
},
["municipal district"] = {
zh_name = "市轄區",
zh_suffix = "區",
},
["subdistrict"] = {
zh_name = "街道",
zh_suffix = "街道",
},
["township"] = {
zh_name = "鄉鎮",
zh_suffix = "鄉鎮",
},
["rural township"] = {
-- Taiwan
zh_name = "鄉",
zh_suffix = "鄉",
},
["urban township"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["mountain indigenous township"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["mountain indigenous district"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["community development block"] = {
-- India
zh_name = "社區發展區",
},
["union territory"] = {
-- India
zh_name = "聯合地區",
},
["hromada"] = {
-- Ukraine
zh_name = "社區",
zh_suffix = "社區",
},
["urban hromada"] = {
zh_name = "城市社區",
zh_suffix = "社區",
},
["rural hromada"] = {
zh_name = "農村社區",
zh_suffix = "社區",
},
["settlement hromada"] = {
zh_name = "聚落社區",
zh_suffix = "社區",
},
["regional unit"] = {
-- Greece
zh_name = "地區單位",
zh_suffix = "地區",
},
["regional county municipality"] = {
-- Quebec
zh_name = "地區縣市",
},
["regional district"] = {
-- Canada
zh_name = "地區區",
},
["regional municipality"] = {
zh_name = "地區市",
},
["local government area"] = {
-- Australia
zh_name = "地方政府區",
},
["local government district"] = {
zh_name = "地方政府區",
},
["arrondissement"] = {
zh_name = "區",
zh_suffix = "區",
},
["cercle"] = {
-- Mali
zh_name = "縣",
},
["geopolitical zone"] = {
-- Nigeria
zh_name = "地緣政治區",
},
["enclave"] = {
zh_name = "飛地",
},
["exclave"] = {
zh_name = "外飛地",
},
-- -----------------------------------------------------------------------
-- Capitals and seats
-- -----------------------------------------------------------------------
["capital city"] = {
-- Default for most contexts; see zh_name_by_holonym_type for overrides
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["microstate"] = "首都",
["city-state"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["province"] = "省會",
["autonomous province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
["municipality"] = "市治",
},
},
["capital"] = {
-- Alias for capital city; same logic
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
},
},
["state capital"] = {
zh_name = "首府",
},
["provincial capital"] = {
zh_name = "省會",
},
["regional capital"] = {
zh_name = "首府",
},
["district capital"] = {
zh_name = "區治",
},
["departmental capital"] = {
zh_name = "省治",
},
["national capital"] = {
zh_name = "首都",
},
["administrative capital"] = {
zh_name = "行政首都",
},
["legislative capital"] = {
zh_name = "立法首都",
},
["judicial capital"] = {
zh_name = "司法首都",
},
["royal capital"] = {
zh_name = "王都",
},
["co-capital"] = {
zh_name = "共同首都",
},
["largest city"] = {
zh_name = "最大城市",
},
["caplc"] = {
zh_name = "首都和最大城市",
},
["non-city capital"] = {
zh_name = "首府",
},
["county seat"] = {
zh_name = "縣治",
},
["county town"] = {
zh_name = "縣城",
},
["borough seat"] = {
zh_name = "區治",
},
["parish seat"] = {
zh_name = "教區治所",
},
["shire town"] = {
zh_name = "郡鎮",
},
["administrative center"] = {
zh_name = "行政中心",
},
["administrative centre"] = {
zh_name = "行政中心",
},
["administrative headquarters"] = {
zh_name = "行政總部",
},
["French prefecture"] = {
-- A city that is the administrative capital of a French department
zh_name = "省府",
zh_name_by_holonym_type = {
["department"] = "省府",
},
},
-- -----------------------------------------------------------------------
-- Cities and urban settlements
-- -----------------------------------------------------------------------
["city"] = {
zh_name = "市",
zh_suffix = "市",
},
["town"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["village"] = {
zh_name = "村",
zh_suffix = "村",
},
["hamlet"] = {
zh_name = "小村",
},
["locality"] = {
zh_name = "村落",
},
["settlement"] = {
zh_name = "聚落",
},
["populated place"] = {
zh_name = "居民點",
},
["neighborhood"] = {
zh_name = "街區",
},
["neighbourhood"] = {
zh_name = "街區",
},
["suburb"] = {
zh_name = "郊區",
},
["community"] = {
zh_name = "社區",
},
["urban area"] = {
zh_name = "城市地區",
},
["residential area"] = {
zh_name = "住宅區",
},
["housing estate"] = {
zh_name = "住宅區",
},
["planned community"] = {
zh_name = "計劃社區",
},
["administrative village"] = {
zh_name = "行政村",
zh_suffix = "村",
},
["barangay"] = {
-- Philippines
zh_name = "里",
},
["barrio"] = {
zh_name = "里",
},
["kibbutz"] = {
zh_name = "集體農場",
},
["ghost town"] = {
zh_name = "鬼城",
},
["unincorporated community"] = {
zh_name = "非建制社區",
},
["census-designated place"] = {
zh_name = "人口普查指定地區",
},
["military base"] = {
zh_name = "軍事基地",
},
["research station"] = {
zh_name = "研究站",
},
["home rule city"] = {
zh_name = "自治市",
},
["federal district"] = {
zh_name = "聯邦特區",
zh_suffix = "特區",
},
["independent city"] = {
zh_name = "獨立市",
},
["autonomous city"] = {
zh_name = "自治市",
},
["port city"] = {
zh_name = "港市",
},
["port town"] = {
zh_name = "港鎮",
},
["market town"] = {
zh_name = "市集鎮",
},
["resort town"] = {
zh_name = "度假鎮",
},
["new town"] = {
zh_name = "新市鎮",
},
-- -----------------------------------------------------------------------
-- Geographic / natural features
-- -----------------------------------------------------------------------
["continent"] = {
zh_name = "洲",
zh_suffix = "洲",
},
["continental region"] = {
zh_name = "大陸地區",
},
["continents and continental regions!"] = {
zh_name = "大洲及大陸地區",
},
["ocean"] = {
zh_name = "大洋",
zh_suffix = "大洋",
},
["sea"] = {
zh_name = "海",
zh_suffix = "海",
},
["inland sea"] = {
zh_name = "內陸海",
},
["marginal sea"] = {
zh_name = "邊緣海",
},
["river"] = {
zh_name = "河",
zh_suffix = "河",
},
["lake"] = {
zh_name = "湖",
zh_suffix = "湖",
},
["reservoir"] = {
zh_name = "水庫",
zh_suffix = "水庫",
},
["stream"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["creek"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["bay"] = {
zh_name = "灣",
zh_suffix = "灣",
},
["gulf"] = {
zh_name = "海灣",
zh_suffix = "海灣",
},
["fjord"] = {
zh_name = "峽灣",
},
["strait"] = {
zh_name = "海峽",
zh_suffix = "海峽",
},
["channel"] = {
zh_name = "水道",
zh_suffix = "水道",
},
["inlet"] = {
zh_name = "海灣",
zh_suffix = "灣",
},
["arm"] = {
zh_name = "海灣",
},
["island"] = {
zh_name = "島",
zh_suffix = "島",
},
["islet"] = {
zh_name = "小島",
zh_suffix = "島",
},
["island group"] = {
zh_name = "群島",
},
["archipelago"] = {
zh_name = "群島",
zh_suffix = "群島",
},
["atoll"] = {
zh_name = "環礁",
zh_suffix = "環礁",
},
["peninsula"] = {
zh_name = "半島",
zh_suffix = "半島",
},
["spit"] = {
zh_name = "沙嘴",
},
["cape"] = {
zh_name = "角",
zh_suffix = "角",
},
["headland"] = {
zh_name = "岬角",
},
["mountain"] = {
zh_name = "山",
zh_suffix = "山",
},
["hill"] = {
zh_name = "丘",
zh_suffix = "丘",
},
["mountain range"] = {
zh_name = "山脈",
zh_suffix = "山脈",
},
["mountain pass"] = {
zh_name = "山口",
},
["plateau"] = {
zh_name = "高原",
zh_suffix = "高原",
},
["valley"] = {
zh_name = "谷",
zh_suffix = "谷",
},
["glen"] = {
zh_name = "峽谷",
},
["volcano"] = {
zh_name = "火山",
zh_suffix = "火山",
},
["forest"] = {
zh_name = "林地",
zh_suffix = "林",
},
["moor"] = {
zh_name = "荒原",
},
["desert"] = {
zh_name = "沙漠",
zh_suffix = "沙漠",
},
["beach"] = {
zh_name = "海灘",
zh_suffix = "海灘",
},
["spring"] = {
zh_name = "泉",
zh_suffix = "泉",
},
["hot spring"] = {
zh_name = "溫泉",
zh_suffix = "溫泉",
},
["tributary"] = {
zh_name = "支流",
},
["distributary"] = {
zh_name = "分流",
},
-- -----------------------------------------------------------------------
-- Geographic / cultural regions (non-admin)
-- -----------------------------------------------------------------------
["geographic and cultural area"] = {
zh_name = "地區",
},
["geographic region"] = {
zh_name = "地理區域",
},
["historical region"] = {
zh_name = "歷史地區",
},
["historic region"] = {
zh_name = "歷史地區",
},
["cultural region"] = {
zh_name = "文化地區",
},
["subregion"] = {
zh_name = "次地區",
},
["macroregion"] = {
zh_name = "大區域",
},
-- -----------------------------------------------------------------------
-- Man-made structures
-- -----------------------------------------------------------------------
["airport"] = {
zh_name = "機場",
},
["port"] = {
zh_name = "港口",
},
["bridge"] = {
zh_name = "橋",
},
["road"] = {
zh_name = "道路",
},
["highway"] = {
zh_name = "公路",
},
["motorway"] = {
zh_name = "高速公路",
},
["street"] = {
zh_name = "街道",
},
["building"] = {
zh_name = "建築物",
},
["university"] = {
zh_name = "大學",
},
["park"] = {
zh_name = "公園",
},
["national park"] = {
zh_name = "國家公園",
},
["metro station"] = {
zh_name = "地鐵站",
},
["temple"] = {
zh_name = "廟宇",
},
["castle"] = {
zh_name = "城堡",
},
-- -----------------------------------------------------------------------
-- Misc / hypothetical
-- -----------------------------------------------------------------------
["fictional location"] = {
zh_name = "虛構地點",
},
["mythological location"] = {
zh_name = "神話地點",
},
["star"] = {
zh_name = "恆星",
},
["space station"] = {
zh_name = "太空站",
},
}
-- ---------------------------------------------------------------------------
-- Helper: look up zh_name for a placetype via fallback chain
-- ---------------------------------------------------------------------------
-- Looks up zh_name (and optionally zh_name_by_holonym_type) for a given
-- placetype, recursively following the enwikt fallback chain if needed.
-- Returns zh_name (string or table), zh_suffix (string or table or nil),
-- zh_name_by_holonym_type (table or nil).
-- `m_pt` should be the enwikt place-placetypes module (for fallback data).
function export.get_zh_placetype_props(placetype, m_pt)
local visited = {}
local current = placetype
while current and not visited[current] do
visited[current] = true
local zh = export.zh_placetype_data[current]
if zh and zh.zh_name then
return zh.zh_name, zh.zh_suffix, zh.zh_name_by_holonym_type
end
-- Follow enwikt fallback
if m_pt then
local ptdata = m_pt.placetype_data[current]
if ptdata and ptdata.fallback then
current = ptdata.fallback
-- Strip FORMER/ANCIENT prefixes from synthetic fallbacks like "FORMER settlement"
current = current:match("^FORMER (.+)$") or current:match("^ANCIENT (.+)$") or current
else
break
end
else
break
end
end
return nil, nil, nil
end
-- ---------------------------------------------------------------------------
-- Helper: resolve zh_name given holonym context
-- ---------------------------------------------------------------------------
-- Given the zh_name (possibly a table of variants) and zh_name_by_holonym_type,
-- and the holonym's placetype, return the appropriate Chinese name string.
-- If multiple variants, returns the array (caller joins with zh_strings.multi_name_sep).
function export.resolve_zh_name(zh_name, zh_name_by_holonym_type, holonym_placetype)
if zh_name_by_holonym_type and holonym_placetype then
local override = zh_name_by_holonym_type[holonym_placetype]
if override then
return override
end
end
return zh_name
end
-- ---------------------------------------------------------------------------
-- Helper: format zh_name for display (join variants with "/")
-- ---------------------------------------------------------------------------
function export.format_zh_name(zh_name_or_array)
if type(zh_name_or_array) == "table" then
return table.concat(zh_name_or_array, export.zh_strings.multi_name_sep)
end
return zh_name_or_array or ""
end
return export
qkg2966h4g1njfj7o4gv9kf9warfdrl
Wiktionary:啤酒馆/topic list
4
1705276
9759388
9759301
2026-05-14T12:20:19Z
Cewbot
61744
[[User:Cewbot/log/20170915/configuration|生成議題列表:10個議題]]
9759388
wikitext
text/x-wiki
<!-- 本頁面由機器人自動更新。若要改進,請聯繫機器人操作者。 -->
{| class="wikitable sortable mw-collapsible" style="float:left;"
|-
! data-sort-type="number" style="font-weight: normal;" | <small>#</small> !! 💭 話題 !! <span title="發言數/發言人次 (實際上為計算簽名數)">💬</span> !! <span title="參與討論人數/發言人數">👥</span> !! 🙋 最新發言 !! data-sort-type="isoDate" | <span title="最後更新">🕒 <small>(UTC+8)</small></span>
|-
| style="text-align: right;" | 1
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Subscribe_to_the_This_Month_in_Education_newsletter_-_learn_from_others_and_share_your_stories|Subscribe to the This Month in Education newsletter - learn from others and share your stories]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 2
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Do_you_use_Wikidata_in_Wikimedia_sibling_projects?_Tell_us_about_your_experiences|Do you use Wikidata in Wikimedia sibling projects? Tell us about your experiences]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 3
| [[:Wiktionary:啤酒馆#重構:原始斯拉夫語/頁面|重構:原始斯拉夫語/頁面]]
| style="text-align: right;" | 4
| style="text-align: right;" | 2
| style="background-color: #bbb;" | [[User:Chihunglu83|Chihunglu83]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-26T13:07:00.000Z" | 2026-03-26 <span style="color: blue;">21:07</span>
|-
| style="text-align: right;" | 4
| [[:Wiktionary:啤酒馆#缺失ISO693-3的語言|缺失ISO693-3的語言]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:Chihunglu83|Chihunglu83]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-27T03:12:00.000Z" | 2026-03-27 <span style="color: blue;">11:12</span>
|-
| style="text-align: right;" | 5
| [[:Wiktionary:啤酒馆#台灣分會2026年3月對話時間|台灣分會2026年3月對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-28T06:28:00.000Z" | 2026-03-28 <span style="color: blue;">14:28</span>
|-
| style="text-align: right;" | 6
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Action_Required:_Update_templates/modules_for_electoral_maps_(Migrating_from_P1846_to_P14226)|Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226)]]</small>
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-03T17:11:00.000Z" | 2026-04-04 <span style="color: blue;">01:11</span>
|-
| style="text-align: right;" | 7
| [[:Wiktionary:啤酒馆#維基詞典:翻譯不充實|維基詞典:翻譯不充實]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:Intolerable situation|<small style="word-wrap: break-word; word-break: break-all;">Intolerable situation</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-10T08:26:00.000Z" | 2026-04-10 <span style="color: blue;">16:26</span>
|-
| style="text-align: right;" | 8
| [[:Wiktionary:啤酒馆#Request_for_comment_(global_AI_policy)|Request for comment (global AI policy)]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-04-26T00:58:00.000Z" | 2026-04-26 <span style="color: blue;">08:58</span>
|-
| style="text-align: right;" | 9
| [[:Wiktionary:啤酒馆#台灣分會2026年4月對話時間|台灣分會2026年4月對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-04-27T22:52:00.000Z" | 2026-04-28 <span style="color: blue;">06:52</span>
|-
| style="text-align: right;" | 10
| [[:Wiktionary:啤酒馆#Template:place|Template:place]]
| style="text-align: right;" | 3
| style="text-align: right;" | 2
| style="background-color: #eef;" | [[User:TongcyDai|TongcyDai]]
| style="background-color: #eef;" data-sort-type="isoDate" data-sort-value="2026-05-14T06:20:00.000Z" | 2026-05-14 <span style="color: blue;">14:20</span>
|}
{| class="wikitable mw-collapsible mw-collapsed" style="float: left; margin-left: .5em;;{{#if:{{{no_time_legend|}}}|display:none;|}}"
! title="From the latest bot edit" | 發言更新圖例
|-
| style="background-color: #efe;" |
* 最近一小時內
|-
| style="background-color: #eef;" |
* 最近一日內
|-
| |
* 一週內
|-
| style="background-color: #ddd;" |
* 一個月內
|-
| style="background-color: #bbb;" |
* 逾一個月
|-
! 特殊狀態
|-
| style="text-decoration: line-through" | 已移動至其他頁面<br />或完成討論之議題
|-
! 手動設定
|-
| style="max-width: 12em;" | <small>當列表出現異常時,<br />請先檢查[[User:Cewbot/log/20170915/configuration|設定]]是否有誤</small>
|-
|}
{{Clear}}
qkx5zwdxc65l7rfk3yjvta72z6s2f1n
9760149
9759388
2026-05-15T06:21:02Z
Cewbot
61744
[[User:Cewbot/log/20170915/configuration|生成議題列表:10個議題]]
9760149
wikitext
text/x-wiki
<!-- 本頁面由機器人自動更新。若要改進,請聯繫機器人操作者。 -->
{| class="wikitable sortable mw-collapsible" style="float:left;"
|-
! data-sort-type="number" style="font-weight: normal;" | <small>#</small> !! 💭 話題 !! <span title="發言數/發言人次 (實際上為計算簽名數)">💬</span> !! <span title="參與討論人數/發言人數">👥</span> !! 🙋 最新發言 !! data-sort-type="isoDate" | <span title="最後更新">🕒 <small>(UTC+8)</small></span>
|-
| style="text-align: right;" | 1
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Subscribe_to_the_This_Month_in_Education_newsletter_-_learn_from_others_and_share_your_stories|Subscribe to the This Month in Education newsletter - learn from others and share your stories]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 2
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Do_you_use_Wikidata_in_Wikimedia_sibling_projects?_Tell_us_about_your_experiences|Do you use Wikidata in Wikimedia sibling projects? Tell us about your experiences]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 3
| [[:Wiktionary:啤酒馆#重構:原始斯拉夫語/頁面|重構:原始斯拉夫語/頁面]]
| style="text-align: right;" | 4
| style="text-align: right;" | 2
| style="background-color: #bbb;" | [[User:Chihunglu83|Chihunglu83]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-26T13:07:00.000Z" | 2026-03-26 <span style="color: blue;">21:07</span>
|-
| style="text-align: right;" | 4
| [[:Wiktionary:啤酒馆#缺失ISO693-3的語言|缺失ISO693-3的語言]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:Chihunglu83|Chihunglu83]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-27T03:12:00.000Z" | 2026-03-27 <span style="color: blue;">11:12</span>
|-
| style="text-align: right;" | 5
| [[:Wiktionary:啤酒馆#台灣分會2026年3月對話時間|台灣分會2026年3月對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-28T06:28:00.000Z" | 2026-03-28 <span style="color: blue;">14:28</span>
|-
| style="text-align: right;" | 6
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Action_Required:_Update_templates/modules_for_electoral_maps_(Migrating_from_P1846_to_P14226)|Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226)]]</small>
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-03T17:11:00.000Z" | 2026-04-04 <span style="color: blue;">01:11</span>
|-
| style="text-align: right;" | 7
| [[:Wiktionary:啤酒馆#維基詞典:翻譯不充實|維基詞典:翻譯不充實]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:Intolerable situation|<small style="word-wrap: break-word; word-break: break-all;">Intolerable situation</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-10T08:26:00.000Z" | 2026-04-10 <span style="color: blue;">16:26</span>
|-
| style="text-align: right;" | 8
| [[:Wiktionary:啤酒馆#Request_for_comment_(global_AI_policy)|Request for comment (global AI policy)]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-04-26T00:58:00.000Z" | 2026-04-26 <span style="color: blue;">08:58</span>
|-
| style="text-align: right;" | 9
| [[:Wiktionary:啤酒馆#台灣分會2026年4月對話時間|台灣分會2026年4月對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-04-27T22:52:00.000Z" | 2026-04-28 <span style="color: blue;">06:52</span>
|-
| style="text-align: right;" | 10
| [[:Wiktionary:啤酒馆#Template:place|Template:place]]
| style="text-align: right;" | 3
| style="text-align: right;" | 2
| [[User:TongcyDai|TongcyDai]]
| data-sort-type="isoDate" data-sort-value="2026-05-14T06:20:00.000Z" | 2026-05-14 <span style="color: blue;">14:20</span>
|}
{| class="wikitable mw-collapsible mw-collapsed" style="float: left; margin-left: .5em;;{{#if:{{{no_time_legend|}}}|display:none;|}}"
! title="From the latest bot edit" | 發言更新圖例
|-
| style="background-color: #efe;" |
* 最近一小時內
|-
| style="background-color: #eef;" |
* 最近一日內
|-
| |
* 一週內
|-
| style="background-color: #ddd;" |
* 一個月內
|-
| style="background-color: #bbb;" |
* 逾一個月
|-
! 特殊狀態
|-
| style="text-decoration: line-through" | 已移動至其他頁面<br />或完成討論之議題
|-
! 手動設定
|-
| style="max-width: 12em;" | <small>當列表出現異常時,<br />請先檢查[[User:Cewbot/log/20170915/configuration|設定]]是否有誤</small>
|-
|}
{{Clear}}
2oy1ljtoc1pxosjdkvm3y2qafo6pkvi
América do Norte
0
1763060
9759706
7656557
2026-05-15T00:41:39Z
TongcyDai
53191
9759706
wikitext
text/x-wiki
==加利西亞語==
{{wp|gl:}}
===專有名詞===
{{gl-proper noun|f|head=[[América]] [[do]] [[norte|Norte]]}}
# {{tcl|gl|北美洲|id=Q49}}
====相關詞彙====
* {{l|gl|América do Sur}}
* {{l|gl|norteamericano}}
==葡萄牙語==
{{wp|pt:}}
[[Image:North America satellite globe.jpg|thumb|América do Norte]]
===專有名詞===
{{pt-proper noun|f|head=[[América]] [[do]] [[norte|Norte]]}}
# {{tcl|pt|北美洲|id=Q49}}
====相關詞彙====
* {{l|pt|norte-americano}}
ka04i5vtiypf2ggnmmyfqj3hjlxhg61
América do Sur
0
1763061
9759705
7069587
2026-05-15T00:41:18Z
TongcyDai
53191
9759705
wikitext
text/x-wiki
==加利西亞語==
{{wp|gl:}}
===專有名詞===
{{gl-proper noun|f|head=[[América]] [[do]] [[sur|Sur]]}}
# {{tcl|gl|南美洲|id=Q18}}
====相關詞彙====
* {{l|gl|América do Norte}}
* {{l|gl|sudamericano}}
6y97l3yfam6did9m3nh3w4vb1hgxhnl
Category:俄語 大洲和大洲地區
14
1776151
9759632
7085679
2026-05-14T23:24:31Z
TongcyBot
83009
TongcyBot移动页面[[Category:俄語 大洲]]至[[Category:俄語 大洲及大陸地區]],不留重定向
7085679
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:日語 大洲和大洲地區
14
1839591
9759630
7161921
2026-05-14T23:22:51Z
TongcyBot
83009
TongcyBot移动页面[[Category:日語 大洲]]至[[Category:日語 大洲及大陸地區]],不留重定向
7161921
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
亜大陸
0
1839597
9759639
7880544
2026-05-14T23:30:44Z
TongcyDai
53191
9759639
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|あ|たい|りく|yomi=kanon}}
===詞源===
源自{{com|ja|亜|大陸|tr1=a|tr2=tairiku|t1=次|t2=大陸|sort=たいりく}}。
===發音===
{{ja-pron|あたいりく|acc=2|acc_ref=NHK}}
===名詞===
{{ja-noun|あたいりく}}
# {{lb|ja|rare|地質學}} [[次大陸]]
===參考資料===
<references/>
{{C|ja|地形}}
6slzajepzc1nl1vmlsadsqgkvckmt0f
Asya
0
1868736
9759628
8658213
2026-05-14T23:20:52Z
TongcyDai
53191
9759628
wikitext
text/x-wiki
==英語==
===詞源===
{{bor+|en|ru|Ася}},{{m|ru|Анастасия|t=Ann}} 的非正式寵物形式。
===專有名詞===
{{en-proper noun}}
# {{given name|en|女性|from=俄羅斯|usage=現代}}。
===異序詞===
* {{anagrams|en|a=aasy|Ayas|ayas|saya|yaas|AYAs|Asay}}
==宿霧語==
===詞源===
{{bor+|ceb|es|Asia}}。
===發音===
* {{hyph|ceb|A|sya}}
* {{ceb-IPA}}
===名詞===
{{ceb-noun}}
# {{tcl|ceb|亞洲|id=Q48}}
==中比科爾語==
===詞源===
{{bor+|bcl|es|Asia}}。
===發音===
* {{hyph|bcl|A|sya}}
* {{bcl-IPA}}
===名詞===
{{head|bcl|名詞}}
# {{tcl|bcl|亞洲|id=Q48}}
==北庫爾德語==
[[Image:LocationAsia.svg|thumb|Asya]]
===詞源===
最终源自{{der|kmr|grc|Ᾰ̓σῐ́ᾱ}}。
===發音===
* {{kmr-IPA}}
===專有名詞===
{{kmr-proper noun|f|ar=ئاسیا}}
# {{tcl|kmr|亞洲|id=Q48}}
====派生詞彙====
* {{l|kmr|asyayî}}
==他加祿語==
===其他形式===
* {{alt|tl|Asia}}
===詞源===
{{bor+|tl|es|Asia}}。
===發音===
{{tl-pr}}
===專有名詞===
{{tl-proper noun|b=+}}
# {{tcl|tl|亞洲|id=Q48}}<!-- Roman province is Asia -->
====同類詞彙====
{{list:continents/tl/Latn}}
====派生詞彙====
{{col3|tl|Gitnang Asya|Hilagang Asya|Kanlurang Asya|Silangang Asya|Timog Asya|Timog-Silangang Asya}}
====相關詞彙====
{{col3|tl|Asyano|Asyatiko|Asya-Pasipiko|Aproasyatiko}}
===異序詞===
* {{anagrams|tl|a=aasy|saya}}
==土耳其語==
===詞源===
{{inh+|tr|ota|آسیا|tr=asiya}},源自{{der|tr|fa-cls|آسیا|tr=āsiyā}},源自{{der|tr|ar|آسِيَا}},源自{{der|tr|grc|Ἀσῐ́ᾱ}},源自{{der|tr|gmy|𐀀𐀯𐀹𐀊|ts=aswijaː}},可能源自{{der|tr|hit|𒀸𒋗𒉿|tr=Aššuwa|t=安納托利亞西北部}},進一步的來源未明。
===發音===
* {{IPA|tr|[ä́s̪.jä]}}
* {{hyph|tr|As|ya}}
===專有名詞===
{{tr-proper noun}}
# {{tcl|tr|亞洲|id=Q48}}
# {{given name|tr|女性|地名}}
====變格====
{{tr-prop-v-aı}}
====派生詞彙====
{{col|tr|Avrasya<t:Eurasia>|Asyalı<t:Asian>|Asyalılık<t:Asianness>|Batı Asya<t:West Asia>|Doğu Asya<t:East Asia>|Güney Asya<t:South Asia>|Güneydoğu Asya<t:Southeast Asia>|İç Asya<t:Inner Asia>|Kuzey Asya<t:North Asia>|Kuzeydoğu Asya<t:Northeast Asia>|Küçük Asya<t:Asia Minor>|Orta Asya<t:Central Asia>}}
j8t7ykbjika09awg00ykm2lh1nxhemh
Àfrica
0
1965998
9759688
9532729
2026-05-15T00:30:21Z
TongcyDai
53191
9759688
wikitext
text/x-wiki
{{also|africa|Africa|áfrica|africà|África}}
==加泰羅尼亞語==
{{wp|ca:}}
===詞源===
{{rfe|ca}}
===發音===
* {{ca-IPA}}
* {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-Àfrica.wav|a=Catalonia}}
===專有名詞===
{{ca-prop|f}}
# {{tcl|ca|非洲|id=Q15}}
# {{tcl|ca|阿非利加|id=Q181238}}
====派生詞彙====
{{col3|ca|Àfrica Austral
|Àfrica Central
|Àfrica del Nord
|Àfrica Occidental
|Àfrica Oriental
|Àfrica subsahariana
|Sud-àfrica}}
====相關詞彙====
* {{l|ca|africà}}
====參見====
{{list:continents/ca}}
==利古里亞語==
[[Image:550px-Africa_(orthographic_projection).png|thumb|right|''Poxiçión de l''''Àfrica''' into móndo'' — '''非洲'''在世界上的位置|200px]]
===詞源===
源自{{der|lij|la|Āfrica}}。
===發音===
* {{IPA|lij|/ˈafrika/}}
===專有名詞===
{{head|lij|專有名詞|g=f}}
# {{tcl|lij|非洲|id=Q15}}
====相關詞彙====
* {{l|lij|africàn}}
==威尼斯語==
===詞源===
{{rfe|vec}}
===專有名詞===
{{wp|vec:}}
{{head|vec|專有名詞|g=f}}
# {{tcl|vec|非洲|id=Q15}}
====派生詞彙====
* {{l|vec|african}}
7tv7l8o6ux2st9vhqeniemae47gh6ma
Sydamerika
0
1980147
9759640
7670073
2026-05-14T23:31:53Z
TongcyDai
53191
9759640
wikitext
text/x-wiki
==丹麥語==
{{wp|da:}}
===詞源===
源自 {{compound|da|syd|Amerika}}。
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|南美洲|id=Q18}}
====相關詞彙====
* {{l|da|sydamerikaner|g=c|t=南美洲人}}
* {{l|da|sydamerikansk|t=南美洲的}}
==瑞典語==
{{wp|sv:}}
===詞源===
源自 {{compound|sv|syd|Amerika}}
===發音===
* {{IPA|sv|/ˈsyːdaˌmeːrɪka/}}
===專有名詞===
{{head|sv|專有名詞|g=n}}
# {{tcl|sv|南美洲|id=Q18}}
====相關詞彙====
* {{l|sv|sydamerikansk}}
* {{l|sv|sydamerikanska}}
====參見====
* {{l|sv|Centralamerika}}
* {{l|sv|Nordamerika}}
{{list:continents/sv}}
{{list:countries in South America/sv}}
===參考資料===
* {{R:svenska.se|saol}}
* [https://web.archive.org/web/20241007090739/https://mesh.kib.ki.se/term/D013020/south-america Svensk MeSH]
kwhkfhzk4on5oy2z3a4fr1k5ko1tm4z
Category:泰米爾語 大洲和大洲地區
14
1986399
9759591
7352762
2026-05-14T22:29:07Z
TongcyBot
83009
TongcyBot移动页面[[Category:泰米爾語 大洲]]至[[Category:泰米爾語 大洲及大陸地區]],不留重定向
7352762
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:皮特凱恩語 大洲和大洲地區
14
2052865
9759599
7439877
2026-05-14T22:29:52Z
TongcyBot
83009
TongcyBot移动页面[[Category:皮特凱恩語 大洲]]至[[Category:皮特凱恩語 大洲及大陸地區]],不留重定向
7439877
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希伯來語 大洲和大洲地區
14
2057429
9759569
7449629
2026-05-14T22:26:54Z
TongcyBot
83009
TongcyBot移动页面[[Category:希伯來語 大洲]]至[[Category:希伯來語 大洲及大陸地區]],不留重定向
7449629
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印地語 大洲和大洲地區
14
2105354
9759553
7522628
2026-05-14T22:25:39Z
TongcyBot
83009
TongcyBot移动页面[[Category:印地語 大洲]]至[[Category:印地語 大洲及大陸地區]],不留重定向
7522628
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
User:Sayonzei/Kotori
2
2129326
9759748
9758906
2026-05-15T03:31:19Z
Sayonzei
40728
9759748
wikitext
text/x-wiki
精製鳥飼料:[[User:KotoriBot]]
==列表==
===法語===
*一個-er結尾的第一類法語動詞(連同本體)理論上可產出'''40'''個新詞條。<br>
:{{col3|fr|}}<!--明日:
;需自行創建
:{{col3|fr|retransmigrer|redésentrelacer|retransfigurer|réobséder|désobséder|désamocher|réamocher|rebuissonner|débuissonner|recolmater|décolmater|désaffréter|redélester|réindividuer|recharrier|recémenter|décémenter|réabsolutiser|désabsolutiser|désacadémiser|désaccastiller|réaccompagner|désaccompagner|réagrémenter|désagrémenter|désalambiquer|désanalphabétiser|désanathématiser|réapostropher|réajourner|désajourner|redétremper|redogmatiser|dédogmatiser|réextirper|réintituler|resolutionner|resouscrire|resulfater|désulfater|réagenouiller|désagenouiller|débouillir|désaccomplir|réaccomplir|réaccoutrer}}-->
===加泰===
*一個-ar結尾的普通加泰羅尼亞語動詞(連同本體)理論上可產出'''44'''個新詞條。<br>
:{{col3|ca|}}
===葡加利===
*一個-ar結尾的普通葡萄牙語動詞(連同本體)理論上可產出'''53'''個新詞條;但需注意,過去分詞可能不在accel範圍內。<br>
:{{col3|pt|engatilhar|encarquilhar|enlanguescer|enlamear|encruzar|encruzilhar}}<!--明日:-->
===西===
*一個-ar結尾的普通西班牙語動詞(連同本體、不含合詞)理論上可產出'''58'''個新詞條。<br>
:{{col3|es|engatillar}}<!--明日:
;需自行創建
:{{col3|es|bestializar|zollipar|zampuzar}}-->
===德語===
:{{col3|de|}}
===拉丁語===
:{{col3|la|}}<!--明日:-->
:{{col3|la|}}<!--明日:-->
===意大利語===
:{{col3|it|}}<!--明日:-->
===俄語===
:{{col3|ru|}}
:{{col3|ru|}}
q556j9pzrrd3xuv2dulfooh9bqhucl7
Աֆրիկա
0
2140217
9759680
9607299
2026-05-15T00:21:04Z
TongcyDai
53191
9759680
wikitext
text/x-wiki
==亞美尼亞語==
===詞源===
{{rfe|hy}}
===發音===
{{hy-IPA|Ա՛ֆրիկա}}
===專有名詞===
{{wp|hy:}}
{{hy-h|propn}}
# {{tcl|hy|非洲|id=Q15}}
====變格====
{{hy-noun-ի-ներ|unc=on}}
====近義詞====
* {{l|hy|Ափրիկե}} {{qual|過時}}
7apkhhnf5sharmif5b5xbutbvuxcey2
Եվրասիա
0
2154115
9759683
9607251
2026-05-15T00:26:59Z
TongcyDai
53191
9759683
wikitext
text/x-wiki
==亞美尼亞語==
===詞源===
{{blend|hy|Եվրոպա|Ասիա}}。
===發音===
{{hy-IPA|Եվրա՛սիա|Եվրասիա}}
===專有名詞===
{{hy-h|propn}}
# {{tcl|hy|歐亞大陸|id=Q5401}}
====變格====
{{hy-noun-ի-ներ|unc=on}}
====派生詞彙====
* {{l|hy|եվրասիական}}
eejcbci7f49wljb328cwfmnxrv43mu3
Ասիա
0
2154116
9759684
9607255
2026-05-15T00:28:17Z
TongcyDai
53191
9759684
wikitext
text/x-wiki
{{also|Appendix:"asia"的變體}}
==亞美尼亞語==
===詞源===
源自{{uder|hy|xcl|Ասիա}}。
===發音===
{{hy-IPA|Ա՛սիա}}
* {{audio|hy|Hy-Ասիա.ogg|a=Eastern Armenian}}
===專有名詞===
{{hy-h|propn}}
# {{tcl|hy|亞洲|id=Q48}}
# [[亞細亞]][[行省]]
====變格====
{{hy-noun-ի-ներ|unc=on}}
====相關詞彙====
{{col|hy|ասիական|ասիացի}}
===參考資料===
* {{R:hy:TUT|section=II.A.3|page=46}}
==古典亞美尼亞語==
===詞源===
{{bor+|xcl|grc|Ἀσία}}。
===專有名詞===
{{xcl-proper noun}}
# [[小亞細亞]]
# {{tcl|xcl|Asia|id=Q48}}
# {{tcl|xcl|Asia|id=Q210718|nolb=1}}
====變格====
{{xcl-noun-ա-unc||Ասի}}
{{xcl-noun-ո-unc||Ասի}}
====派生詞彙====
{{col|xcl
|ասիածին
|ասիական
|ասիապետ
|ասիացի
}}
====派生語彙====
* {{desc|hy|Ասիա}}
===參考資料===
* {{R:xcl:JB|vol=II|index=3|page=1504b}}
* {{R:xcl:HHB|vol=II|part=II|page=27ab}}
heqk3ya42008idk8k0tibthgh63ongw
9759685
9759684
2026-05-15T00:28:41Z
TongcyDai
53191
/* 專有名詞 */ // Edit via Wikiplus
9759685
wikitext
text/x-wiki
{{also|Appendix:"asia"的變體}}
==亞美尼亞語==
===詞源===
源自{{uder|hy|xcl|Ասիա}}。
===發音===
{{hy-IPA|Ա՛սիա}}
* {{audio|hy|Hy-Ասիա.ogg|a=Eastern Armenian}}
===專有名詞===
{{hy-h|propn}}
# {{tcl|hy|亞洲|id=Q48}}
# [[亞細亞]][[行省]]
====變格====
{{hy-noun-ի-ներ|unc=on}}
====相關詞彙====
{{col|hy|ասիական|ասիացի}}
===參考資料===
* {{R:hy:TUT|section=II.A.3|page=46}}
==古典亞美尼亞語==
===詞源===
{{bor+|xcl|grc|Ἀσία}}。
===專有名詞===
{{xcl-proper noun}}
# [[小亞細亞]]
# {{tcl|xcl|亞洲|id=Q48}}
# [[亞細亞]][[行省]]
====變格====
{{xcl-noun-ա-unc||Ասի}}
{{xcl-noun-ո-unc||Ասի}}
====派生詞彙====
{{col|xcl
|ասիածին
|ասիական
|ասիապետ
|ասիացի
}}
====派生語彙====
* {{desc|hy|Ասիա}}
===參考資料===
* {{R:xcl:JB|vol=II|index=3|page=1504b}}
* {{R:xcl:HHB|vol=II|part=II|page=27ab}}
ihe5l27awz7mhdvptbcc8eun96fgmp0
Category:烏克蘭語 大洲和大洲地區
14
2184868
9759594
7718030
2026-05-14T22:29:25Z
TongcyBot
83009
TongcyBot移动页面[[Category:烏克蘭語 大洲]]至[[Category:烏克蘭語 大洲及大陸地區]],不留重定向
7718030
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:葡萄牙語 大洲和大洲地區
14
2197802
9759607
7811344
2026-05-14T22:30:26Z
TongcyBot
83009
TongcyBot移动页面[[Category:葡萄牙語 大洲]]至[[Category:葡萄牙語 大洲及大陸地區]],不留重定向
7811344
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西班牙語 大洲和大洲地區
14
2197809
9759609
7811353
2026-05-14T22:30:39Z
TongcyBot
83009
TongcyBot移动页面[[Category:西班牙語 大洲]]至[[Category:西班牙語 大洲及大陸地區]],不留重定向
7811353
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 大洲和大洲地區
14
2197815
9759546
7811361
2026-05-14T22:25:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:加泰羅尼亞語 大洲]]至[[Category:加泰羅尼亞語 大洲及大陸地區]],不留重定向
7811361
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 大洲和大洲地區
14
2197822
9759545
7811371
2026-05-14T22:24:55Z
TongcyBot
83009
TongcyBot移动页面[[Category:加利西亞語 大洲]]至[[Category:加利西亞語 大洲及大陸地區]],不留重定向
7811371
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 大洲和大洲地區
14
2197830
9759574
7811379
2026-05-14T22:27:25Z
TongcyBot
83009
TongcyBot移动页面[[Category:意大利語 大洲]]至[[Category:意大利語 大洲及大陸地區]],不留重定向
7811379
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古愛爾蘭語 大洲和大洲地區
14
2197836
9759555
7811388
2026-05-14T22:25:52Z
TongcyBot
83009
TongcyBot移动页面[[Category:古愛爾蘭語 大洲]]至[[Category:古愛爾蘭語 大洲及大陸地區]],不留重定向
7811388
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Oceanien
0
2197844
9759655
7811404
2026-05-14T23:51:32Z
TongcyDai
53191
9759655
wikitext
text/x-wiki
{{also|océanien}}
==丹麥語==
{{wp|da:}}
===詞源===
經{{der|da|fr|Océanie}} 借入,源自{{der|da|grc|Ὠκεανός}}。
===專有名詞===
{{head|da|專有名詞|g=n}}
# {{tcl|da|大洋洲|id=Q538}}
==瑞典語==
{{wp|sv:}}
===發音===
* {{IPA|sv|/ʊsɪˈɑːnɪɛn/}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|大洋洲|id=Q538}}
====參見====
{{list:continents/sv}}
{{list:countries in Oceania/sv}}
===參考資料===
* [https://mesh.kib.ki.se/term/D044349/oceania Svensk MeSH]
lhvcx8c62oqefntucnj4upnal39kmuk
大洋州
0
2197848
9759651
7881662
2026-05-14T23:48:56Z
TongcyDai
53191
9759651
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|たい|よう|しゅう|yomi=o}}
===發音===
{{ja-pron|たいようしゅう|acc=3|acc_ref=DJR,DJS,NHK,SMK7}}
===專有名詞===
{{ja-pos|proper|たいようしゅう}}
# {{tcl|ja|大洋洲|id=Q538}}
====近義詞====
* {{ja-r|^オセアニア}}
{{c|ja|大洲|大洋洲}}
9satt5w7lmeddzf9vkr6voow6rhday8
9759652
9759651
2026-05-14T23:49:14Z
TongcyDai
53191
9759652
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|たい|よう|しゅう|yomi=o}}
===發音===
{{ja-pron|たいようしゅう|acc=3|acc_ref=DJR,DJS,NHK,SMK7}}
===專有名詞===
{{ja-pos|proper|たいようしゅう}}
# {{tcl|ja|大洋洲|id=Q538}}
====近義詞====
* {{ja-r|^オセアニア}}
===參考資料===
<references/>
16ul944vjdw0g1jr4lxvo8bajpnlqxh
Category:南非語 大洲和大洲地區
14
2197878
9759550
7811457
2026-05-14T22:25:27Z
TongcyBot
83009
TongcyBot移动页面[[Category:南非語 大洲]]至[[Category:南非語 大洲及大陸地區]],不留重定向
7811457
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 大洲和大洲地區
14
2197886
9759576
7811465
2026-05-14T22:27:37Z
TongcyBot
83009
TongcyBot移动页面[[Category:愛沙尼亞語 大洲]]至[[Category:愛沙尼亞語 大洲及大陸地區]],不留重定向
7811465
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:越南語 大洲和大洲地區
14
2197893
9759612
7811479
2026-05-14T22:30:54Z
TongcyBot
83009
TongcyBot移动页面[[Category:越南語 大洲]]至[[Category:越南語 大洲及大陸地區]],不留重定向
7811479
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kernkraftwerke
0
2204859
9759454
9546506
2026-05-14T17:14:19Z
Jeuwre
48455
發音
9759454
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈkɛʁnkʁaftˌvɛʁkə/}}
* {{audio|de|De-Kernkraftwerke.ogg}}
* {{audio|de|De-Kernkraftwerke2.ogg}}
* {{hyph|de|Kern|kraft|wer|ke}}
===名詞===
{{head|de|名詞變格形}}
# {{inflection of|de|Kernkraftwerk||nom//acc//gen|p}}
2zt40iomqbcwlpku6k1rvhrd5gttxo5
9759458
9759454
2026-05-14T17:15:11Z
Jeuwre
48455
个小修改
9759458
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈkɛʁnkʁaftˌvɛʁkə/}}
* {{audio|de|De-Kernkraftwerke.ogg}}
* {{audio|de|De-Kernkraftwerke2.ogg|a=柏林}}
* {{hyph|de|Kern|kraft|wer|ke}}
===名詞===
{{head|de|名詞變格形}}
# {{inflection of|de|Kernkraftwerk||nom//acc//gen|p}}
p93oel9ehkyldmpebb7v0n6syrdhsmu
Kernkraftwerken
0
2204860
9759459
9546521
2026-05-14T17:16:59Z
Jeuwre
48455
發音
9759459
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈkɛʁnkʁaftˌvɛʁkn̩/|/ˈkɛʁnkʁaftˌvɛʁkŋ̩/}}
* {{audio|de|De-Kernkraftwerken.ogg|a=柏林}}
* {{audio|de|De-Kernkraftwerken2.ogg|a=柏林}}
* {{hyph|de|Kern|kraft|wer|ken}}
===名詞===
{{head|de|名詞變格形|g=n}}
# {{inflection of|de|Kernkraftwerk||dat|p}}
3bx113k19e7n0uozngr89myx7xw8luj
Category:丹麥語 大洲和大洲地區
14
2207861
9759540
7831002
2026-05-14T22:24:17Z
TongcyBot
83009
TongcyBot移动页面[[Category:丹麥語 大洲]]至[[Category:丹麥語 大洲及大陸地區]],不留重定向
7831002
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:北庫爾德語 大洲和大洲地區
14
2208257
9759548
7831406
2026-05-14T22:25:14Z
TongcyBot
83009
TongcyBot移动页面[[Category:北庫爾德語 大洲]]至[[Category:北庫爾德語 大洲及大陸地區]],不留重定向
7831406
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:老撾語 大洲和大洲地區
14
2208270
9759603
7831419
2026-05-14T22:30:06Z
TongcyBot
83009
TongcyBot移动页面[[Category:老撾語 大洲]]至[[Category:老撾語 大洲及大陸地區]],不留重定向
7831419
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 大洲和大洲地區
14
2208487
9759584
7831652
2026-05-14T22:28:30Z
TongcyBot
83009
TongcyBot移动页面[[Category:沃拉普克語 大洲]]至[[Category:沃拉普克語 大洲及大陸地區]],不留重定向
7831652
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏茲別克語 大洲和大洲地區
14
2208547
9759596
7831713
2026-05-14T22:29:33Z
TongcyBot
83009
TongcyBot移动页面[[Category:烏茲別克語 大洲]]至[[Category:烏茲別克語 大洲及大陸地區]],不留重定向
7831713
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 大洲和大洲地區
14
2208554
9759604
7831720
2026-05-14T22:30:12Z
TongcyBot
83009
TongcyBot移动页面[[Category:芬蘭語 大洲]]至[[Category:芬蘭語 大洲及大陸地區]],不留重定向
7831720
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 大洲和大洲地區
14
2215188
9759547
7839483
2026-05-14T22:25:08Z
TongcyBot
83009
TongcyBot移动页面[[Category:匈牙利語 大洲]]至[[Category:匈牙利語 大洲及大陸地區]],不留重定向
7839483
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希臘語 大洲和大洲地區
14
2223298
9759571
7850848
2026-05-14T22:27:13Z
TongcyBot
83009
TongcyBot移动页面[[Category:希臘語 大洲]]至[[Category:希臘語 大洲及大陸地區]],不留重定向
7850848
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
မီးယၢပ်ႈ
0
2248490
9760178
7892457
2026-05-15T09:44:22Z
~2026-29141-26
133384
9760178
wikitext
text/x-wiki
==撣語==
===詞源===
{{bor+|shn|my|မီးယပ်
နန၊}}。ါဋအဪဪ်ဖနခါ
ါ
===發音===
{{shn-pron|မီး-ယၢပ်ႈ}}
===名詞===
{{shn-noun}}
# [[月經]]
===參考資料===
* {{R:shn:Sao1995}}
baxyn6cbn3mkgwlgdd6fd16q1wueehy
Category:孟加拉語 大洲和大洲地區
14
2250548
9759563
7894776
2026-05-14T22:26:35Z
TongcyBot
83009
TongcyBot移动页面[[Category:孟加拉語 大洲]]至[[Category:孟加拉語 大洲及大陸地區]],不留重定向
7894776
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
亜州
0
2250800
9759631
8416361
2026-05-14T23:23:22Z
TongcyDai
53191
9759631
wikitext
text/x-wiki
{{also|亞洲|亜洲}}
==日語==
{{ja-kanjitab|あ|しゅう|yomi=o|kyu=亞洲|alt=亜洲:過時}}
===詞源===
{{ja-daiyouji|州|洲|sort=あしゅう}}。
===發音===
{{ja-pron|あしゅう}}
===專有名詞===
{{ja-pos|proper|あしゅう|hhira=あしう}}
# {{tcl|ja|亞洲|id=Q48}}
#: {{syn|ja|アジア}}
e9qden6qujwvbpe1l8mliuxjsiuf7dn
Category:白俄羅斯語 大洲和大洲地區
14
2334296
9759598
7984466
2026-05-14T22:29:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:白俄羅斯語 大洲]]至[[Category:白俄羅斯語 大洲及大陸地區]],不留重定向
7984466
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 大洲和大洲地區
14
2334302
9759541
7984473
2026-05-14T22:24:23Z
TongcyBot
83009
TongcyBot移动页面[[Category:亞美尼亞語 大洲]]至[[Category:亞美尼亞語 大洲及大陸地區]],不留重定向
7984473
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 大洲和大洲地區
14
2336939
9759624
7988040
2026-05-14T23:14:48Z
TongcyBot
83009
TongcyBot移动页面[[Category:馬其頓語 大洲]]至[[Category:馬其頓語 大洲及大陸地區]],不留重定向
7988040
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 大洲和大洲地區
14
2337078
9759589
7988180
2026-05-14T22:28:55Z
TongcyBot
83009
TongcyBot移动页面[[Category:波蘭語 大洲]]至[[Category:波蘭語 大洲及大陸地區]],不留重定向
7988180
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 大洲和大洲地區
14
2338432
9759590
7989790
2026-05-14T22:29:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:泰盧固語 大洲]]至[[Category:泰盧固語 大洲及大陸地區]],不留重定向
7989790
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 大洲和大洲地區
14
2479811
9759544
8312047
2026-05-14T22:24:41Z
TongcyBot
83009
TongcyBot移动页面[[Category:利古里亞語 大洲]]至[[Category:利古里亞語 大洲及大陸地區]],不留重定向
8312047
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿斯圖里亞斯語 大洲和大洲地區
14
2479816
9759614
8312052
2026-05-14T22:31:06Z
TongcyBot
83009
TongcyBot移动页面[[Category:阿斯圖里亞斯語 大洲]]至[[Category:阿斯圖里亞斯語 大洲及大陸地區]],不留重定向
8312052
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 大洲和大洲地區
14
2524273
9759580
8377853
2026-05-14T22:28:04Z
TongcyBot
83009
TongcyBot移动页面[[Category:書面挪威語 大洲]]至[[Category:書面挪威語 大洲及大陸地區]],不留重定向
8377853
wikitext
text/x-wiki
{{autocat}}
slf0sbtwkqpj1yctqc9wbjjf1tuf7jr
Category:瑞典語 大洲和大洲地區
14
2524548
9759597
8378319
2026-05-14T22:29:40Z
TongcyBot
83009
TongcyBot移动页面[[Category:瑞典語 大洲]]至[[Category:瑞典語 大洲及大陸地區]],不留重定向
8378319
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 大洲和大洲地區
14
2524715
9759579
8378506
2026-05-14T22:27:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:新挪威語 大洲]]至[[Category:新挪威語 大洲及大陸地區]],不留重定向
8378506
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 大洲和大洲地區
14
2532890
9759582
8388086
2026-05-14T22:28:18Z
TongcyBot
83009
TongcyBot移动页面[[Category:格魯吉亞語 大洲]]至[[Category:格魯吉亞語 大洲及大陸地區]],不留重定向
8388086
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土耳其語 大洲和大洲地區
14
2670551
9759558
8589058
2026-05-14T22:26:10Z
TongcyBot
83009
TongcyBot移动页面[[Category:土耳其語 大洲]]至[[Category:土耳其語 大洲及大陸地區]],不留重定向
8589058
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塔吉克語 大洲和大洲地區
14
2670651
9759559
8589165
2026-05-14T22:26:17Z
TongcyBot
83009
TongcyBot移动页面[[Category:塔吉克語 大洲]]至[[Category:塔吉克語 大洲及大陸地區]],不留重定向
8589165
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:夏威夷語 大洲和大洲地區
14
2670802
9759560
8589342
2026-05-14T22:26:23Z
TongcyBot
83009
TongcyBot移动页面[[Category:夏威夷語 大洲]]至[[Category:夏威夷語 大洲及大陸地區]],不留重定向
8589342
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:朝鮮語 大洲和大洲地區
14
2714663
9759581
8643103
2026-05-14T22:28:11Z
TongcyBot
83009
TongcyBot移动页面[[Category:朝鮮語 大洲]]至[[Category:朝鮮語 大洲及大陸地區]],不留重定向
8643103
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛爾蘭語 大洲和大洲地區
14
2715148
9759577
8643671
2026-05-14T22:27:44Z
TongcyBot
83009
TongcyBot移动页面[[Category:愛爾蘭語 大洲]]至[[Category:愛爾蘭語 大洲及大陸地區]],不留重定向
8643671
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:桑戈語 大洲和大洲地區
14
2719992
9759583
8649300
2026-05-14T22:28:24Z
TongcyBot
83009
TongcyBot移动页面[[Category:桑戈語 大洲]]至[[Category:桑戈語 大洲及大陸地區]],不留重定向
8649300
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏爾都語 大洲和大洲地區
14
2725152
9759595
8656913
2026-05-14T22:29:27Z
TongcyBot
83009
TongcyBot移动页面[[Category:烏爾都語 大洲]]至[[Category:烏爾都語 大洲及大陸地區]],不留重定向
8656913
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中比科爾語 大洲和大洲地區
14
2728772
9759539
8661695
2026-05-14T22:24:11Z
TongcyBot
83009
TongcyBot移动页面[[Category:中比科爾語 大洲]]至[[Category:中比科爾語 大洲及大陸地區]],不留重定向
8661695
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:他加祿語 大洲和大洲地區
14
2728905
9759542
8661830
2026-05-14T22:24:29Z
TongcyBot
83009
TongcyBot移动页面[[Category:他加祿語 大洲]]至[[Category:他加祿語 大洲及大陸地區]],不留重定向
8661830
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ᦵᦝᧀᧈᦵᦋᦲᧁᧈ
0
2751484
9759686
8690444
2026-05-15T00:28:58Z
TongcyDai
53191
9759686
wikitext
text/x-wiki
==傣仂語==
===發音===
{{khb-pron|ᦵᦝᧀᧈ-ᦵᦋᦲᧁᧈ}}
===專有名詞===
{{khb-proper noun}}
# {{tcl|khb|非洲|id=Q15}}
===延伸閱讀===
* {{R:khb:Hanna}}
88arr2xa8jm0eu2mk1dmtr8nmaf1dit
Category:傣仂語 大洲和大洲地區
14
2751485
9759543
8690445
2026-05-14T22:24:35Z
TongcyBot
83009
TongcyBot移动页面[[Category:傣仂語 大洲]]至[[Category:傣仂語 大洲及大陸地區]],不留重定向
8690445
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
User:TongcyDai/沙盒/12
2
2755438
9759626
8713262
2026-05-14T23:18:01Z
TongcyDai
53191
9759626
wikitext
text/x-wiki
[[Asya]]
[[Oceanien]]
[[Australien]]
[[Sydamerika]]
[[Աֆրիկա]]
[[Եվրասիա]]
[[Ասիա]]
[[Asya]]
[[ᦵᦝᧀᧈᦵᦋᦲᧁᧈ]]
[[Àfrica]]
[[América]]
[[América do Sur]]
[[América do Norte]]
[[Oceanía]]
[[América Central]]
[[Euràsia]]
[[Ausztrália]]
[[Dél-Amerika]]
[[Eurázsia]]
[[Európa]]
[[Óceánia]]
[[Ázsia]]
[[Antarktika]]
[[Efrîqa]]
[[Afrîka]]
[[Asya]]
[[Oseania]]
[[Noord-Amerika]]
[[Antarktika]]
[[Eùropa]]
[[ऑस्ट्रेलिया]]
[[युरोप]]
[[अंटार्कटिका]]
[[अफ़्रीका]]
[[यूरोप]]
[[Ասիա]]
[[Afraicc]]
[[Түндүк Америка]]
[[Ýewropa]]
[[Avrupa]]
[[Antarktika]]
[[Asya]]
[[Avustralya]]
[[Аврупо]]
[[Африқо]]
[[ʻAukekulelia]]
[[ʻĀkia]]
[[America del Nòrd]]
[[America del Sud]]
[[Asya]]
[[यूरोप]]
[[אירופה]]
[[אפריקה]]
[[Βόρεια Αμερική]]
[[Ευρώπη]]
[[Ευρασία]]
[[Ασία]]
[[Ωκεανία]]
[[Αφρική]]
[[America del Nord]]
[[America del sud]]
[[Nordamerica]]
[[אַפֿריקע]]
[[Ameerika]]
[[Aafrika]]
[[Euraasia]]
[[Euroopa]]
[[Aasia]]
[[Lõunamanner]]
[[Antarktis]]
[[Põhja-Ameerika]]
[[Okeaania]]
[[Antarktika]]
[[Eoraip]]
[[Afraic]]
[[Avstralija]]
[[Evropa]]
[[Antarktika]]
[[Azija]]
[[Oseania]]
[[Antarktika]]
[[Sør-Amerika]]
[[Oseania]]
[[Sør-Amerika]]
[[Antarktika]]
[[유라시아]]
[[아시아]]
[[구라파]]
[[유럽]]
[[오세아니아]]
[[აზია]]
[[ევროპა]]
[[აფრიკა]]
[[Aêropa]]
[[Afrîka]]
[[Merop]]
[[Frikop]]
[[Seanop]]
[[Siyop]]
[[Evropa]]
[[Amérique du Nord]]
[[Amérique du Sud]]
[[آمریکا]]
[[امریکا]]
[[آفریقا]]
[[Eurazja]]
[[Azja]]
[[Ameryka Południowa]]
[[అమెరికా]]
[[ఆఫ్రికా]]
[[அவுஸ்திரேலியா]]
[[ஆப்பிரிக்கா]]
[[ஐரோப்பா]]
[[ออสเตรเลีย]]
[[ยุโรป]]
[[آسيا]]
[[امریکا]]
[[آسٹریلیا]]
[[ایشیا]]
[[Shimoliy Amerika]]
[[Janubiy Amerika]]
[[Okeaniya]]
[[Yevrosiyo]]
[[Antarktida]]
[[Sydamerika]]
[[Oceanien]]
[[Antarktis]]
[[Australien]]
[[Аўстралія]]
[[Афрыка]]
[[Еўропа]]
[[Australija]]
[[Azija]]
[[ອາຟຣິກກາ]]
[[ເອີຣົບ]]
[[ເອີລົບ]]
[[ອາຊີ]]
[[Etelä-Amerikka]]
[[Aasia]]
[[Pohjois-Amerikka]]
[[Amerikka]]
[[Oseania]]
[[Afrikka]]
[[Euraasia]]
[[Antarktis]]
[[Europpa]]
[[Amerikka]]
[[Afrikka]]
[[Oceânia]]
[[Eurásia]]
[[América do Norte]]
[[América Central]]
[[América do Sul]]
[[América]]
[[Австрали]]
[[Европ]]
[[Африк]]
[[Америк]]
[[Ази]]
[[América Meridional]]
[[América Central]]
[[Oceanía]]
[[Antártida]]
[[Turai]]
[[Afirka]]
[[Nam Mĩ]]
[[Á châu]]
[[Phi châu]]
[[Bắc Mĩ]]
[[Á Tế Á]]
[[إفريقيا]]
[[أوروبا]]
[[أمريكا]]
[[أستراليا]]
[[آسيا]]
[[América]]
[[Evropa]]
[[Северна Америка]]
[[Азија]]
[[Океанија]]
[[Јужна Америка]]
8cspc0im1bmmafdig4ndmrnkqoalqog
Category:宿霧語 大洲和大洲地區
14
2875797
9759565
8923638
2026-05-14T22:26:40Z
TongcyBot
83009
TongcyBot移动页面[[Category:宿霧語 大洲]]至[[Category:宿霧語 大洲及大陸地區]],不留重定向
8923638
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:北薩米語 大洲和大洲地區
14
2893063
9759549
8947601
2026-05-14T22:25:21Z
TongcyBot
83009
TongcyBot移动页面[[Category:北薩米語 大洲]]至[[Category:北薩米語 大洲及大陸地區]],不留重定向
8947601
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Antarktíka
0
2915457
9759642
8983373
2026-05-14T23:33:57Z
TongcyDai
53191
9759642
wikitext
text/x-wiki
{{also|Antarktika|Antarktikā}}
==冰島語==
{{wp|is:}}
===專有名詞===
{{is-proper noun|@@}}
# {{tcl|is|南極洲|id=Q51}}
#: {{syn|is|Suðurskautslandið}}
====變格====
{{is-ndecl|f}}
rlzfv4g6z71n15ts4u3t3alyat6tmia
Category:奧克語 大洲和大洲地區
14
2953459
9759561
9049197
2026-05-14T22:26:29Z
TongcyBot
83009
TongcyBot移动页面[[Category:奧克語 大洲]]至[[Category:奧克語 大洲及大陸地區]],不留重定向
9049197
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 大洲和大洲地區
14
2954327
9759586
9050370
2026-05-14T22:28:43Z
TongcyBot
83009
TongcyBot移动页面[[Category:法語 大洲]]至[[Category:法語 大洲及大陸地區]],不留重定向
9050370
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:上索布語 大洲和大洲地區
14
3026744
9759629
9141428
2026-05-14T23:22:30Z
TongcyBot
83009
TongcyBot移动页面[[Category:上索布語 大洲]]至[[Category:上索布語 大洲及大陸地區]],不留重定向
9141428
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:下索布語 大洲和大洲地區
14
3026746
9759538
9141430
2026-05-14T22:24:08Z
TongcyBot
83009
TongcyBot移动页面[[Category:下索布語 大洲]]至[[Category:下索布語 大洲及大陸地區]],不留重定向
9141430
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛文尼亞語 大洲和大洲地區
14
3026747
9759578
9141432
2026-05-14T22:27:51Z
TongcyBot
83009
TongcyBot移动页面[[Category:斯洛文尼亞語 大洲]]至[[Category:斯洛文尼亞語 大洲及大陸地區]],不留重定向
9141432
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立陶宛語 大洲和大洲地區
14
3026748
9759601
9141433
2026-05-14T22:29:57Z
TongcyBot
83009
TongcyBot移动页面[[Category:立陶宛語 大洲]]至[[Category:立陶宛語 大洲及大陸地區]],不留重定向
9141433
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:Place/data/sandbox
828
3034684
9759465
9758655
2026-05-14T20:13:25Z
Xiplus
25402
已保护“[[Module:Place/data/sandbox]]”:高風險模板:115640引用([编辑权限=仅允许自动确认用户](无限期)[移动权限=仅允许自动确认用户](无限期))
9758655
Scribunto
text/plain
local export = {}
--[==[
Chinese localization data for [[Module:place]].
Fields per placetype entry:
zh_name -- Chinese display name in definition sentences (string or {string,...})
zh_suffix -- Chinese suffix for :pref/:suf holonym modifiers; if nil, falls back to zh_name
zh_name_by_holonym_type
-- context-sensitive Chinese name keyed by the first holonym's placetype;
-- used when the correct term depends on what the place is capital/seat of
zh_preposition -- "in" (→ 位於…的) or "of" (→ …的); nil means inherit from enwikt `preposition` field
-- Only needed when the Chinese preposition differs from the English one.
Multiple-regional-variant names are stored as arrays {"primary", "alt1", "alt2",...}.
- The first element is the canonical/primary form used in categories.
- All elements are displayed, joined with "/" in holonym context.
For zh_suffix with regional variants, use the same array convention.
]==]
-- ---------------------------------------------------------------------------
-- Placetype qualifier translations
-- ---------------------------------------------------------------------------
-- Maps English qualifier words (as canonicalized in placetype_qualifiers) to
-- their Chinese equivalents. Used when displaying qualified placetypes such as
-- "前城市"、"古代王國" etc.
export.zh_qualifiers = {
-- Historicity
["former"] = "前",
["ancient"] = "古代",
["medieval"] = "中世紀",
["historical"] = "歷史上的",
["extinct"] = "已消亡的",
["abandoned"] = "廢棄的",
["deserted"] = "廢棄的",
["ruined"] = "廢墟",
-- Hypothetical
["fictional"] = "虛構的",
["mythological"]= "神話中的",
-- Size
["small"] = "小",
["large"] = "大",
["major"] = "主要的",
["minor"] = "次要的",
["tiny"] = "微小的",
["huge"] = "龐大的",
-- Coastal/water
["coastal"] = "沿海",
["inland"] = "內陸",
["maritime"] = "濱海",
["riverine"] = "沿河",
-- Direction (adjectival use before holonym)
["northern"] = "北部",
["southern"] = "南部",
["eastern"] = "東部",
["western"] = "西部",
["central"] = "中部",
["northeastern"]= "東北部",
["northwestern"]= "西北部",
["southeastern"]= "東南部",
["southwestern"]= "西南部",
-- Status
["autonomous"] = "自治",
["independent"] = "獨立的",
["unincorporated"] = "非建制",
["incorporated"] = "建制",
["rural"] = "農村",
["urban"] = "城市",
["suburban"] = "郊區",
["industrial"] = "工業",
-- Terrain
["mountainous"] = "山地",
["volcanic"] = "火山",
}
-- ---------------------------------------------------------------------------
-- Extra-info label translations
-- ---------------------------------------------------------------------------
-- Maps the enwikt extra-info parameter names to Chinese display labels.
-- Used when appending "首都:X"、"最大城市:X" etc. to definitions.
export.zh_extra_info_labels = {
["capital"] = "首都", -- overridden for non-country holonyms; see zh_capital_label_by_holonym
["largest city"] = "最大城市",
["capital and largest city"] = "首都和最大城市",
["official"] = "官方名稱",
["modern"] = "現代名稱",
["full"] = "全稱",
["seat"] = "治所",
["county seat"] = "縣治",
["borough seat"] = "區治",
["parish seat"] = "教區治所",
["shire town"] = "郡鎮",
}
-- Context-sensitive label for `capital=` parameter, keyed by entry placetype.
-- When a capital-bearing placetype is identified, we look up the holonym type
-- to determine the correct Chinese term for the capital. Falls back to "首都".
export.zh_capital_label_by_holonym_type = {
["country"] = "首都",
["constituent country"]= "首都",
["state"] = "首府",
["province"] = "省會",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
}
-- ---------------------------------------------------------------------------
-- Special-syntax string translations
-- ---------------------------------------------------------------------------
-- Miscellaneous fixed strings used in building definition sentences.
export.zh_strings = {
in_preposition = "位於", -- prepended for "in" placetypes
-- "of" placetypes use no prepositional prefix; holonym directly precedes 的
de_particle = "的", -- possessive/locative particle
and_conj = "和", -- final conjunction in enumerations
enum_sep = "、", -- enumeration separator (replaces serial comma)
multi_name_sep = "/", -- separator for regional name variants (e.g. 格魯吉亞/喬治亞)
trans_sep = ",", -- separator for multiple t1/t2 translations
paren_open = "(",
paren_close = ")",
semicolon = ";", -- multiple-description join (replaces "; ")
former_name_of = "的舊稱", -- @former name of:X → "X的舊稱"
}
-- ---------------------------------------------------------------------------
-- Placetype data (zh_ fields)
-- ---------------------------------------------------------------------------
-- Keys match the canonical English placetype keys in enwikt's placetype_data.
-- Entries without zh_name will be looked up recursively through enwikt's
-- `fallback` chain until a zh_name is found; if none found, the English name
-- is displayed and a tracking category is added.
export.zh_placetype_data = {
-- -----------------------------------------------------------------------
-- Top-level polities
-- -----------------------------------------------------------------------
["country"] = {
zh_name = "國家",
zh_suffix = "國",
},
["city-state"] = {
zh_name = "城邦",
},
["polity"] = {
zh_name = "政體",
},
["empire"] = {
zh_name = "帝國",
zh_suffix = "帝國",
},
["kingdom"] = {
zh_name = "王國",
zh_suffix = "王國",
},
["republic"] = {
zh_name = "共和國",
zh_suffix = "共和國",
},
["federation"] = {
zh_name = "聯邦",
zh_suffix = "聯邦",
},
["confederation"] = {
zh_name = "邦聯",
zh_suffix = "邦聯",
},
["monarchy"] = {
zh_name = "君主國",
},
["principality"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["duchy"] = {
zh_name = "公國",
zh_suffix = "公國",
},
["caliphate"] = {
zh_name = "哈里發國",
},
["khanate"] = {
zh_name = "汗國",
zh_suffix = "汗國",
},
["emirate"] = {
zh_name = "酋長國",
zh_suffix = "酋長國",
},
["bailiwick"] = {
zh_name = "行政管轄區",
},
["captaincy"] = {
zh_name = "都督區",
},
["microstate"] = {
zh_name = "微型國家",
},
["unrecognized country"] = {
zh_name = "未獲承認的國家",
},
-- -----------------------------------------------------------------------
-- Constituent / pseudo-countries
-- -----------------------------------------------------------------------
["constituent country"] = {
-- England, Scotland, Wales, Northern Ireland within the UK
zh_name = "構成國",
zh_suffix = "構成國",
},
["autonomous community"] = {
-- Spain
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous republic"] = {
zh_name = "自治共和國",
zh_suffix = "自治共和國",
},
["special administrative region"] = {
-- China: Hong Kong, Macau
zh_name = "特別行政區",
zh_suffix = "特別行政區",
},
["dependent territory"] = {
zh_name = "屬地",
},
["overseas territory"] = {
zh_name = "海外屬地",
},
["Crown dependency"] = {
zh_name = "王室屬地",
},
["crown dependency"] = {
zh_name = "王室屬地",
},
-- -----------------------------------------------------------------------
-- First-level administrative divisions
-- -----------------------------------------------------------------------
["state"] = {
zh_name = "州",
zh_suffix = "州",
},
["province"] = {
zh_name = "省",
zh_suffix = "省",
},
["territory"] = {
zh_name = "地區",
zh_suffix = "地區",
},
["region"] = {
zh_name = "地區", -- fallback; specific regions use location data (e.g. 法國大區)
zh_suffix = "地區",
},
["administrative region"] = {
zh_name = "行政區",
zh_suffix = "行政區",
},
["autonomous region"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous oblast"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous okrug"] = {
zh_name = "自治區",
zh_suffix = "自治區",
},
["autonomous province"] = {
zh_name = "自治省",
zh_suffix = "自治省",
},
["autonomous prefecture"] = {
zh_name = "自治州",
zh_suffix = "自治州",
},
["autonomous territory"] = {
zh_name = "自治領地",
},
["autonomous territorial unit"] = {
-- Moldova (Gagauzia, Transnistria)
zh_name = "自治地域單位",
},
["federal subject"] = {
-- Russia
zh_name = "聯邦主體",
},
["voivodeship"] = {
-- Poland
zh_name = "省",
zh_suffix = "省",
},
["oblast"] = {
-- Russia/Ukraine
zh_name = "州",
zh_suffix = "州",
},
["okrug"] = {
zh_name = "區",
zh_suffix = "區",
},
["krai"] = {
-- Russia
zh_name = "邊疆區",
zh_suffix = "邊疆區",
},
["raion"] = {
-- Ukraine/Russia
zh_name = "區",
zh_suffix = "區",
},
["department"] = {
-- France and other countries
zh_name = "省",
zh_suffix = "省",
},
["governorate"] = {
zh_name = "省",
zh_suffix = "省",
},
["canton"] = {
-- Switzerland, Luxembourg etc.
zh_name = "州",
zh_suffix = "州",
},
["division"] = {
zh_name = "省",
zh_suffix = "省",
},
["periphery"] = {
-- Greece
zh_name = "大區",
zh_suffix = "大區",
},
["collectivity"] = {
-- France overseas
zh_name = "集體",
},
["commonwealth"] = {
-- Puerto Rico
zh_name = "自由邦",
},
["constituent republic"] = {
-- Yugoslavia/Russia
zh_name = "加盟共和國",
zh_suffix = "共和國",
},
["colony"] = {
zh_name = "殖民地",
},
["viceroyalty"] = {
zh_name = "副王轄地",
},
["regency"] = {
zh_name = "縣",
zh_suffix = "縣",
},
-- -----------------------------------------------------------------------
-- Second-level and lower administrative divisions
-- -----------------------------------------------------------------------
["county"] = {
zh_name = "縣",
zh_suffix = "縣",
},
["district"] = {
zh_name = "區",
zh_suffix = "區",
},
["municipality"] = {
zh_name = "市鎮",
zh_suffix = "市鎮",
},
["commune"] = {
zh_name = "市鎮",
},
["comune"] = {
-- Italy/Switzerland
zh_name = "市鎮",
},
["borough"] = {
zh_name = "區",
zh_suffix = "區",
},
["metropolitan borough"] = {
zh_name = "都會區",
zh_suffix = "都會區",
},
["London borough"] = {
zh_name = "倫敦區",
zh_suffix = "區",
},
["royal borough"] = {
zh_name = "皇家自治市",
},
["county borough"] = {
zh_name = "郡市",
zh_suffix = "郡市",
},
["parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["civil parish"] = {
zh_name = "教區",
zh_suffix = "教區",
},
["council area"] = {
-- Scotland
zh_name = "議會地區",
zh_suffix = "議會地區",
},
["prefecture"] = {
-- Japan: 縣(ken); France: 省治城市(handled by capital city logic)
zh_name = "縣",
zh_suffix = "縣",
},
["prefecture-level city"] = {
-- China
zh_name = "地級市",
zh_suffix = "市",
},
["county-level city"] = {
-- China
zh_name = "縣級市",
zh_suffix = "市",
},
["subprovincial city"] = {
-- China
zh_name = "副省級市",
zh_suffix = "市",
},
["direct-administered municipality"] = {
-- China (Beijing, Shanghai, etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["special municipality"] = {
-- Taiwan (Taipei, New Taipei etc.)
zh_name = "直轄市",
zh_suffix = "市",
},
["county-administered city"] = {
-- Taiwan
zh_name = "縣轄市",
zh_suffix = "市",
},
["special ward"] = {
-- Tokyo
zh_name = "特別區",
zh_suffix = "區",
},
["municipal district"] = {
zh_name = "市轄區",
zh_suffix = "區",
},
["subdistrict"] = {
zh_name = "街道",
zh_suffix = "街道",
},
["township"] = {
zh_name = "鄉鎮",
zh_suffix = "鄉鎮",
},
["rural township"] = {
-- Taiwan
zh_name = "鄉",
zh_suffix = "鄉",
},
["urban township"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["mountain indigenous township"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["mountain indigenous district"] = {
-- Taiwan
zh_name = "山地原住民區",
zh_suffix = "區",
},
["community development block"] = {
-- India
zh_name = "社區發展區",
},
["union territory"] = {
-- India
zh_name = "聯合地區",
},
["hromada"] = {
-- Ukraine
zh_name = "社區",
zh_suffix = "社區",
},
["urban hromada"] = {
zh_name = "城市社區",
zh_suffix = "社區",
},
["rural hromada"] = {
zh_name = "農村社區",
zh_suffix = "社區",
},
["settlement hromada"] = {
zh_name = "聚落社區",
zh_suffix = "社區",
},
["regional unit"] = {
-- Greece
zh_name = "地區單位",
zh_suffix = "地區",
},
["regional county municipality"] = {
-- Quebec
zh_name = "地區縣市",
},
["regional district"] = {
-- Canada
zh_name = "地區區",
},
["regional municipality"] = {
zh_name = "地區市",
},
["local government area"] = {
-- Australia
zh_name = "地方政府區",
},
["local government district"] = {
zh_name = "地方政府區",
},
["arrondissement"] = {
zh_name = "區",
zh_suffix = "區",
},
["cercle"] = {
-- Mali
zh_name = "縣",
},
["geopolitical zone"] = {
-- Nigeria
zh_name = "地緣政治區",
},
["enclave"] = {
zh_name = "飛地",
},
["exclave"] = {
zh_name = "外飛地",
},
-- -----------------------------------------------------------------------
-- Capitals and seats
-- -----------------------------------------------------------------------
["capital city"] = {
-- Default for most contexts; see zh_name_by_holonym_type for overrides
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["microstate"] = "首都",
["city-state"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["administrative region"] = "首府",
["autonomous region"] = "首府",
["province"] = "省會",
["autonomous province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
["prefecture"] = "縣治",
["municipality"] = "市治",
},
},
["capital"] = {
-- Alias for capital city; same logic
zh_name = "首府",
zh_name_by_holonym_type = {
["country"] = "首都",
["constituent country"] = "首都",
["state"] = "首府",
["territory"] = "首府",
["region"] = "首府",
["province"] = "省會",
["county"] = "縣治",
["district"] = "區治",
["department"] = "省治",
},
},
["state capital"] = {
zh_name = "首府",
},
["provincial capital"] = {
zh_name = "省會",
},
["regional capital"] = {
zh_name = "首府",
},
["district capital"] = {
zh_name = "區治",
},
["departmental capital"] = {
zh_name = "省治",
},
["national capital"] = {
zh_name = "首都",
},
["administrative capital"] = {
zh_name = "行政首都",
},
["legislative capital"] = {
zh_name = "立法首都",
},
["judicial capital"] = {
zh_name = "司法首都",
},
["royal capital"] = {
zh_name = "王都",
},
["co-capital"] = {
zh_name = "共同首都",
},
["largest city"] = {
zh_name = "最大城市",
},
["caplc"] = {
zh_name = "首都和最大城市",
},
["non-city capital"] = {
zh_name = "首府",
},
["county seat"] = {
zh_name = "縣治",
},
["county town"] = {
zh_name = "縣城",
},
["borough seat"] = {
zh_name = "區治",
},
["parish seat"] = {
zh_name = "教區治所",
},
["shire town"] = {
zh_name = "郡鎮",
},
["administrative center"] = {
zh_name = "行政中心",
},
["administrative centre"] = {
zh_name = "行政中心",
},
["administrative headquarters"] = {
zh_name = "行政總部",
},
["French prefecture"] = {
-- A city that is the administrative capital of a French department
zh_name = "省府",
zh_name_by_holonym_type = {
["department"] = "省府",
},
},
-- -----------------------------------------------------------------------
-- Cities and urban settlements
-- -----------------------------------------------------------------------
["city"] = {
zh_name = "市",
zh_suffix = "市",
},
["town"] = {
zh_name = "鎮",
zh_suffix = "鎮",
},
["village"] = {
zh_name = "村",
zh_suffix = "村",
},
["hamlet"] = {
zh_name = "小村",
},
["locality"] = {
zh_name = "村落",
},
["settlement"] = {
zh_name = "聚落",
},
["populated place"] = {
zh_name = "居民點",
},
["neighborhood"] = {
zh_name = "街區",
},
["neighbourhood"] = {
zh_name = "街區",
},
["suburb"] = {
zh_name = "郊區",
},
["community"] = {
zh_name = "社區",
},
["urban area"] = {
zh_name = "城市地區",
},
["residential area"] = {
zh_name = "住宅區",
},
["housing estate"] = {
zh_name = "住宅區",
},
["planned community"] = {
zh_name = "計劃社區",
},
["administrative village"] = {
zh_name = "行政村",
zh_suffix = "村",
},
["barangay"] = {
-- Philippines
zh_name = "里",
},
["barrio"] = {
zh_name = "里",
},
["kibbutz"] = {
zh_name = "集體農場",
},
["ghost town"] = {
zh_name = "鬼城",
},
["unincorporated community"] = {
zh_name = "非建制社區",
},
["census-designated place"] = {
zh_name = "人口普查指定地區",
},
["military base"] = {
zh_name = "軍事基地",
},
["research station"] = {
zh_name = "研究站",
},
["home rule city"] = {
zh_name = "自治市",
},
["federal district"] = {
zh_name = "聯邦特區",
zh_suffix = "特區",
},
["independent city"] = {
zh_name = "獨立市",
},
["autonomous city"] = {
zh_name = "自治市",
},
["port city"] = {
zh_name = "港市",
},
["port town"] = {
zh_name = "港鎮",
},
["market town"] = {
zh_name = "市集鎮",
},
["resort town"] = {
zh_name = "度假鎮",
},
["new town"] = {
zh_name = "新市鎮",
},
-- -----------------------------------------------------------------------
-- Geographic / natural features
-- -----------------------------------------------------------------------
["continent"] = {
zh_name = "洲",
zh_suffix = "洲",
},
["continental region"] = {
zh_name = "大陸地區",
},
["ocean"] = {
zh_name = "洋",
zh_suffix = "洋",
},
["sea"] = {
zh_name = "海",
zh_suffix = "海",
},
["inland sea"] = {
zh_name = "內陸海",
},
["marginal sea"] = {
zh_name = "邊緣海",
},
["river"] = {
zh_name = "河",
zh_suffix = "河",
},
["lake"] = {
zh_name = "湖",
zh_suffix = "湖",
},
["reservoir"] = {
zh_name = "水庫",
zh_suffix = "水庫",
},
["stream"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["creek"] = {
zh_name = "溪",
zh_suffix = "溪",
},
["bay"] = {
zh_name = "灣",
zh_suffix = "灣",
},
["gulf"] = {
zh_name = "海灣",
zh_suffix = "海灣",
},
["fjord"] = {
zh_name = "峽灣",
},
["strait"] = {
zh_name = "海峽",
zh_suffix = "海峽",
},
["channel"] = {
zh_name = "水道",
zh_suffix = "水道",
},
["inlet"] = {
zh_name = "海灣",
zh_suffix = "灣",
},
["arm"] = {
zh_name = "海灣",
},
["island"] = {
zh_name = "島",
zh_suffix = "島",
},
["islet"] = {
zh_name = "小島",
zh_suffix = "島",
},
["island group"] = {
zh_name = "群島",
},
["archipelago"] = {
zh_name = "群島",
zh_suffix = "群島",
},
["atoll"] = {
zh_name = "環礁",
zh_suffix = "環礁",
},
["peninsula"] = {
zh_name = "半島",
zh_suffix = "半島",
},
["spit"] = {
zh_name = "沙嘴",
},
["cape"] = {
zh_name = "角",
zh_suffix = "角",
},
["headland"] = {
zh_name = "岬角",
},
["mountain"] = {
zh_name = "山",
zh_suffix = "山",
},
["hill"] = {
zh_name = "丘",
zh_suffix = "丘",
},
["mountain range"] = {
zh_name = "山脈",
zh_suffix = "山脈",
},
["mountain pass"] = {
zh_name = "山口",
},
["plateau"] = {
zh_name = "高原",
zh_suffix = "高原",
},
["valley"] = {
zh_name = "谷",
zh_suffix = "谷",
},
["glen"] = {
zh_name = "峽谷",
},
["volcano"] = {
zh_name = "火山",
zh_suffix = "火山",
},
["forest"] = {
zh_name = "林地",
zh_suffix = "林",
},
["moor"] = {
zh_name = "荒原",
},
["desert"] = {
zh_name = "沙漠",
zh_suffix = "沙漠",
},
["beach"] = {
zh_name = "海灘",
zh_suffix = "海灘",
},
["spring"] = {
zh_name = "泉",
zh_suffix = "泉",
},
["hot spring"] = {
zh_name = "溫泉",
zh_suffix = "溫泉",
},
["tributary"] = {
zh_name = "支流",
},
["distributary"] = {
zh_name = "分流",
},
-- -----------------------------------------------------------------------
-- Geographic / cultural regions (non-admin)
-- -----------------------------------------------------------------------
["geographic and cultural area"] = {
zh_name = "地區",
},
["geographic region"] = {
zh_name = "地理區域",
},
["historical region"] = {
zh_name = "歷史地區",
},
["historic region"] = {
zh_name = "歷史地區",
},
["cultural region"] = {
zh_name = "文化地區",
},
["subregion"] = {
zh_name = "次地區",
},
["macroregion"] = {
zh_name = "大區域",
},
-- -----------------------------------------------------------------------
-- Man-made structures
-- -----------------------------------------------------------------------
["airport"] = {
zh_name = "機場",
},
["port"] = {
zh_name = "港口",
},
["bridge"] = {
zh_name = "橋",
},
["road"] = {
zh_name = "道路",
},
["highway"] = {
zh_name = "公路",
},
["motorway"] = {
zh_name = "高速公路",
},
["street"] = {
zh_name = "街道",
},
["building"] = {
zh_name = "建築物",
},
["university"] = {
zh_name = "大學",
},
["park"] = {
zh_name = "公園",
},
["national park"] = {
zh_name = "國家公園",
},
["metro station"] = {
zh_name = "地鐵站",
},
["temple"] = {
zh_name = "廟宇",
},
["castle"] = {
zh_name = "城堡",
},
-- -----------------------------------------------------------------------
-- Misc / hypothetical
-- -----------------------------------------------------------------------
["fictional location"] = {
zh_name = "虛構地點",
},
["mythological location"] = {
zh_name = "神話地點",
},
["star"] = {
zh_name = "恆星",
},
["space station"] = {
zh_name = "太空站",
},
}
-- ---------------------------------------------------------------------------
-- Helper: look up zh_name for a placetype via fallback chain
-- ---------------------------------------------------------------------------
-- Looks up zh_name (and optionally zh_name_by_holonym_type) for a given
-- placetype, recursively following the enwikt fallback chain if needed.
-- Returns zh_name (string or table), zh_suffix (string or table or nil),
-- zh_name_by_holonym_type (table or nil).
-- `m_pt` should be the enwikt place-placetypes module (for fallback data).
function export.get_zh_placetype_props(placetype, m_pt)
local visited = {}
local current = placetype
while current and not visited[current] do
visited[current] = true
local zh = export.zh_placetype_data[current]
if zh and zh.zh_name then
return zh.zh_name, zh.zh_suffix, zh.zh_name_by_holonym_type
end
-- Follow enwikt fallback
if m_pt then
local ptdata = m_pt.placetype_data[current]
if ptdata and ptdata.fallback then
current = ptdata.fallback
-- Strip FORMER/ANCIENT prefixes from synthetic fallbacks like "FORMER settlement"
current = current:match("^FORMER (.+)$") or current:match("^ANCIENT (.+)$") or current
else
break
end
else
break
end
end
return nil, nil, nil
end
-- ---------------------------------------------------------------------------
-- Helper: resolve zh_name given holonym context
-- ---------------------------------------------------------------------------
-- Given the zh_name (possibly a table of variants) and zh_name_by_holonym_type,
-- and the holonym's placetype, return the appropriate Chinese name string.
-- If multiple variants, returns the array (caller joins with zh_strings.multi_name_sep).
function export.resolve_zh_name(zh_name, zh_name_by_holonym_type, holonym_placetype)
if zh_name_by_holonym_type and holonym_placetype then
local override = zh_name_by_holonym_type[holonym_placetype]
if override then
return override
end
end
return zh_name
end
-- ---------------------------------------------------------------------------
-- Helper: format zh_name for display (join variants with "/")
-- ---------------------------------------------------------------------------
function export.format_zh_name(zh_name_or_array)
if type(zh_name_or_array) == "table" then
return table.concat(zh_name_or_array, export.zh_strings.multi_name_sep)
end
return zh_name_or_array or ""
end
return export
99n9rtn0e9gepvxm97epdnb4iug5tik
Category:馬來語 大洲和大洲地區
14
3067274
9759617
9197962
2026-05-14T22:31:21Z
TongcyBot
83009
TongcyBot移动页面[[Category:馬來語 大洲]]至[[Category:馬來語 大洲及大陸地區]],不留重定向
9197962
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉伯語 大洲和大洲地區
14
3069593
9759613
9200313
2026-05-14T22:31:00Z
TongcyBot
83009
TongcyBot移动页面[[Category:阿拉伯語 大洲]]至[[Category:阿拉伯語 大洲及大陸地區]],不留重定向
9200313
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:諾曼語 大洲和大洲地區
14
3070418
9759610
9201149
2026-05-14T22:30:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:諾曼語 大洲]]至[[Category:諾曼語 大洲及大陸地區]],不留重定向
9201149
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:豪薩語 大洲和大洲地區
14
3070576
9759611
9201310
2026-05-14T22:30:48Z
TongcyBot
83009
TongcyBot移动页面[[Category:豪薩語 大洲]]至[[Category:豪薩語 大洲及大陸地區]],不留重定向
9201310
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:蒙古語 大洲和大洲地區
14
3073802
9759608
9204557
2026-05-14T22:30:33Z
TongcyBot
83009
TongcyBot移动页面[[Category:蒙古語 大洲]]至[[Category:蒙古語 大洲及大陸地區]],不留重定向
9204557
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:科西嘉語 大洲和大洲地區
14
3074796
9759600
9205554
2026-05-14T22:29:54Z
TongcyBot
83009
TongcyBot移动页面[[Category:科西嘉語 大洲]]至[[Category:科西嘉語 大洲及大陸地區]],不留重定向
9205554
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:漢志阿拉伯語 大洲和大洲地區
14
3077651
9759593
9208635
2026-05-14T22:29:19Z
TongcyBot
83009
TongcyBot移动页面[[Category:漢志阿拉伯語 大洲]]至[[Category:漢志阿拉伯語 大洲及大陸地區]],不留重定向
9208635
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:尼泊爾語 大洲和大洲地區
14
3087013
9759566
9219527
2026-05-14T22:26:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:尼泊爾語 大洲]]至[[Category:尼泊爾語 大洲及大陸地區]],不留重定向
9219527
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 大洲和大洲地區
14
3087119
9759568
9219634
2026-05-14T22:26:52Z
TongcyBot
83009
TongcyBot移动页面[[Category:巴什基爾語 大洲]]至[[Category:巴什基爾語 大洲及大陸地區]],不留重定向
9219634
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅曼什語 大洲和大洲地區
14
3087586
9759602
9220114
2026-05-14T22:30:03Z
TongcyBot
83009
TongcyBot移动页面[[Category:羅曼什語 大洲]]至[[Category:羅曼什語 大洲及大陸地區]],不留重定向
9220114
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:韃靼語 大洲和大洲地區
14
3096053
9759616
9228957
2026-05-14T22:31:19Z
TongcyBot
83009
TongcyBot移动页面[[Category:韃靼語 大洲]]至[[Category:韃靼語 大洲及大陸地區]],不留重定向
9228957
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 大洲和大洲地區
14
3096281
9759633
9229186
2026-05-14T23:24:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:保加利亞語 大洲]]至[[Category:保加利亞語 大洲及大陸地區]],不留重定向
9229186
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:吉爾吉斯語 大洲和大洲地區
14
3097032
9759556
9229937
2026-05-14T22:25:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:吉爾吉斯語 大洲]]至[[Category:吉爾吉斯語 大洲及大陸地區]],不留重定向
9229937
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:冰島語 大洲和大洲地區
14
3097264
9759634
9230170
2026-05-14T23:25:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:冰島語 大洲]]至[[Category:冰島語 大洲及大陸地區]],不留重定向
9230170
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古典亞美尼亞語 大洲和大洲地區
14
3106553
9759554
9240950
2026-05-14T22:25:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:古典亞美尼亞語 大洲]]至[[Category:古典亞美尼亞語 大洲及大陸地區]],不留重定向
9240950
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英格里亞語 大洲和大洲地區
14
3155153
9759606
9306379
2026-05-14T22:30:19Z
TongcyBot
83009
TongcyBot移动页面[[Category:英格里亞語 大洲]]至[[Category:英格里亞語 大洲及大陸地區]],不留重定向
9306379
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法羅語 大洲和大洲地區
14
3155811
9759585
9307285
2026-05-14T22:28:36Z
TongcyBot
83009
TongcyBot移动页面[[Category:法羅語 大洲]]至[[Category:法羅語 大洲及大陸地區]],不留重定向
9307285
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿羅馬尼亞語 大洲和大洲地區
14
3155813
9759615
9307288
2026-05-14T22:31:12Z
TongcyBot
83009
TongcyBot移动页面[[Category:阿羅馬尼亞語 大洲]]至[[Category:阿羅馬尼亞語 大洲及大陸地區]],不留重定向
9307288
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰語 大洲和大洲地區
14
3156929
9759592
9308959
2026-05-14T22:29:13Z
TongcyBot
83009
TongcyBot移动页面[[Category:泰語 大洲]]至[[Category:泰語 大洲及大陸地區]],不留重定向
9308959
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波斯語 大洲和大洲地區
14
3159342
9759587
9311851
2026-05-14T22:28:49Z
TongcyBot
83009
TongcyBot移动页面[[Category:波斯語 大洲]]至[[Category:波斯語 大洲及大陸地區]],不留重定向
9311851
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:卡舒比語 大洲和大洲地區
14
3308244
9759552
9516784
2026-05-14T22:25:33Z
TongcyBot
83009
TongcyBot移动页面[[Category:卡舒比語 大洲]]至[[Category:卡舒比語 大洲及大陸地區]],不留重定向
9516784
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:宗喀語 大洲和大洲地區
14
3313375
9759564
9522694
2026-05-14T22:26:37Z
TongcyBot
83009
TongcyBot移动页面[[Category:宗喀語 大洲]]至[[Category:宗喀語 大洲及大陸地區]],不留重定向
9522694
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土庫曼語 大洲和大洲地區
14
3337675
9759557
9601258
2026-05-14T22:26:04Z
TongcyBot
83009
TongcyBot移动页面[[Category:土庫曼語 大洲]]至[[Category:土庫曼語 大洲及大陸地區]],不留重定向
9601258
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意第緒語 大洲和大洲地區
14
3346051
9759575
9617790
2026-05-14T22:27:31Z
TongcyBot
83009
TongcyBot移动页面[[Category:意第緒語 大洲]]至[[Category:意第緒語 大洲及大陸地區]],不留重定向
9617790
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:弗留利語 大洲和大洲地區
14
3401078
9759572
9706086
2026-05-14T22:27:20Z
TongcyBot
83009
TongcyBot移动页面[[Category:弗留利語 大洲]]至[[Category:弗留利語 大洲及大陸地區]],不留重定向
9706086
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:彭林語 大洲和大洲地區
14
3401084
9759573
9706092
2026-05-14T22:27:23Z
TongcyBot
83009
TongcyBot移动页面[[Category:彭林語 大洲]]至[[Category:彭林語 大洲及大陸地區]],不留重定向
9706092
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:Place/locations
828
3437749
9759401
9759346
2026-05-14T13:53:01Z
TongcyDai
53191
// Edit via Wikiplus
9759401
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
-----------------------------------------------------------------------------------
-- Countries --
-----------------------------------------------------------------------------------
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
-----------------------------------------------------------------------------------
-- Country-like entities --
-----------------------------------------------------------------------------------
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
-----------------------------------------------------------------------------------
-- Former countries --
-----------------------------------------------------------------------------------
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- United States states --
-----------------------------------------------------------------------------------
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
-----------------------------------------------------------------------------------
-- United Kingdom constituent countries --
-----------------------------------------------------------------------------------
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
-- Counties of Ireland
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
-----------------------------------------------------------------------------------
-- China provinces --
-----------------------------------------------------------------------------------
export.china_provinces = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西壯族自治區"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西"] = {alias_of = "廣西壯族自治區"},
["內蒙古自治區"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古"] = {alias_of = "內蒙古自治區"},
["寧夏回族自治區"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏"] = {alias_of = "寧夏回族自治區"},
["西藏自治區"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏"] = {alias_of = "西藏自治區"},
["新疆維吾爾自治區"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆"] = {alias_of = "新疆維吾爾自治區"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces,
}
-----------------------------------------------------------------------------------
-- Taiwan counties --
-----------------------------------------------------------------------------------
-- Note: In zhwikt, Taiwan county keys use Chinese names directly.
-- The enwikt-style lookup `taiwan_counties["Chiayi County, Taiwan"]` will return nil
-- (correct: no English suffix auto-detection for Chinese holonym names).
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["彰化"] = {alias_of = "彰化縣", display = true},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["花蓮"] = {alias_of = "花蓮縣", display = true},
["金門縣"] = {wp = "金門縣"},
["金門"] = {alias_of = "金門縣", display = true},
["連江縣"] = {wp = "連江縣"},
["連江"] = {alias_of = "連江縣", display = true},
["苗栗縣"] = {wp = "苗栗縣"},
["苗栗"] = {alias_of = "苗栗縣", display = true},
["南投縣"] = {wp = "南投縣"},
["南投"] = {alias_of = "南投縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["屏東縣"] = {wp = "屏東縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["宜蘭縣"] = {wp = "宜蘭縣"},
["宜蘭"] = {alias_of = "宜蘭縣", display = true},
["雲林縣"] = {wp = "雲林縣"},
["雲林"] = {alias_of = "雲林縣", display = true},
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["基隆"] = {alias_of = "基隆市", display = true},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["新北"] = {alias_of = "新北市", display = true},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["桃園"] = {alias_of = "桃園市", display = true},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺中"] = {alias_of = "臺中市", display = true},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["臺南"] = {alias_of = "臺南市", display = true},
["高雄"] = {placetype = "special municipality", wp = "高雄市"},
["高雄市"] = {alias_of = "高雄市", display = true},
["嘉義"] = {placetype = "city", wp = "嘉義市"},
["新竹"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
["基隆"] = {alias_of = "基隆市", display = true},
}
export.taiwan_group = {
placename_to_key = false,
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
-----------------------------------------------------------------------------------
-- Canada provinces and territories --
-----------------------------------------------------------------------------------
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Australia states and territories --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
-----------------------------------------------------------------------------------
-- India states and union territories --
-----------------------------------------------------------------------------------
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
-----------------------------------------------------------------------------------
-- Japan prefectures --
-----------------------------------------------------------------------------------
-- Note: export.japan_prefectures is accessed directly by place-placetypes.lua
-- using English-style keys (e.g. "Tokyo Prefecture, Japan"). Those lookups return
-- nil for Chinese keys, which is correct: no English "Prefecture" suffix is added.
export.japan_prefectures = {
["北海道"] = {placetype = {"prefecture"}, wp = "Hokkaido"},
["青森縣"] = {wp = "Aomori Prefecture"},
["岩手縣"] = {wp = "Iwate Prefecture"},
["宮城縣"] = {wp = "Miyagi Prefecture"},
["秋田縣"] = {wp = "Akita Prefecture"},
["山形縣"] = {wp = "Yamagata Prefecture"},
["福島縣"] = {wp = "Fukushima Prefecture"},
["茨城縣"] = {wp = "Ibaraki Prefecture"},
["栃木縣"] = {wp = "Tochigi Prefecture"},
["群馬縣"] = {wp = "Gunma Prefecture"},
["埼玉縣"] = {wp = "Saitama Prefecture"},
["千葉縣"] = {wp = "Chiba Prefecture"},
["東京都"] = {placetype = {"prefecture"}, wp = "Tokyo"},
["神奈川縣"] = {wp = "Kanagawa Prefecture"},
["新潟縣"] = {wp = "Niigata Prefecture"},
["富山縣"] = {wp = "Toyama Prefecture"},
["石川縣"] = {wp = "Ishikawa Prefecture"},
["福井縣"] = {wp = "Fukui Prefecture"},
["山梨縣"] = {wp = "Yamanashi Prefecture"},
["長野縣"] = {wp = "Nagano Prefecture"},
["岐阜縣"] = {wp = "Gifu Prefecture"},
["靜岡縣"] = {wp = "Shizuoka Prefecture"},
["愛知縣"] = {wp = "Aichi Prefecture"},
["三重縣"] = {wp = "Mie Prefecture"},
["滋賀縣"] = {wp = "Shiga Prefecture"},
["京都府"] = {placetype = {"prefecture"}, wp = "Kyoto Prefecture"},
["大阪府"] = {placetype = {"prefecture"}, wp = "Osaka Prefecture"},
["兵庫縣"] = {wp = "Hyogo Prefecture"},
["奈良縣"] = {wp = "Nara Prefecture"},
["和歌山縣"] = {wp = "Wakayama Prefecture"},
["鳥取縣"] = {wp = "Tottori Prefecture"},
["島根縣"] = {wp = "Shimane Prefecture"},
["岡山縣"] = {wp = "Okayama Prefecture"},
["廣島縣"] = {wp = "Hiroshima Prefecture"},
["山口縣"] = {wp = "Yamaguchi Prefecture"},
["德島縣"] = {wp = "Tokushima Prefecture"},
["香川縣"] = {wp = "Kagawa Prefecture"},
["愛媛縣"] = {wp = "Ehime Prefecture"},
["高知縣"] = {wp = "Kochi Prefecture"},
["福岡縣"] = {wp = "Fukuoka Prefecture"},
["佐賀縣"] = {wp = "Saga Prefecture"},
["長崎縣"] = {wp = "Nagasaki Prefecture"},
["熊本縣"] = {wp = "Kumamoto Prefecture"},
["大分縣"] = {wp = "Oita Prefecture"},
["宮崎縣"] = {wp = "Miyazaki Prefecture"},
["鹿兒島縣"] = {wp = "Kagoshima Prefecture"},
["沖繩縣"] = {wp = "Okinawa Prefecture"},
}
export.japan_group = {
placename_to_key = false,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
-----------------------------------------------------------------------------------
-- Germany states (Bundesländer) --
-----------------------------------------------------------------------------------
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
-----------------------------------------------------------------------------------
-- Italy regions (Regioni) --
-----------------------------------------------------------------------------------
export.italy_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_regions,
}
-----------------------------------------------------------------------------------
-- Spain autonomous communities (Comunidades autónomas) --
-----------------------------------------------------------------------------------
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
-----------------------------------------------------------------------------------
-- China prefecture-level cities --
-- Mirrors enwikt china_prefecture_level_cities (168 entries) and --
-- china_prefecture_level_cities_2 (4 entries, merged here since Chinese names --
-- are unambiguous: 台州/泰州, 蘇州/宿州 do not clash). --
-----------------------------------------------------------------------------------
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
-----------------------------------------------------------------------------------
-- New York City boroughs --
-----------------------------------------------------------------------------------
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
-----------------------------------------------------------------------------------
-- Romania counties --
-----------------------------------------------------------------------------------
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
-----------------------------------------------------------------------------------
-- Bulgaria provinces --
-----------------------------------------------------------------------------------
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
default_placetype = "province",
data = export.bulgaria_provinces,
}
-----------------------------------------------------------------------------------
-- Iran provinces --
-----------------------------------------------------------------------------------
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
-----------------------------------------------------------------------------------
-- Laos provinces --
-----------------------------------------------------------------------------------
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
-----------------------------------------------------------------------------------
-- North Korea provinces --
-----------------------------------------------------------------------------------
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
-----------------------------------------------------------------------------------
-- South Korea provinces --
-----------------------------------------------------------------------------------
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
-----------------------------------------------------------------------------------
-- Thailand provinces --
-----------------------------------------------------------------------------------
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
-----------------------------------------------------------------------------------
-- Turkey provinces --
-----------------------------------------------------------------------------------
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
-----------------------------------------------------------------------------------
-- Vietnam provinces --
-----------------------------------------------------------------------------------
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
-----------------------------------------------------------------------------------
-- Nigeria states --
-----------------------------------------------------------------------------------
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
-----------------------------------------------------------------------------------
-- Brazil states (for testcase coverage) --
-----------------------------------------------------------------------------------
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-----------------------------------------------------------------------------------
-- France regions --
-----------------------------------------------------------------------------------
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
-----------------------------------------------------------------------------------
-- Austria states --
-----------------------------------------------------------------------------------
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
-----------------------------------------------------------------------------------
-- Bangladesh divisions --
-----------------------------------------------------------------------------------
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
-----------------------------------------------------------------------------------
-- Egypt governorates --
-----------------------------------------------------------------------------------
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
-----------------------------------------------------------------------------------
-- Finland regions --
-----------------------------------------------------------------------------------
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
-----------------------------------------------------------------------------------
-- Greece regions --
-----------------------------------------------------------------------------------
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
-----------------------------------------------------------------------------------
-- Indonesia provinces --
-----------------------------------------------------------------------------------
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
-----------------------------------------------------------------------------------
-- Lebanon governorates --
-----------------------------------------------------------------------------------
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
-----------------------------------------------------------------------------------
-- Malaysia states --
-----------------------------------------------------------------------------------
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
-----------------------------------------------------------------------------------
-- Malta regions --
-----------------------------------------------------------------------------------
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
-----------------------------------------------------------------------------------
-- Mexico states --
-----------------------------------------------------------------------------------
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
-----------------------------------------------------------------------------------
-- Moldova districts and ATUs --
-----------------------------------------------------------------------------------
export.moldova_districts = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts,
}
-----------------------------------------------------------------------------------
-- Morocco regions --
-----------------------------------------------------------------------------------
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
-----------------------------------------------------------------------------------
-- Netherlands provinces --
-----------------------------------------------------------------------------------
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
-----------------------------------------------------------------------------------
-- New Zealand regions --
-----------------------------------------------------------------------------------
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
-----------------------------------------------------------------------------------
-- Norway counties --
-----------------------------------------------------------------------------------
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
-----------------------------------------------------------------------------------
-- Pakistan provinces and territories --
-----------------------------------------------------------------------------------
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Philippines provinces --
-----------------------------------------------------------------------------------
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
-----------------------------------------------------------------------------------
-- Poland voivodeships --
-----------------------------------------------------------------------------------
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
-----------------------------------------------------------------------------------
-- Portugal districts and autonomous regions --
-----------------------------------------------------------------------------------
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
-----------------------------------------------------------------------------------
-- Russia federal subjects --
-----------------------------------------------------------------------------------
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
-----------------------------------------------------------------------------------
-- Saudi Arabia provinces --
-----------------------------------------------------------------------------------
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
-----------------------------------------------------------------------------------
-- South Africa provinces --
-----------------------------------------------------------------------------------
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
-----------------------------------------------------------------------------------
-- Ukraine oblasts --
-----------------------------------------------------------------------------------
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
-----------------------------------------------------------------------------------
-- Wales principal areas --
-----------------------------------------------------------------------------------
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {container = "東京都", wp = "Tokyo", placetype = {"city", "prefecture"}},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "Mexico City"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
axf181qrkf2cb5kiakb18fp42htoedv
9759408
9759401
2026-05-14T14:09:09Z
TongcyDai
53191
9759408
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
-----------------------------------------------------------------------------------
-- Countries --
-----------------------------------------------------------------------------------
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
-----------------------------------------------------------------------------------
-- Country-like entities --
-----------------------------------------------------------------------------------
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
-----------------------------------------------------------------------------------
-- Former countries --
-----------------------------------------------------------------------------------
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- United States states --
-----------------------------------------------------------------------------------
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
-----------------------------------------------------------------------------------
-- United Kingdom constituent countries --
-----------------------------------------------------------------------------------
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
-- Counties of Ireland
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
-----------------------------------------------------------------------------------
-- China provinces --
-----------------------------------------------------------------------------------
export.china_provinces = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西壯族自治區"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西"] = {alias_of = "廣西壯族自治區"},
["內蒙古自治區"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古"] = {alias_of = "內蒙古自治區"},
["寧夏回族自治區"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏"] = {alias_of = "寧夏回族自治區"},
["西藏自治區"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏"] = {alias_of = "西藏自治區"},
["新疆維吾爾自治區"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆"] = {alias_of = "新疆維吾爾自治區"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces,
}
-----------------------------------------------------------------------------------
-- Taiwan counties --
-----------------------------------------------------------------------------------
-- Note: In zhwikt, Taiwan county keys use Chinese names directly.
-- The enwikt-style lookup `taiwan_counties["Chiayi County, Taiwan"]` will return nil
-- (correct: no English suffix auto-detection for Chinese holonym names).
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["彰化"] = {alias_of = "彰化縣", display = true},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["花蓮"] = {alias_of = "花蓮縣", display = true},
["金門縣"] = {wp = "金門縣"},
["金門"] = {alias_of = "金門縣", display = true},
["連江縣"] = {wp = "連江縣"},
["連江"] = {alias_of = "連江縣", display = true},
["苗栗縣"] = {wp = "苗栗縣"},
["苗栗"] = {alias_of = "苗栗縣", display = true},
["南投縣"] = {wp = "南投縣"},
["南投"] = {alias_of = "南投縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["屏東縣"] = {wp = "屏東縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["宜蘭縣"] = {wp = "宜蘭縣"},
["宜蘭"] = {alias_of = "宜蘭縣", display = true},
["雲林縣"] = {wp = "雲林縣"},
["雲林"] = {alias_of = "雲林縣", display = true},
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["基隆"] = {alias_of = "基隆市", display = true},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["新北"] = {alias_of = "新北市", display = true},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["桃園"] = {alias_of = "桃園市", display = true},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺中"] = {alias_of = "臺中市", display = true},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["臺南"] = {alias_of = "臺南市", display = true},
["高雄"] = {placetype = "special municipality", wp = "高雄市"},
["高雄市"] = {alias_of = "高雄市", display = true},
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
["基隆"] = {alias_of = "基隆市", display = true},
}
export.taiwan_group = {
placename_to_key = false,
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
-----------------------------------------------------------------------------------
-- Canada provinces and territories --
-----------------------------------------------------------------------------------
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Australia states and territories --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
-----------------------------------------------------------------------------------
-- India states and union territories --
-----------------------------------------------------------------------------------
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
-----------------------------------------------------------------------------------
-- Japan prefectures --
-----------------------------------------------------------------------------------
-- Note: export.japan_prefectures is accessed directly by place-placetypes.lua
-- using English-style keys (e.g. "Tokyo Prefecture, Japan"). Those lookups return
-- nil for Chinese keys, which is correct: no English "Prefecture" suffix is added.
export.japan_prefectures = {
["北海道"] = {placetype = {"prefecture"}, wp = "Hokkaido"},
["青森縣"] = {wp = "Aomori Prefecture"},
["岩手縣"] = {wp = "Iwate Prefecture"},
["宮城縣"] = {wp = "Miyagi Prefecture"},
["秋田縣"] = {wp = "Akita Prefecture"},
["山形縣"] = {wp = "Yamagata Prefecture"},
["福島縣"] = {wp = "Fukushima Prefecture"},
["茨城縣"] = {wp = "Ibaraki Prefecture"},
["栃木縣"] = {wp = "Tochigi Prefecture"},
["群馬縣"] = {wp = "Gunma Prefecture"},
["埼玉縣"] = {wp = "Saitama Prefecture"},
["千葉縣"] = {wp = "Chiba Prefecture"},
["東京都"] = {placetype = {"prefecture"}, wp = "Tokyo"},
["神奈川縣"] = {wp = "Kanagawa Prefecture"},
["新潟縣"] = {wp = "Niigata Prefecture"},
["富山縣"] = {wp = "Toyama Prefecture"},
["石川縣"] = {wp = "Ishikawa Prefecture"},
["福井縣"] = {wp = "Fukui Prefecture"},
["山梨縣"] = {wp = "Yamanashi Prefecture"},
["長野縣"] = {wp = "Nagano Prefecture"},
["岐阜縣"] = {wp = "Gifu Prefecture"},
["靜岡縣"] = {wp = "Shizuoka Prefecture"},
["愛知縣"] = {wp = "Aichi Prefecture"},
["三重縣"] = {wp = "Mie Prefecture"},
["滋賀縣"] = {wp = "Shiga Prefecture"},
["京都府"] = {placetype = {"prefecture"}, wp = "Kyoto Prefecture"},
["大阪府"] = {placetype = {"prefecture"}, wp = "Osaka Prefecture"},
["兵庫縣"] = {wp = "Hyogo Prefecture"},
["奈良縣"] = {wp = "Nara Prefecture"},
["和歌山縣"] = {wp = "Wakayama Prefecture"},
["鳥取縣"] = {wp = "Tottori Prefecture"},
["島根縣"] = {wp = "Shimane Prefecture"},
["岡山縣"] = {wp = "Okayama Prefecture"},
["廣島縣"] = {wp = "Hiroshima Prefecture"},
["山口縣"] = {wp = "Yamaguchi Prefecture"},
["德島縣"] = {wp = "Tokushima Prefecture"},
["香川縣"] = {wp = "Kagawa Prefecture"},
["愛媛縣"] = {wp = "Ehime Prefecture"},
["高知縣"] = {wp = "Kochi Prefecture"},
["福岡縣"] = {wp = "Fukuoka Prefecture"},
["佐賀縣"] = {wp = "Saga Prefecture"},
["長崎縣"] = {wp = "Nagasaki Prefecture"},
["熊本縣"] = {wp = "Kumamoto Prefecture"},
["大分縣"] = {wp = "Oita Prefecture"},
["宮崎縣"] = {wp = "Miyazaki Prefecture"},
["鹿兒島縣"] = {wp = "Kagoshima Prefecture"},
["沖繩縣"] = {wp = "Okinawa Prefecture"},
}
export.japan_group = {
placename_to_key = false,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
-----------------------------------------------------------------------------------
-- Germany states (Bundesländer) --
-----------------------------------------------------------------------------------
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
-----------------------------------------------------------------------------------
-- Italy regions (Regioni) --
-----------------------------------------------------------------------------------
export.italy_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_regions,
}
-----------------------------------------------------------------------------------
-- Spain autonomous communities (Comunidades autónomas) --
-----------------------------------------------------------------------------------
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
-----------------------------------------------------------------------------------
-- China prefecture-level cities --
-- Mirrors enwikt china_prefecture_level_cities (168 entries) and --
-- china_prefecture_level_cities_2 (4 entries, merged here since Chinese names --
-- are unambiguous: 台州/泰州, 蘇州/宿州 do not clash). --
-----------------------------------------------------------------------------------
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
-----------------------------------------------------------------------------------
-- New York City boroughs --
-----------------------------------------------------------------------------------
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
-----------------------------------------------------------------------------------
-- Romania counties --
-----------------------------------------------------------------------------------
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
-----------------------------------------------------------------------------------
-- Bulgaria provinces --
-----------------------------------------------------------------------------------
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
default_placetype = "province",
data = export.bulgaria_provinces,
}
-----------------------------------------------------------------------------------
-- Iran provinces --
-----------------------------------------------------------------------------------
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
-----------------------------------------------------------------------------------
-- Laos provinces --
-----------------------------------------------------------------------------------
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
-----------------------------------------------------------------------------------
-- North Korea provinces --
-----------------------------------------------------------------------------------
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
-----------------------------------------------------------------------------------
-- South Korea provinces --
-----------------------------------------------------------------------------------
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
-----------------------------------------------------------------------------------
-- Thailand provinces --
-----------------------------------------------------------------------------------
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
-----------------------------------------------------------------------------------
-- Turkey provinces --
-----------------------------------------------------------------------------------
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
-----------------------------------------------------------------------------------
-- Vietnam provinces --
-----------------------------------------------------------------------------------
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
-----------------------------------------------------------------------------------
-- Nigeria states --
-----------------------------------------------------------------------------------
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
-----------------------------------------------------------------------------------
-- Brazil states (for testcase coverage) --
-----------------------------------------------------------------------------------
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-----------------------------------------------------------------------------------
-- France regions --
-----------------------------------------------------------------------------------
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
-----------------------------------------------------------------------------------
-- Austria states --
-----------------------------------------------------------------------------------
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
-----------------------------------------------------------------------------------
-- Bangladesh divisions --
-----------------------------------------------------------------------------------
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
-----------------------------------------------------------------------------------
-- Egypt governorates --
-----------------------------------------------------------------------------------
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
-----------------------------------------------------------------------------------
-- Finland regions --
-----------------------------------------------------------------------------------
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
-----------------------------------------------------------------------------------
-- Greece regions --
-----------------------------------------------------------------------------------
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
-----------------------------------------------------------------------------------
-- Indonesia provinces --
-----------------------------------------------------------------------------------
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
-----------------------------------------------------------------------------------
-- Lebanon governorates --
-----------------------------------------------------------------------------------
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
-----------------------------------------------------------------------------------
-- Malaysia states --
-----------------------------------------------------------------------------------
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
-----------------------------------------------------------------------------------
-- Malta regions --
-----------------------------------------------------------------------------------
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
-----------------------------------------------------------------------------------
-- Mexico states --
-----------------------------------------------------------------------------------
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
-----------------------------------------------------------------------------------
-- Moldova districts and ATUs --
-----------------------------------------------------------------------------------
export.moldova_districts = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts,
}
-----------------------------------------------------------------------------------
-- Morocco regions --
-----------------------------------------------------------------------------------
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
-----------------------------------------------------------------------------------
-- Netherlands provinces --
-----------------------------------------------------------------------------------
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
-----------------------------------------------------------------------------------
-- New Zealand regions --
-----------------------------------------------------------------------------------
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
-----------------------------------------------------------------------------------
-- Norway counties --
-----------------------------------------------------------------------------------
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
-----------------------------------------------------------------------------------
-- Pakistan provinces and territories --
-----------------------------------------------------------------------------------
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Philippines provinces --
-----------------------------------------------------------------------------------
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
-----------------------------------------------------------------------------------
-- Poland voivodeships --
-----------------------------------------------------------------------------------
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
-----------------------------------------------------------------------------------
-- Portugal districts and autonomous regions --
-----------------------------------------------------------------------------------
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
-----------------------------------------------------------------------------------
-- Russia federal subjects --
-----------------------------------------------------------------------------------
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
-----------------------------------------------------------------------------------
-- Saudi Arabia provinces --
-----------------------------------------------------------------------------------
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
-----------------------------------------------------------------------------------
-- South Africa provinces --
-----------------------------------------------------------------------------------
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
-----------------------------------------------------------------------------------
-- Ukraine oblasts --
-----------------------------------------------------------------------------------
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
-----------------------------------------------------------------------------------
-- Wales principal areas --
-----------------------------------------------------------------------------------
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {container = "東京都", wp = "Tokyo", placetype = {"city", "prefecture"}},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "Mexico City"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
lntnb98t9bg7sp9pu5kns5dlrb0lku8
9759415
9759408
2026-05-14T14:41:36Z
TongcyDai
53191
9759415
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
-----------------------------------------------------------------------------------
-- Countries --
-----------------------------------------------------------------------------------
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
-----------------------------------------------------------------------------------
-- Country-like entities --
-----------------------------------------------------------------------------------
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
-----------------------------------------------------------------------------------
-- Former countries --
-----------------------------------------------------------------------------------
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- United States states --
-----------------------------------------------------------------------------------
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
-----------------------------------------------------------------------------------
-- United Kingdom constituent countries --
-----------------------------------------------------------------------------------
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
-- Counties of Ireland
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
-----------------------------------------------------------------------------------
-- China provinces --
-----------------------------------------------------------------------------------
export.china_provinces = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西壯族自治區"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西"] = {alias_of = "廣西壯族自治區"},
["內蒙古自治區"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古"] = {alias_of = "內蒙古自治區"},
["寧夏回族自治區"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏"] = {alias_of = "寧夏回族自治區"},
["西藏自治區"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏"] = {alias_of = "西藏自治區"},
["新疆維吾爾自治區"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆"] = {alias_of = "新疆維吾爾自治區"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces,
}
-----------------------------------------------------------------------------------
-- Taiwan counties --
-----------------------------------------------------------------------------------
-- Note: In zhwikt, Taiwan county keys use Chinese names directly.
-- The enwikt-style lookup `taiwan_counties["Chiayi County, Taiwan"]` will return nil
-- (correct: no English suffix auto-detection for Chinese holonym names).
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["彰化"] = {alias_of = "彰化縣", display = true},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["花蓮"] = {alias_of = "花蓮縣", display = true},
["金門縣"] = {wp = "金門縣"},
["金門"] = {alias_of = "金門縣", display = true},
["連江縣"] = {wp = "連江縣"},
["連江"] = {alias_of = "連江縣", display = true},
["苗栗縣"] = {wp = "苗栗縣"},
["苗栗"] = {alias_of = "苗栗縣", display = true},
["南投縣"] = {wp = "南投縣"},
["南投"] = {alias_of = "南投縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["屏東縣"] = {wp = "屏東縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["澎湖縣"] = {wp = "澎湖縣"},
["澎湖"] = {alias_of = "澎湖縣", display = true},
["宜蘭縣"] = {wp = "宜蘭縣"},
["宜蘭"] = {alias_of = "宜蘭縣", display = true},
["雲林縣"] = {wp = "雲林縣"},
["雲林"] = {alias_of = "雲林縣", display = true},
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["臺北"] = {alias_of = "臺北市", display = true},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["新北"] = {alias_of = "新北市", display = true},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["桃園"] = {alias_of = "桃園市", display = true},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺中"] = {alias_of = "臺中市", display = true},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["臺南"] = {alias_of = "臺南市", display = true},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
["高雄"] = {alias_of = "高雄市", display = true},
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
["基隆"] = {alias_of = "基隆市", display = true},
}
export.taiwan_group = {
placename_to_key = false,
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
-----------------------------------------------------------------------------------
-- Canada provinces and territories --
-----------------------------------------------------------------------------------
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Australia states and territories --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
-----------------------------------------------------------------------------------
-- India states and union territories --
-----------------------------------------------------------------------------------
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
-----------------------------------------------------------------------------------
-- Japan prefectures --
-----------------------------------------------------------------------------------
-- Note: export.japan_prefectures is accessed directly by place-placetypes.lua
-- using English-style keys (e.g. "Tokyo Prefecture, Japan"). Those lookups return
-- nil for Chinese keys, which is correct: no English "Prefecture" suffix is added.
export.japan_prefectures = {
["北海道"] = {placetype = {"prefecture"}, wp = "Hokkaido"},
["青森縣"] = {wp = "Aomori Prefecture"},
["岩手縣"] = {wp = "Iwate Prefecture"},
["宮城縣"] = {wp = "Miyagi Prefecture"},
["秋田縣"] = {wp = "Akita Prefecture"},
["山形縣"] = {wp = "Yamagata Prefecture"},
["福島縣"] = {wp = "Fukushima Prefecture"},
["茨城縣"] = {wp = "Ibaraki Prefecture"},
["栃木縣"] = {wp = "Tochigi Prefecture"},
["群馬縣"] = {wp = "Gunma Prefecture"},
["埼玉縣"] = {wp = "Saitama Prefecture"},
["千葉縣"] = {wp = "Chiba Prefecture"},
["東京都"] = {placetype = {"prefecture"}, wp = "Tokyo"},
["神奈川縣"] = {wp = "Kanagawa Prefecture"},
["新潟縣"] = {wp = "Niigata Prefecture"},
["富山縣"] = {wp = "Toyama Prefecture"},
["石川縣"] = {wp = "Ishikawa Prefecture"},
["福井縣"] = {wp = "Fukui Prefecture"},
["山梨縣"] = {wp = "Yamanashi Prefecture"},
["長野縣"] = {wp = "Nagano Prefecture"},
["岐阜縣"] = {wp = "Gifu Prefecture"},
["靜岡縣"] = {wp = "Shizuoka Prefecture"},
["愛知縣"] = {wp = "Aichi Prefecture"},
["三重縣"] = {wp = "Mie Prefecture"},
["滋賀縣"] = {wp = "Shiga Prefecture"},
["京都府"] = {placetype = {"prefecture"}, wp = "Kyoto Prefecture"},
["大阪府"] = {placetype = {"prefecture"}, wp = "Osaka Prefecture"},
["兵庫縣"] = {wp = "Hyogo Prefecture"},
["奈良縣"] = {wp = "Nara Prefecture"},
["和歌山縣"] = {wp = "Wakayama Prefecture"},
["鳥取縣"] = {wp = "Tottori Prefecture"},
["島根縣"] = {wp = "Shimane Prefecture"},
["岡山縣"] = {wp = "Okayama Prefecture"},
["廣島縣"] = {wp = "Hiroshima Prefecture"},
["山口縣"] = {wp = "Yamaguchi Prefecture"},
["德島縣"] = {wp = "Tokushima Prefecture"},
["香川縣"] = {wp = "Kagawa Prefecture"},
["愛媛縣"] = {wp = "Ehime Prefecture"},
["高知縣"] = {wp = "Kochi Prefecture"},
["福岡縣"] = {wp = "Fukuoka Prefecture"},
["佐賀縣"] = {wp = "Saga Prefecture"},
["長崎縣"] = {wp = "Nagasaki Prefecture"},
["熊本縣"] = {wp = "Kumamoto Prefecture"},
["大分縣"] = {wp = "Oita Prefecture"},
["宮崎縣"] = {wp = "Miyazaki Prefecture"},
["鹿兒島縣"] = {wp = "Kagoshima Prefecture"},
["沖繩縣"] = {wp = "Okinawa Prefecture"},
}
export.japan_group = {
placename_to_key = false,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
-----------------------------------------------------------------------------------
-- Germany states (Bundesländer) --
-----------------------------------------------------------------------------------
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
-----------------------------------------------------------------------------------
-- Italy regions (Regioni) --
-----------------------------------------------------------------------------------
export.italy_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_regions,
}
-----------------------------------------------------------------------------------
-- Spain autonomous communities (Comunidades autónomas) --
-----------------------------------------------------------------------------------
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
-----------------------------------------------------------------------------------
-- China prefecture-level cities --
-- Mirrors enwikt china_prefecture_level_cities (168 entries) and --
-- china_prefecture_level_cities_2 (4 entries, merged here since Chinese names --
-- are unambiguous: 台州/泰州, 蘇州/宿州 do not clash). --
-----------------------------------------------------------------------------------
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
-----------------------------------------------------------------------------------
-- New York City boroughs --
-----------------------------------------------------------------------------------
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
-----------------------------------------------------------------------------------
-- Romania counties --
-----------------------------------------------------------------------------------
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
-----------------------------------------------------------------------------------
-- Bulgaria provinces --
-----------------------------------------------------------------------------------
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
default_placetype = "province",
data = export.bulgaria_provinces,
}
-----------------------------------------------------------------------------------
-- Iran provinces --
-----------------------------------------------------------------------------------
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
-----------------------------------------------------------------------------------
-- Laos provinces --
-----------------------------------------------------------------------------------
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
-----------------------------------------------------------------------------------
-- North Korea provinces --
-----------------------------------------------------------------------------------
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
-----------------------------------------------------------------------------------
-- South Korea provinces --
-----------------------------------------------------------------------------------
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
-----------------------------------------------------------------------------------
-- Thailand provinces --
-----------------------------------------------------------------------------------
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
-----------------------------------------------------------------------------------
-- Turkey provinces --
-----------------------------------------------------------------------------------
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
-----------------------------------------------------------------------------------
-- Vietnam provinces --
-----------------------------------------------------------------------------------
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
-----------------------------------------------------------------------------------
-- Nigeria states --
-----------------------------------------------------------------------------------
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
-----------------------------------------------------------------------------------
-- Brazil states (for testcase coverage) --
-----------------------------------------------------------------------------------
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-----------------------------------------------------------------------------------
-- France regions --
-----------------------------------------------------------------------------------
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
-----------------------------------------------------------------------------------
-- Austria states --
-----------------------------------------------------------------------------------
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
-----------------------------------------------------------------------------------
-- Bangladesh divisions --
-----------------------------------------------------------------------------------
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
-----------------------------------------------------------------------------------
-- Egypt governorates --
-----------------------------------------------------------------------------------
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
-----------------------------------------------------------------------------------
-- Finland regions --
-----------------------------------------------------------------------------------
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
-----------------------------------------------------------------------------------
-- Greece regions --
-----------------------------------------------------------------------------------
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
-----------------------------------------------------------------------------------
-- Indonesia provinces --
-----------------------------------------------------------------------------------
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
-----------------------------------------------------------------------------------
-- Lebanon governorates --
-----------------------------------------------------------------------------------
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
-----------------------------------------------------------------------------------
-- Malaysia states --
-----------------------------------------------------------------------------------
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
-----------------------------------------------------------------------------------
-- Malta regions --
-----------------------------------------------------------------------------------
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
-----------------------------------------------------------------------------------
-- Mexico states --
-----------------------------------------------------------------------------------
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
-----------------------------------------------------------------------------------
-- Moldova districts and ATUs --
-----------------------------------------------------------------------------------
export.moldova_districts = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts,
}
-----------------------------------------------------------------------------------
-- Morocco regions --
-----------------------------------------------------------------------------------
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
-----------------------------------------------------------------------------------
-- Netherlands provinces --
-----------------------------------------------------------------------------------
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
-----------------------------------------------------------------------------------
-- New Zealand regions --
-----------------------------------------------------------------------------------
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
-----------------------------------------------------------------------------------
-- Norway counties --
-----------------------------------------------------------------------------------
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
-----------------------------------------------------------------------------------
-- Pakistan provinces and territories --
-----------------------------------------------------------------------------------
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Philippines provinces --
-----------------------------------------------------------------------------------
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
-----------------------------------------------------------------------------------
-- Poland voivodeships --
-----------------------------------------------------------------------------------
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
-----------------------------------------------------------------------------------
-- Portugal districts and autonomous regions --
-----------------------------------------------------------------------------------
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
-----------------------------------------------------------------------------------
-- Russia federal subjects --
-----------------------------------------------------------------------------------
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
-----------------------------------------------------------------------------------
-- Saudi Arabia provinces --
-----------------------------------------------------------------------------------
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
-----------------------------------------------------------------------------------
-- South Africa provinces --
-----------------------------------------------------------------------------------
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
-----------------------------------------------------------------------------------
-- Ukraine oblasts --
-----------------------------------------------------------------------------------
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
-----------------------------------------------------------------------------------
-- Wales principal areas --
-----------------------------------------------------------------------------------
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {container = "東京都", wp = "Tokyo", placetype = {"city", "prefecture"}},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "Mexico City"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
q1z0dkz5jil1uu61n1edxsi3oxj13ee
9759432
9759415
2026-05-14T15:50:06Z
TongcyDai
53191
9759432
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
-----------------------------------------------------------------------------------
-- Countries --
-----------------------------------------------------------------------------------
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
-----------------------------------------------------------------------------------
-- Country-like entities --
-----------------------------------------------------------------------------------
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
-----------------------------------------------------------------------------------
-- Former countries --
-----------------------------------------------------------------------------------
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- United States states --
-----------------------------------------------------------------------------------
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
-----------------------------------------------------------------------------------
-- United Kingdom constituent countries --
-----------------------------------------------------------------------------------
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
-- Counties of Ireland
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
-----------------------------------------------------------------------------------
-- China provinces --
-----------------------------------------------------------------------------------
export.china_provinces = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西壯族自治區"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西"] = {alias_of = "廣西壯族自治區"},
["內蒙古自治區"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古"] = {alias_of = "內蒙古自治區"},
["寧夏回族自治區"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏"] = {alias_of = "寧夏回族自治區"},
["西藏自治區"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏"] = {alias_of = "西藏自治區"},
["新疆維吾爾自治區"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆"] = {alias_of = "新疆維吾爾自治區"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces,
}
-----------------------------------------------------------------------------------
-- Canada provinces and territories --
-----------------------------------------------------------------------------------
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Australia states and territories --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
-----------------------------------------------------------------------------------
-- India states and union territories --
-----------------------------------------------------------------------------------
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
-----------------------------------------------------------------------------------
-- Japan prefectures --
-----------------------------------------------------------------------------------
-- Note: export.japan_prefectures is accessed directly by place-placetypes.lua
-- using English-style keys (e.g. "Tokyo Prefecture, Japan"). Those lookups return
-- nil for Chinese keys, which is correct: no English "Prefecture" suffix is added.
export.japan_prefectures = {
["北海道"] = {placetype = {"prefecture"}, wp = "Hokkaido"},
["青森縣"] = {wp = "Aomori Prefecture"},
["岩手縣"] = {wp = "Iwate Prefecture"},
["宮城縣"] = {wp = "Miyagi Prefecture"},
["秋田縣"] = {wp = "Akita Prefecture"},
["山形縣"] = {wp = "Yamagata Prefecture"},
["福島縣"] = {wp = "Fukushima Prefecture"},
["茨城縣"] = {wp = "Ibaraki Prefecture"},
["栃木縣"] = {wp = "Tochigi Prefecture"},
["群馬縣"] = {wp = "Gunma Prefecture"},
["埼玉縣"] = {wp = "Saitama Prefecture"},
["千葉縣"] = {wp = "Chiba Prefecture"},
["東京都"] = {placetype = {"prefecture"}, wp = "Tokyo"},
["神奈川縣"] = {wp = "Kanagawa Prefecture"},
["新潟縣"] = {wp = "Niigata Prefecture"},
["富山縣"] = {wp = "Toyama Prefecture"},
["石川縣"] = {wp = "Ishikawa Prefecture"},
["福井縣"] = {wp = "Fukui Prefecture"},
["山梨縣"] = {wp = "Yamanashi Prefecture"},
["長野縣"] = {wp = "Nagano Prefecture"},
["岐阜縣"] = {wp = "Gifu Prefecture"},
["靜岡縣"] = {wp = "Shizuoka Prefecture"},
["愛知縣"] = {wp = "Aichi Prefecture"},
["三重縣"] = {wp = "Mie Prefecture"},
["滋賀縣"] = {wp = "Shiga Prefecture"},
["京都府"] = {placetype = {"prefecture"}, wp = "Kyoto Prefecture"},
["大阪府"] = {placetype = {"prefecture"}, wp = "Osaka Prefecture"},
["兵庫縣"] = {wp = "Hyogo Prefecture"},
["奈良縣"] = {wp = "Nara Prefecture"},
["和歌山縣"] = {wp = "Wakayama Prefecture"},
["鳥取縣"] = {wp = "Tottori Prefecture"},
["島根縣"] = {wp = "Shimane Prefecture"},
["岡山縣"] = {wp = "Okayama Prefecture"},
["廣島縣"] = {wp = "Hiroshima Prefecture"},
["山口縣"] = {wp = "Yamaguchi Prefecture"},
["德島縣"] = {wp = "Tokushima Prefecture"},
["香川縣"] = {wp = "Kagawa Prefecture"},
["愛媛縣"] = {wp = "Ehime Prefecture"},
["高知縣"] = {wp = "Kochi Prefecture"},
["福岡縣"] = {wp = "Fukuoka Prefecture"},
["佐賀縣"] = {wp = "Saga Prefecture"},
["長崎縣"] = {wp = "Nagasaki Prefecture"},
["熊本縣"] = {wp = "Kumamoto Prefecture"},
["大分縣"] = {wp = "Oita Prefecture"},
["宮崎縣"] = {wp = "Miyazaki Prefecture"},
["鹿兒島縣"] = {wp = "Kagoshima Prefecture"},
["沖繩縣"] = {wp = "Okinawa Prefecture"},
}
export.japan_group = {
placename_to_key = false,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
-----------------------------------------------------------------------------------
-- Germany states (Bundesländer) --
-----------------------------------------------------------------------------------
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
-----------------------------------------------------------------------------------
-- Italy regions (Regioni) --
-----------------------------------------------------------------------------------
export.italy_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_regions,
}
-----------------------------------------------------------------------------------
-- Spain autonomous communities (Comunidades autónomas) --
-----------------------------------------------------------------------------------
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
-----------------------------------------------------------------------------------
-- China prefecture-level cities --
-- Mirrors enwikt china_prefecture_level_cities (168 entries) and --
-- china_prefecture_level_cities_2 (4 entries, merged here since Chinese names --
-- are unambiguous: 台州/泰州, 蘇州/宿州 do not clash). --
-----------------------------------------------------------------------------------
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
-----------------------------------------------------------------------------------
-- New York City boroughs --
-----------------------------------------------------------------------------------
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
-----------------------------------------------------------------------------------
-- Romania counties --
-----------------------------------------------------------------------------------
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
-----------------------------------------------------------------------------------
-- Bulgaria provinces --
-----------------------------------------------------------------------------------
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
default_placetype = "province",
data = export.bulgaria_provinces,
}
-----------------------------------------------------------------------------------
-- Iran provinces --
-----------------------------------------------------------------------------------
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
-----------------------------------------------------------------------------------
-- Laos provinces --
-----------------------------------------------------------------------------------
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
-----------------------------------------------------------------------------------
-- North Korea provinces --
-----------------------------------------------------------------------------------
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
-----------------------------------------------------------------------------------
-- South Korea provinces --
-----------------------------------------------------------------------------------
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
-----------------------------------------------------------------------------------
-- Thailand provinces --
-----------------------------------------------------------------------------------
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
-----------------------------------------------------------------------------------
-- Turkey provinces --
-----------------------------------------------------------------------------------
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
-----------------------------------------------------------------------------------
-- Vietnam provinces --
-----------------------------------------------------------------------------------
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
-----------------------------------------------------------------------------------
-- Nigeria states --
-----------------------------------------------------------------------------------
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
-----------------------------------------------------------------------------------
-- Brazil states (for testcase coverage) --
-----------------------------------------------------------------------------------
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-----------------------------------------------------------------------------------
-- France regions --
-----------------------------------------------------------------------------------
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
-----------------------------------------------------------------------------------
-- Austria states --
-----------------------------------------------------------------------------------
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
-----------------------------------------------------------------------------------
-- Bangladesh divisions --
-----------------------------------------------------------------------------------
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
-----------------------------------------------------------------------------------
-- Egypt governorates --
-----------------------------------------------------------------------------------
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
-----------------------------------------------------------------------------------
-- Finland regions --
-----------------------------------------------------------------------------------
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
-----------------------------------------------------------------------------------
-- Greece regions --
-----------------------------------------------------------------------------------
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
-----------------------------------------------------------------------------------
-- Indonesia provinces --
-----------------------------------------------------------------------------------
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
-----------------------------------------------------------------------------------
-- Lebanon governorates --
-----------------------------------------------------------------------------------
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
-----------------------------------------------------------------------------------
-- Malaysia states --
-----------------------------------------------------------------------------------
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
-----------------------------------------------------------------------------------
-- Malta regions --
-----------------------------------------------------------------------------------
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
-----------------------------------------------------------------------------------
-- Mexico states --
-----------------------------------------------------------------------------------
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
-----------------------------------------------------------------------------------
-- Moldova districts and ATUs --
-----------------------------------------------------------------------------------
export.moldova_districts = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts,
}
-----------------------------------------------------------------------------------
-- Morocco regions --
-----------------------------------------------------------------------------------
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
-----------------------------------------------------------------------------------
-- Netherlands provinces --
-----------------------------------------------------------------------------------
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
-----------------------------------------------------------------------------------
-- New Zealand regions --
-----------------------------------------------------------------------------------
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
-----------------------------------------------------------------------------------
-- Norway counties --
-----------------------------------------------------------------------------------
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
-----------------------------------------------------------------------------------
-- Pakistan provinces and territories --
-----------------------------------------------------------------------------------
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
-----------------------------------------------------------------------------------
-- Philippines provinces --
-----------------------------------------------------------------------------------
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
-----------------------------------------------------------------------------------
-- Poland voivodeships --
-----------------------------------------------------------------------------------
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
-----------------------------------------------------------------------------------
-- Portugal districts and autonomous regions --
-----------------------------------------------------------------------------------
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
-----------------------------------------------------------------------------------
-- Russia federal subjects --
-----------------------------------------------------------------------------------
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
-----------------------------------------------------------------------------------
-- Saudi Arabia provinces --
-----------------------------------------------------------------------------------
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
-----------------------------------------------------------------------------------
-- South Africa provinces --
-----------------------------------------------------------------------------------
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
-----------------------------------------------------------------------------------
-- Ukraine oblasts --
-----------------------------------------------------------------------------------
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
-----------------------------------------------------------------------------------
-- Wales principal areas --
-----------------------------------------------------------------------------------
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {container = "東京都", wp = "Tokyo", placetype = {"city", "prefecture"}},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "Mexico City"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
5y9jvxfbcyi211j7i6m0s2dudufwzar
9759444
9759432
2026-05-14T16:52:43Z
TongcyDai
53191
9759444
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {container = "東京都", wp = "Tokyo", placetype = {"city", "prefecture"}},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "Mexico City"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
sqd588weo812to23dvknxbrsk42pmi9
9759445
9759444
2026-05-14T16:55:56Z
TongcyDai
53191
9759445
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
qvsvhvt7p4r5twmk2r8bbm0b5eheym1
9759513
9759445
2026-05-14T20:59:55Z
TongcyDai
53191
9759513
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "Earth"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Africa"},
["北非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "North Africa"},
["中非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "Central Africa"},
["南非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "Southern Africa"},
["東非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "East Africa"},
["西非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "West Africa"},
["漠南非洲"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "Sub-Saharan Africa"},
["漠北非洲"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "North Africa"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "Americas"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "North America"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Caribbean"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "Central America"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "South America"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "Antarctica"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "Eurasia"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Asia"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Middle East"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Southeast Asia"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "South Asia"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "East Asia"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Central Asia"},
["北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "North Asia"},
["東北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "Northeast Asia"},
["西亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "West Asia"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "Europe"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Western Europe"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Eastern Europe"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northern Europe"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southern Europe"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Central Europe"},
["東南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Southeastern Europe"},
["東北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "Northeastern Europe"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "Oceania"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Melanesia"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Micronesia"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "Polynesia"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
ctrf45rfesdvg06r4q8ogb2r5jfhf49
9759522
9759513
2026-05-14T21:05:26Z
TongcyDai
53191
9759522
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "地球"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "非洲"},
["北非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "北非"},
["中非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "中非"},
["南非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "南非"},
["東非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "東非"},
["西非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "西非"},
["漠南非洲"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "漠南非洲"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "美洲"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "北美洲"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "加勒比地區"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "中美洲"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "南美洲"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "南極洲"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "歐亞大陸"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "亞洲"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中東"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東南亞"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "南亞"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東亞"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中亞"},
["北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "北亞"},
["東北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東北亞"},
["西亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "西亞"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "歐洲"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "西歐"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東歐"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "北歐"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "南歐"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "中歐"},
["東南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東南歐"},
["東北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東北歐"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "大洋洲"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "美拉尼西亞"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "密克羅尼西亞"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "玻里尼西亞"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
irdrjqsz6qg3m6ttvlv8qsgbzoqze68
9759523
9759522
2026-05-14T21:16:43Z
TongcyDai
53191
9759523
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"nature"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "地球"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "非洲"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "美洲"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "北美洲"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "加勒比地區"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "中美洲"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "南美洲"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "南極洲"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "歐亞大陸"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "亞洲"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "歐洲"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "大洋洲"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "美拉尼西亞"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "密克羅尼西亞"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "玻里尼西亞"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "countries"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
fxcxyy0axgrmp1fqvleu3byezwxxzp9
9759525
9759523
2026-05-14T21:37:06Z
TongcyDai
53191
9759525
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"自然"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "地球"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "非洲"},
["北非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "北非"},
["中非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "中非"},
["南非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "南非"},
["東非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "東非"},
["西非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "西非"},
["漠南非洲"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "漠南非洲"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "美洲"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "北美洲"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "加勒比地區"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "中美洲"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "南美洲"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "南極洲"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "歐亞大陸"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "亞洲"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中東"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東南亞"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "南亞"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東亞"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中亞"},
["北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "北亞"},
["東北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東北亞"},
["西亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "西亞"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "歐洲"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "西歐"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東歐"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "北歐"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "南歐"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "中歐"},
["東南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東南歐"},
["東北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東北歐"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "大洋洲"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "美拉尼西亞"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "密克羅尼西亞"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "玻里尼西亞"},
}
export.continents_group = {
default_overriding_bare_label_parents = {},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "國家"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
lent8y0rm3vfty02b3c0u3lvv1nnljf
9759567
9759525
2026-05-14T22:26:48Z
TongcyDai
53191
// Edit via Wikiplus
9759567
Scribunto
text/plain
local export = {}
export.force_cat = false
local m_table = require("Module:table")
local insert = table.insert
local concat = table.concat
local dump = mw.dumpObject
local unpack = unpack or table.unpack
--[==[
Chinese Wiktionary localization of [[Module:place/locations]].
All canonical location keys are in Chinese, matching what editors write in holonym parameters
(e.g. {{place|zh|城市|s/中央邦|c/印度}}). English Wikipedia article names are stored in the
`wp` field for cross-reference. The `the`, `british_spelling` and English-suffix-detection
fields from enwikt are omitted as they are not applicable in Chinese.
The helper functions (process_error through construct_linked_placename) are kept intact from
enwikt's Module:place/locations to maintain API compatibility with Module:place/placetypes.
]==]
-----------------------------------------------------------------------------------
-- Helper functions --
-----------------------------------------------------------------------------------
function export.process_error(fmt, ...)
local args = {...}
for i = 1, select("#", ...) do
args[i] = dump(args[i])
end
return error(string.format(fmt, unpack(args)))
end
function export.internal_error(fmt, ...)
export.process_error("Internal error: " .. fmt, ...)
end
local internal_error = export.internal_error
local function list_or_element_contains(list_or_element, item)
if type(list_or_element) == "table" then
return m_table.contains(list_or_element, item) and true or false
end
return list_or_element == item
end
function export.key_to_placename(group, key)
if group.key_to_placename == false then
return key, key
end
if group.key_to_placename then
local full_placename, elliptical_placename = group.key_to_placename(key)
if type(full_placename) ~= "string" then
internal_error("Key %s returned a non-string full placename: %s", key, full_placename)
end
if type(elliptical_placename) ~= "string" then
internal_error("Key %s returned a non-string elliptical placename: %s", key, elliptical_placename)
end
return full_placename, elliptical_placename
end
key = key:gsub(",.*", "")
return key, key
end
function export.placename_to_key(group, placename)
if group.placename_to_key == false then
return placename
elseif group.placename_to_key then
local key = group.placename_to_key(placename)
if type(key) ~= "string" then
internal_error("Placename %s returned a non-string key: %s", placename, key)
end
return key
elseif group.default_placetype == "city" then
return placename
else
local defcon = group.default_container
if not defcon then
return placename
elseif type(defcon) == "string" then
return placename .. ", " .. defcon
elseif type(defcon) == "table" and (defcon.placetype == "country" or
defcon.placetype == "constituent country") then
return placename .. ", " .. defcon.key
else
return placename
end
end
end
function export.initialize_spec(group, key, spec)
if spec.initialized then
return
end
local container = spec.container
local containers
local container_from_default
if not container then
container = group.default_container
container_from_default = true
end
if container then
if type(container) == "string" or container.key then
container = {container}
end
containers = {}
for _, cont in ipairs(container) do
if type(cont) == "string" then
if group.canonicalize_key_container and not container_from_default then
cont = group.canonicalize_key_container(cont)
else
cont = {key = cont, placetype = "country"}
end
end
insert(containers, cont)
end
end
spec.containers = containers
spec.container = nil
local function value_with_default(val, default_val)
if val == nil then
return default_val
else
return val
end
end
local function set_or_default(prop)
spec[prop] = value_with_default(spec[prop], group["default_" .. prop])
end
set_or_default("placetype")
if not spec.placetype then
internal_error("No placetype found in key %s for spec %s or in group `default_placetype`", key, spec)
end
set_or_default("divs")
spec.addl_divs = group.addl_divs
for _, prop in ipairs {
"keydesc", "fulldesc", "addl_parents", "overriding_bare_label_parents",
"bare_category_parent_type", "wp", "wpcat", "commonscat", "the",
"no_container_cat", "no_container_parent", "no_generic_place_cat",
"no_check_holonym_mismatch", "no_auto_augment_container",
"no_include_container_in_desc", "is_city", "is_former_place",
} do
set_or_default(prop)
end
spec.is_city = value_with_default(spec.is_city, group.default_placetype == "city")
spec.initialized = true
end
local function find_matching_key_in_group(group, placetypes, key, alias_resolution)
if alias_resolution ~= nil and alias_resolution ~= "none" and alias_resolution ~= "display" and
alias_resolution ~= "all" then
internal_error("Bad value for 'alias_resolution': %s", alias_resolution)
end
local spec = group.data[key]
if not spec then
return nil
end
local function check_correct_placetype(placetype)
if type(placetype) == "table" then
for _, pt in ipairs(placetype) do
if list_or_element_contains(placetypes, pt) then
return true
end
end
return false
else
return list_or_element_contains(placetypes, placetype)
end
end
if spec.alias_of then
local resolved_key = spec.alias_of
local resolved_spec = group.data[resolved_key]
if not resolved_spec then
internal_error("Key %s is an alias of %s, which doesn't exist", key, resolved_key)
elseif resolved_spec.alias_of then
internal_error("Key %s is an alias of %s, which is itself an alias; indirect aliasing not allowed",
key, resolved_key)
end
if alias_resolution == "none" or alias_resolution == "display" then
local placetype = spec.placetype or resolved_spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s", key)
end
if not check_correct_placetype(placetype) then
return nil
end
if alias_resolution == "display" then
if spec.display == true then
key = resolved_key
elseif spec.display then
key = spec.display
end
end
return key, spec
end
key = resolved_key
spec = resolved_spec
end
local placetype = spec.placetype or group.default_placetype
if not placetype then
internal_error("No placetype found for key %s in spec %s or group `default_placetype`", key, spec)
end
if not check_correct_placetype(placetype) then
return nil
end
export.initialize_spec(group, key, spec)
return key, spec
end
local function find_matching_placename_in_group(group, placetypes, placename, alias_resolution)
local key = export.placename_to_key(group, placename)
return find_matching_key_in_group(group, placetypes, key, alias_resolution)
end
function export.find_canonical_key(key)
local found_locations = {}
for _, group in ipairs(export.locations) do
local spec = group.data[key]
if not spec then
-- do nothing
elseif spec.alias_of then
mw.log(("Skipping alias '%s' of canonical '%s'"):format(key, spec.alias_of))
else
insert(found_locations, {group, spec})
end
end
if not found_locations[1] then
return nil
elseif found_locations[2] then
internal_error("Found multiple matching locations for canonical key %s: %s", key, found_locations)
else
local group, spec = unpack(found_locations[1])
export.initialize_spec(group, key, spec)
return group, spec
end
end
function export.iterate_matching_location(data)
local i = 0
local n = #export.locations
return function()
while true do
i = i + 1
if i > n then
break
end
local group = export.locations[i]
local key, spec
if data.placename then
key, spec = find_matching_placename_in_group(group, data.placetypes, data.placename,
data.alias_resolution)
else
if not data.key then
internal_error("'.placename' or '.key' must be defined: %s", data)
end
key, spec = find_matching_key_in_group(group, data.placetypes, data.key, data.alias_resolution)
end
if key then
return group, key, spec
end
end
end
end
function export.get_matching_location(data)
local all_found = {}
for group, key, spec in export.iterate_matching_location(data) do
insert(all_found, {group, key, spec})
end
if not all_found[1] then
internal_error("Couldn't find matching location for data %s", data)
elseif all_found[2] then
internal_error("Found multiple matching locations for data %s: %s", data, all_found)
else
return unpack(all_found[1])
end
end
function export.iterate_containers(group, key, spec)
local keys_seen = {}
keys_seen[key] = true
local iterations = 0
local last_iteration_containers = {{group = group, key = key, spec = spec}}
return function()
iterations = iterations + 1
if iterations > 10 then
internal_error("Probable loop in containers when processing key %s", key)
end
local next_iteration_containers = {}
for _, location in ipairs(last_iteration_containers) do
local containers = location.spec.containers
if containers then
for _, container in ipairs(containers) do
local container_group, container_key, container_spec = export.get_matching_location {
placetypes = container.placetype,
key = container.key,
}
if not keys_seen[container_key] then
insert(next_iteration_containers, {
group = container_group, key = container_key, spec = container_spec
})
keys_seen[container_key] = true
end
end
end
end
if not next_iteration_containers[1] then
return nil
end
last_iteration_containers = next_iteration_containers
return next_iteration_containers
end
end
function export.construct_linked_placename(spec, placename, display_form)
local linked_placename = display_form and placename ~= display_form and ("[[%s|%s]]"):format(placename,
display_form) or ("[[%s]]"):format(placename)
-- Chinese has no articles; `the` field is unused but kept for API compatibility.
return linked_placename
end
-----------------------------------------------------------------------------------
-- Local data helper factories --
-----------------------------------------------------------------------------------
local function make_key_to_placename(container_patterns, divtype_patterns)
if type(container_patterns) == "string" then
container_patterns = {container_patterns}
end
if type(divtype_patterns) == "string" then
divtype_patterns = {divtype_patterns}
end
return function(key)
local full_placename = key
if container_patterns then
for _, pat in ipairs(container_patterns) do
local nsubs
full_placename, nsubs = full_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
local elliptical_placename = full_placename
if divtype_patterns then
for _, pat in ipairs(divtype_patterns) do
local nsubs
elliptical_placename, nsubs = elliptical_placename:gsub(pat, "")
if nsubs > 0 then break end
end
end
return full_placename, elliptical_placename
end
end
local function make_placename_to_key(container_suffix, divtype_suffix)
return function(placename)
local key = placename
if divtype_suffix then
if not key:find(divtype_suffix .. "$") then
key = key .. divtype_suffix
end
end
if container_suffix then
key = key .. container_suffix
end
return key
end
end
local function make_canonicalize_key_container(suffix, placetype)
return function(container)
if type(container) == "string" then
return {key = container .. (suffix or ""), placetype = placetype}
else
return container
end
end
end
-- Canonicalize a continent container key (string) to canonical container form.
local function canonicalize_continent_container(key)
if type(key) ~= "string" then
return key
end
if export.continents[key] then
return {key = key, placetype = export.continents[key].placetype}
end
internal_error("Unrecognized key %s in `canonicalize_continent_container`", key)
end
-----------------------------------------------------------------------------------
-- Top-level tables --
-----------------------------------------------------------------------------------
export.continents = {
["地球"] = {placetype = "planet", addl_parents = {"自然"},
fulldesc = "=the planet [[Earth]] and the features found on it", wp = "地球"},
["非洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "非洲"},
["北非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "北非"},
["中非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "中非"},
["南非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "南非"},
["東非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "東非"},
["西非"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "西非"},
["漠南非洲"] = {placetype = {"continental region", "region"}, container = {key = "非洲", placetype = "continent"}, wp = "漠南非洲"},
["美洲"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"},
wp = "美洲"},
["北美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "北美洲"},
["加勒比地區"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "加勒比地區"},
["中美洲"] = {placetype = {"continental region", "region"}, container = {key = "北美洲", placetype = "continent"}, wp = "中美洲"},
["南美洲"] = {placetype = "continent", container = {key = "美洲", placetype = "supercontinent"}, wp = "南美洲"},
["南極洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"},
fulldesc = "=the territory of [[Antarctica]]", wp = "南極洲"},
["歐亞大陸"] = {placetype = {"supercontinent", "continent"}, container = {key = "地球", placetype = "planet"}, wp = "歐亞大陸"},
["亞洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "亞洲"},
["中東"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中東"},
["東南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東南亞"},
["南亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "南亞"},
["東亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東亞"},
["中亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "中亞"},
["北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "北亞"},
["東北亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "東北亞"},
["西亞"] = {placetype = {"continental region", "region"}, container = {key = "亞洲", placetype = "continent"}, wp = "西亞"},
["歐洲"] = {placetype = "continent", container = {key = "歐亞大陸", placetype = "supercontinent"}, wp = "歐洲"},
["西歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "西歐"},
["東歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東歐"},
["北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "北歐"},
["南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "南歐"},
["中歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "中歐"},
["東南歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東南歐"},
["東北歐"] = {placetype = {"continental region", "region"}, container = {key = "歐洲", placetype = "continent"}, wp = "東北歐"},
["大洋洲"] = {placetype = "continent", container = {key = "地球", placetype = "planet"}, wp = "大洋洲"},
["美拉尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "美拉尼西亞"},
["密克羅尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "密克羅尼西亞"},
["玻里尼西亞"] = {placetype = {"continental region", "region"}, container = {key = "大洋洲", placetype = "continent"}, wp = "玻里尼西亞"},
}
export.continents_group = {
default_overriding_bare_label_parents = {"大洲及大陸地區"},
default_divs = {{type = "countries", prep = "in"}},
default_no_include_container_in_desc = true,
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
default_no_generic_place_cat = true,
default_no_check_holonym_mismatch = true,
data = export.continents,
}
export.countries = {
-- Africa
["阿爾及利亞"] = {container = "非洲", divs = {"provinces", "communes", "districts"}, wp = "阿爾及利亞"},
["安哥拉"] = {container = "非洲", divs = {"provinces", "municipalities"}, wp = "安哥拉"},
["貝寧"] = {container = "非洲", wp = "貝寧"},
["貝南"] = {alias_of = "貝寧"},
["博茨瓦納"] = {container = "非洲", wp = "博茨瓦納"},
["波札那"] = {alias_of = "博茨瓦納"},
["布基納法索"] = {container = "非洲", wp = "布基納法索"},
["布吉納法索"] = {alias_of = "布基納法索"},
["布隆迪"] = {container = "非洲", wp = "布隆迪"},
["蒲隆地"] = {alias_of = "布隆迪"},
["佛得角"] = {container = "非洲", wp = "佛得角"},
["維德角"] = {alias_of = "佛得角"},
["中非共和國"] = {container = "非洲", wp = "中非共和國"},
["乍得"] = {container = "非洲", wp = "乍得"},
["查德"] = {alias_of = "乍得"},
["科摩羅"] = {container = "非洲", wp = "科摩羅"},
["葛摩"] = {alias_of = "科摩羅"},
["剛果共和國"] = {container = "非洲", wp = "剛果共和國"},
["剛果(布)"] = {alias_of = "剛果共和國"},
["剛果民主共和國"] = {container = "非洲", divs = {"provinces"}, wp = "剛果民主共和國"},
["剛果(金)"] = {alias_of = "剛果民主共和國"},
["吉布提"] = {container = "非洲", wp = "吉布提"},
["吉布地"] = {alias_of = "吉布提"},
["埃及"] = {container = "非洲", divs = {"governorates"}, wp = "埃及"},
["赤道幾內亞"] = {container = "非洲", wp = "赤道幾內亞"},
["厄立特里亞"] = {container = "非洲", wp = "厄立特里亞"},
["厄利垂亞"] = {alias_of = "厄立特里亞"},
["斯威士蘭"] = {container = "非洲", wp = "斯威士蘭"},
["史瓦帝尼"] = {alias_of = "斯威士蘭"},
["埃塞俄比亞"] = {container = "非洲", divs = {"regions"}, wp = "埃塞俄比亞"},
["衣索比亞"] = {alias_of = "埃塞俄比亞"},
["加蓬"] = {container = "非洲", wp = "加蓬"},
["加彭"] = {alias_of = "加蓬"},
["岡比亞"] = {container = "非洲", wp = "岡比亞"},
["甘比亞"] = {alias_of = "岡比亞"},
["加納"] = {container = "非洲", wp = "加納"},
["迦納"] = {alias_of = "加納"},
["幾內亞"] = {container = "非洲", wp = "幾內亞"},
["幾內亞比紹"] = {container = "非洲", wp = "幾內亞比紹"},
["幾內亞比索"] = {alias_of = "幾內亞比紹"},
["科特迪瓦"] = {container = "非洲", wp = "科特迪瓦"},
["象牙海岸"] = {alias_of = "科特迪瓦"},
["肯尼亞"] = {container = "非洲", divs = {"counties"}, wp = "肯尼亞"},
["肯亞"] = {alias_of = "肯尼亞"},
["萊索托"] = {container = "非洲", wp = "萊索托"},
["賴索托"] = {alias_of = "萊索托"},
["利比里亞"] = {container = "非洲", wp = "利比里亞"},
["賴比瑞亞"] = {alias_of = "利比里亞"},
["利比亞"] = {container = "非洲", wp = "利比亞"},
["馬達加斯加"] = {container = "非洲", wp = "馬達加斯加"},
["馬拉維"] = {container = "非洲", wp = "馬拉維"},
["馬拉威"] = {alias_of = "馬拉維"},
["馬里"] = {container = "非洲", wp = "馬里"},
["馬利"] = {alias_of = "馬里"},
["毛里塔尼亞"] = {container = "非洲", wp = "毛里塔尼亞"},
["茅利塔尼亞"] = {alias_of = "毛里塔尼亞"},
["毛里求斯"] = {container = "非洲", wp = "毛里求斯"},
["模里西斯"] = {alias_of = "毛里求斯"},
["摩洛哥"] = {container = "非洲", wp = "摩洛哥"},
["莫桑比克"] = {container = "非洲", wp = "莫桑比克"},
["莫三比克"] = {alias_of = "莫桑比克"},
["納米比亞"] = {container = "非洲", wp = "納米比亞"},
["尼日爾"] = {container = "非洲", wp = "尼日爾"},
["尼日"] = {alias_of = "尼日爾"},
["尼日利亞"] = {container = "非洲", divs = {
{type = "states", cat_as = "states and FCT"},
"local government areas",
}, wp = "尼日利亞"},
["奈及利亞"] = {alias_of = "尼日利亞"},
["盧旺達"] = {container = "非洲", wp = "盧旺達"},
["盧安達"] = {alias_of = "盧旺達"},
["聖多美和普林西比"] = {container = "非洲", wp = "聖多美和普林西比"},
["塞內加爾"] = {container = "非洲", wp = "塞內加爾"},
["塞舌爾"] = {container = "非洲", wp = "塞舌爾"},
["塞席爾"] = {alias_of = "塞舌爾"},
["塞拉利昂"] = {container = "非洲", wp = "塞拉利昂"},
["獅子山"] = {alias_of = "塞拉利昂"},
["索馬里"] = {container = "非洲", wp = "索馬里"},
["索馬利亞"] = {alias_of = "索馬里"},
["南非"] = {container = "非洲", divs = {"provinces"}, wp = "南非"},
["南蘇丹"] = {container = "非洲", wp = "南蘇丹"},
["蘇丹"] = {container = "非洲", wp = "蘇丹"},
["坦桑尼亞"] = {container = "非洲", wp = "坦桑尼亞"},
["坦尚尼亞"] = {alias_of = "坦桑尼亞"},
["多哥"] = {container = "非洲", wp = "多哥"},
["突尼斯"] = {container = "非洲", wp = "突尼斯"},
["突尼西亞"] = {alias_of = "突尼斯"},
["烏干達"] = {container = "非洲", wp = "烏干達"},
["贊比亞"] = {container = "非洲", wp = "贊比亞"},
["尚比亞"] = {alias_of = "贊比亞"},
["津巴布韋"] = {container = "非洲", wp = "津巴布韋"},
["辛巴威"] = {alias_of = "津巴布韋"},
-- Asia
["阿富汗"] = {container = "亞洲", wp = "阿富汗"},
["亞美尼亞"] = {container = {"歐洲", "亞洲"}, wp = "亞美尼亞"},
["阿塞拜疆"] = {container = {"歐洲", "亞洲"}, wp = "阿塞拜疆"},
["亞塞拜然"] = {alias_of = "阿塞拜疆"},
["巴林"] = {container = "亞洲", wp = "巴林"},
["孟加拉國"] = {container = "亞洲", divs = {"divisions", "districts"}, wp = "孟加拉國"},
["孟加拉"] = {alias_of = "孟加拉國"},
["不丹"] = {container = "亞洲", wp = "不丹"},
["文萊"] = {container = "亞洲", wp = "文萊"},
["汶萊"] = {alias_of = "文萊"},
["柬埔寨"] = {container = "亞洲", wp = "柬埔寨"},
["中國"] = {container = "亞洲", divs = {
{type = "provinces", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "autonomous regions", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "direct-administered municipalities", cat_as = "provinces, autonomous regions, and municipalities"},
{type = "special administrative regions", cat_as = "special administrative regions"},
}, wp = "中國"},
["東帝汶"] = {container = "亞洲", wp = "東帝汶"},
["帝汶島"] = {alias_of = "東帝汶"},
["印度"] = {container = "亞洲", divs = {
{type = "states", cat_as = "states and union territories"},
{type = "union territories", cat_as = "states and union territories"},
}, wp = "印度"},
["印度尼西亞"] = {container = "亞洲", divs = {"provinces"}, wp = "印度尼西亞"},
["印尼"] = {alias_of = "印度尼西亞"},
["伊朗"] = {container = "亞洲", wp = "伊朗"},
["伊拉克"] = {container = "亞洲", wp = "伊拉克"},
["以色列"] = {container = "亞洲", wp = "以色列"},
["日本"] = {container = "亞洲", divs = {"prefectures"}, wp = "日本"},
["約旦"] = {container = "亞洲", wp = "約旦"},
["哈薩克斯坦"] = {container = {"歐洲", "亞洲"}, wp = "哈薩克斯坦"},
["哈薩克"] = {alias_of = "哈薩克斯坦"},
["朝鮮"] = {container = "亞洲", wp = "朝鮮民主主義人民共和國"},
["北韓"] = {alias_of = "朝鮮"},
["韓國"] = {container = "亞洲", divs = {"provinces", "special cities", "metropolitan cities"}, wp = "韓國"},
["南韓"] = {alias_of = "韓國"},
["科威特"] = {container = "亞洲", wp = "科威特"},
["吉爾吉斯斯坦"] = {container = "亞洲", wp = "吉爾吉斯斯坦"},
["吉爾吉斯"] = {alias_of = "吉爾吉斯斯坦"},
["老撾"] = {container = "亞洲", wp = "老撾"},
["寮國"] = {alias_of = "老撾"},
["黎巴嫩"] = {container = "亞洲", wp = "黎巴嫩"},
["馬來西亞"] = {container = "亞洲", divs = {"states"}, wp = "馬來西亞"},
["馬爾代夫"] = {container = "亞洲", wp = "馬爾代夫"},
["馬爾地夫"] = {alias_of = "馬爾代夫"},
["蒙古"] = {container = "亞洲", wp = "蒙古"},
["緬甸"] = {container = "亞洲", wp = "緬甸"},
["尼泊爾"] = {container = "亞洲", wp = "尼泊爾"},
["阿曼"] = {container = "亞洲", wp = "阿曼"},
["巴基斯坦"] = {container = "亞洲", divs = {"provinces"}, wp = "巴基斯坦"},
["菲律賓"] = {container = "亞洲", divs = {"regions"}, wp = "菲律賓"},
["卡塔爾"] = {container = "亞洲", wp = "卡塔爾"},
["卡達"] = {alias_of = "卡塔爾"},
["俄羅斯"] = {container = {"歐洲", "亞洲"}, divs = {"federal subjects"}, wp = "俄羅斯"},
["俄國"] = {alias_of = "俄羅斯"},
["沙特阿拉伯"] = {container = "亞洲", wp = "沙特阿拉伯"},
["沙烏地阿拉伯"] = {alias_of = "沙特阿拉伯"},
["新加坡"] = {container = "亞洲", is_city = true, wp = "新加坡"},
["斯里蘭卡"] = {container = "亞洲", wp = "斯里蘭卡"},
["敘利亞"] = {container = "亞洲", wp = "敘利亞"},
["臺灣"] = {container = "亞洲", divs = {
"special municipalities",
"counties",
}, wp = "臺灣"},
["台灣"] = {alias_of = "臺灣"},
["塔吉克斯坦"] = {container = "亞洲", wp = "塔吉克斯坦"},
["塔吉克"] = {alias_of = "塔吉克斯坦"},
["泰國"] = {container = "亞洲", divs = {"provinces"}, wp = "泰國"},
["土耳其"] = {container = {"歐洲", "亞洲"}, wp = "土耳其"},
["土庫曼斯坦"] = {container = "亞洲", wp = "土庫曼斯坦"},
["土庫曼"] = {alias_of = "土庫曼斯坦"},
["阿拉伯聯合酋長國"] = {container = "亞洲", wp = "阿拉伯聯合酋長國"},
["阿拉伯聯合大公國"] = {alias_of = "阿拉伯聯合酋長國"},
["阿聯酋"] = {alias_of = "阿拉伯聯合酋長國"},
["烏茲別克斯坦"] = {container = "亞洲", wp = "烏茲別克斯坦"},
["烏茲別克"] = {alias_of = "烏茲別克斯坦"},
["越南"] = {container = "亞洲", divs = {"provinces", "municipalities"}, wp = "越南"},
["也門"] = {container = "亞洲", wp = "也門"},
["葉門"] = {alias_of = "也門"},
-- Europe
["阿爾巴尼亞"] = {container = "歐洲", wp = "阿爾巴尼亞"},
["安道爾"] = {container = "歐洲", wp = "安道爾"},
["奧地利"] = {container = "歐洲", divs = {"states"}, wp = "奧地利"},
["白俄羅斯"] = {container = "歐洲", divs = {"regions"}, wp = "白俄羅斯"},
["比利時"] = {container = "歐洲", divs = {"regions", "provinces"}, wp = "比利時"},
["波斯尼亞和黑塞哥維那"] = {container = "歐洲", wp = "波斯尼亞和黑塞哥維那"},
["波士尼亞與赫塞哥維納"] = {alias_of = "波斯尼亞和黑塞哥維那"},
["保加利亞"] = {container = "歐洲", wp = "保加利亞"},
["克羅地亞"] = {container = "歐洲", wp = "克羅地亞"},
["克羅埃西亞"] = {alias_of = "克羅地亞"},
["塞浦路斯"] = {container = "亞洲", addl_parents = {"歐洲"}, wp = "塞浦路斯"},
["賽普勒斯"] = {alias_of = "塞浦路斯"},
["捷克"] = {container = "歐洲", wp = "捷克"},
["丹麥"] = {container = "歐洲", wp = "丹麥"},
["愛沙尼亞"] = {container = "歐洲", wp = "愛沙尼亞"},
["芬蘭"] = {container = "歐洲", divs = {"regions"}, wp = "芬蘭"},
["法國"] = {container = "歐洲", divs = {
{type = "regions", cat_as = "metropolitan regions"},
"departments",
"communes",
}, wp = "法國"},
["格魯吉亞"] = {container = {"歐洲", "亞洲"}, wp = "格魯吉亞"},
["喬治亞"] = {alias_of = "格魯吉亞"},
["德國"] = {container = "歐洲", divs = {"states"}, wp = "德國"},
["希臘"] = {container = "歐洲", divs = {"regions"}, wp = "希臘"},
["匈牙利"] = {container = "歐洲", wp = "匈牙利"},
["冰島"] = {container = "歐洲", wp = "冰島"},
["愛爾蘭"] = {container = "歐洲", divs = {"provinces", "counties"}, wp = "愛爾蘭"},
["意大利"] = {container = "歐洲", divs = {"regions"}, wp = "意大利"},
["義大利"] = {alias_of = "意大利"},
["科索沃"] = {container = "歐洲", wp = "科索沃"},
["拉脫維亞"] = {container = "歐洲", wp = "拉脫維亞"},
["拉托維亞"] = {alias_of = "拉脫維亞"},
["列支敦士登"] = {container = "歐洲", wp = "列支敦士登"},
["列支敦斯登"] = {alias_of = "列支敦士登"},
["立陶宛"] = {container = "歐洲", wp = "立陶宛"},
["盧森堡"] = {container = "歐洲", wp = "盧森堡"},
["北馬其頓"] = {container = "歐洲", wp = "北馬其頓"},
["馬耳他"] = {container = "歐洲", wp = "馬耳他"},
["馬爾他"] = {alias_of = "馬耳他"},
["摩爾多瓦"] = {container = "歐洲", wp = "摩爾多瓦"},
["摩納哥"] = {container = "歐洲", is_city = true, wp = "摩納哥"},
["黑山"] = {container = "歐洲", wp = "黑山"},
["蒙特內哥羅"] = {alias_of = "黑山"},
["荷蘭"] = {container = "歐洲", divs = {"provinces"}, wp = "荷蘭"},
["尼德蘭"] = {alias_of = "荷蘭"},
["挪威"] = {container = "歐洲", wp = "挪威"},
["波蘭"] = {container = "歐洲", divs = {"voivodeships"}, wp = "波蘭"},
["葡萄牙"] = {container = "歐洲", divs = {"districts"}, wp = "葡萄牙"},
["羅馬尼亞"] = {container = "歐洲", wp = "羅馬尼亞"},
["聖馬力諾"] = {container = "歐洲", wp = "聖馬力諾"},
["聖馬利諾"] = {alias_of = "聖馬力諾"},
["塞爾維亞"] = {container = "歐洲", wp = "塞爾維亞"},
["斯洛伐克"] = {container = "歐洲", wp = "斯洛伐克"},
["斯洛文尼亞"] = {container = "歐洲", wp = "斯洛文尼亞"},
["斯洛維尼亞"] = {alias_of = "斯洛文尼亞"},
["西班牙"] = {container = "歐洲", divs = {"autonomous communities"}, wp = "西班牙"},
["瑞典"] = {container = "歐洲", wp = "瑞典"},
["瑞士"] = {container = "歐洲", divs = {"cantons"}, wp = "瑞士"},
["烏克蘭"] = {container = "歐洲", divs = {"oblasts"}, wp = "烏克蘭"},
["英國"] = {container = "歐洲", divs = {
{type = "constituent countries", cat_as = "constituent countries"},
}, wp = "英國"},
-- North America
["加拿大"] = {container = "北美洲", divs = {
{type = "provinces", cat_as = "provinces and territories"},
{type = "territories", cat_as = "provinces and territories"},
}, wp = "加拿大"},
["墨西哥"] = {container = "北美洲", divs = {"states"}, wp = "墨西哥"},
["美國"] = {container = "北美洲", divs = {"states"}, wp = "美國"},
-- Central America
["伯利茲"] = {container = "中美洲", wp = "伯利茲"},
["貝里斯"] = {alias_of = "伯利茲"},
["哥斯達黎加"] = {container = "中美洲", wp = "哥斯達黎加"},
["哥斯大黎加"] = {alias_of = "哥斯達黎加"},
["薩爾瓦多"] = {container = "中美洲", wp = "薩爾瓦多"},
["危地馬拉"] = {container = "中美洲", wp = "危地馬拉"},
["瓜地馬拉"] = {alias_of = "危地馬拉"},
["洪都拉斯"] = {container = "中美洲", wp = "洪都拉斯"},
["宏都拉斯"] = {alias_of = "洪都拉斯"},
["尼加拉瓜"] = {container = "中美洲", wp = "尼加拉瓜"},
["巴拿馬"] = {container = "中美洲", wp = "巴拿馬"},
-- Caribbean
["安提瓜和巴布達"] = {container = "加勒比地區", wp = "安提瓜和巴布達"},
["安地卡及巴布達"] = {alias_of = "安提瓜和巴布達"},
["巴哈馬"] = {container = "加勒比地區", wp = "巴哈馬"},
["巴巴多斯"] = {container = "加勒比地區", wp = "巴巴多斯"},
["巴貝多"] = {alias_of = "巴巴多斯"},
["古巴"] = {container = "加勒比地區", wp = "古巴"},
["多米尼克"] = {container = "加勒比地區", wp = "多米尼克"},
["多米尼加共和國"] = {container = "加勒比地區", wp = "多米尼加"},
["多明尼加共和國"] = {alias_of = "多米尼加共和國"},
["格林納達"] = {container = "加勒比地區", wp = "格林納達"},
["格瑞那達"] = {alias_of = "格林納達"},
["海地"] = {container = "加勒比地區", wp = "海地"},
["牙買加"] = {container = "加勒比地區", wp = "牙買加"},
["聖基茨和尼維斯"] = {container = "加勒比地區", wp = "聖基茨和尼維斯"},
["聖克里斯多福及尼維斯"] = {alias_of = "聖基茨和尼維斯"},
["聖盧西亞"] = {container = "加勒比地區", wp = "聖盧西亞"},
["聖露西亞"] = {alias_of = "聖盧西亞"},
["聖文森特和格林納丁斯"] = {container = "加勒比地區", wp = "聖文森特和格林納丁斯"},
["聖文森及格瑞那丁"] = {alias_of = "聖文森特和格林納丁斯"},
["特立尼達和多巴哥"] = {container = "加勒比地區", wp = "特立尼達和多巴哥"},
["千里達及托巴哥"] = {alias_of = "特立尼達和多巴哥"},
-- South America
["阿根廷"] = {container = "南美洲", divs = {"provinces"}, wp = "阿根廷"},
["玻利維亞"] = {container = "南美洲", wp = "玻利維亞"},
["巴西"] = {container = "南美洲", divs = {"states"}, wp = "巴西"},
["智利"] = {container = "南美洲", wp = "智利"},
["哥倫比亞"] = {container = "南美洲", wp = "哥倫比亞"},
["厄瓜多爾"] = {container = "南美洲", wp = "厄瓜多爾"},
["厄瓜多"] = {alias_of = "厄瓜多爾"},
["圭亞那"] = {container = "南美洲", wp = "圭亞那"},
["蓋亞那"] = {alias_of = "圭亞那"},
["巴拉圭"] = {container = "南美洲", wp = "巴拉圭"},
["秘魯"] = {container = "南美洲", wp = "秘魯"},
["蘇里南"] = {container = "南美洲", wp = "蘇里南"},
["蘇利南"] = {alias_of = "蘇里南"},
["烏拉圭"] = {container = "南美洲", wp = "烏拉圭"},
["委內瑞拉"] = {container = "南美洲", wp = "委內瑞拉"},
-- Oceania
["澳大利亞"] = {container = "大洋洲", divs = {
{type = "states", cat_as = "states and territories"},
{type = "territories", cat_as = "states and territories"},
}, wp = "澳大利亞"},
["澳洲"] = {alias_of = "澳大利亞"},
["斐濟"] = {container = "大洋洲", wp = "斐濟"},
["基里巴斯"] = {container = "大洋洲", wp = "基里巴斯"},
["吉里巴斯"] = {alias_of = "基里巴斯"},
["馬紹爾群島"] = {container = "大洋洲", wp = "馬紹爾群島"},
["密克羅尼西亞聯邦"] = {container = "大洋洲", wp = "密克羅尼西亞聯邦"},
["瑙魯"] = {container = "大洋洲", wp = "瑙魯"},
["諾魯"] = {alias_of = "瑙魯"},
["新西蘭"] = {container = "大洋洲", wp = "新西蘭"},
["紐西蘭"] = {alias_of = "新西蘭"},
["帕勞"] = {container = "大洋洲", wp = "帕勞"},
["帛琉"] = {alias_of = "帕勞"},
["巴布亞新幾內亞"] = {container = "大洋洲", wp = "巴布亞新幾內亞"},
["巴布亞紐幾內亞"] = {alias_of = "巴布亞新幾內亞"},
["薩摩亞"] = {container = "大洋洲", wp = "薩摩亞"},
["所羅門群島"] = {container = "大洋洲", wp = "所羅門群島"},
["湯加"] = {container = "大洋洲", wp = "湯加"},
["東加"] = {alias_of = "湯加"},
["圖瓦盧"] = {container = "大洋洲", wp = "圖瓦盧"},
["吐瓦魯"] = {alias_of = "圖瓦盧"},
["瓦努阿圖"] = {container = "大洋洲", wp = "瓦努阿圖"},
["萬那杜"] = {alias_of = "瓦努阿圖"},
}
export.countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_overriding_bare_label_parents = {"+++", "國家"},
default_placetype = "country",
default_no_container_cat = true,
default_no_container_parent = true,
default_no_auto_augment_container = true,
placename_to_key = false,
data = export.countries,
}
export.country_like_entities = {
-- Special administrative regions of China
["香港"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
divs = {"districts"},
wp = "Hong Kong",
},
["澳門"] = {
placetype = {"special administrative region", "region"},
container = "中國",
addl_parents = {"亞洲"},
is_city = true,
wp = "Macau",
},
-- Western Sahara
["西撒哈拉"] = {
placetype = {"territory", "country"},
container = "非洲",
wp = "Western Sahara",
},
-- Kosovo (disputed)
["科索沃(部分承認)"] = {alias_of = "科索沃"},
-- Palestinian territories
["巴勒斯坦"] = {
placetype = {"country", "territory"},
container = "亞洲",
wp = "State of Palestine",
},
-- Key overseas territories
["波多黎各"] = {
placetype = {"commonwealth", "territory"},
container = "美國",
addl_parents = {"加勒比地區"},
wp = "Puerto Rico",
},
["關島"] = {
placetype = {"territory"},
container = "美國",
addl_parents = {"密克羅尼西亞"},
wp = "Guam",
},
["新喀里多尼亞"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"大洋洲"},
wp = "New Caledonia",
},
["法屬圭亞那"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"南美洲"},
wp = "French Guiana",
},
["留尼旺"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"非洲"},
wp = "Réunion",
},
["馬丁尼克"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Martinique",
},
["瓜德羅普"] = {
placetype = {"territory"},
container = "法國",
addl_parents = {"加勒比地區"},
wp = "Guadeloupe",
},
["格陵蘭"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"北美洲"},
wp = "Greenland",
},
["法羅群島"] = {
placetype = {"territory"},
container = "丹麥",
addl_parents = {"歐洲"},
wp = "Faroe Islands",
},
}
export.country_like_entities_group = {
canonicalize_key_container = make_canonicalize_key_container(nil, "country"),
default_placetype = "territory",
placename_to_key = false,
data = export.country_like_entities,
}
export.former_countries = {
["蘇聯"] = {
placetype = {"country"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Soviet Union",
},
["南斯拉夫"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Yugoslavia",
},
["捷克斯洛伐克"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Czechoslovakia",
},
["東德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "East Germany",
},
["西德"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "West Germany",
},
["奧匈帝國"] = {
placetype = {"empire"},
container = "歐洲",
is_former_place = true,
wp = "Austria-Hungary",
},
["鄂圖曼帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲"},
is_former_place = true,
wp = "Ottoman Empire",
},
["奧斯曼帝國"] = {alias_of = "鄂圖曼帝國"},
["羅馬帝國"] = {
placetype = {"empire"},
container = {"歐洲", "亞洲", "非洲"},
is_former_place = true,
wp = "Roman Empire",
},
["大英帝國"] = {
placetype = {"empire"},
is_former_place = true,
wp = "British Empire",
},
["普魯士"] = {
placetype = {"country"},
container = "歐洲",
is_former_place = true,
wp = "Prussia",
},
}
export.former_countries_group = {
canonicalize_key_container = canonicalize_continent_container,
default_placetype = "country",
default_is_former_place = true,
placename_to_key = false,
data = export.former_countries,
}
-----------------------------------------------------------------------------------
-- Subpolity tables --
-----------------------------------------------------------------------------------
export.australia_states_and_territories = {
["新南威爾斯"] = {wp = "New South Wales"},
["維多利亞州"] = {wp = "Victoria (Australia)"},
["昆士蘭"] = {wp = "Queensland"},
["南澳大利亞"] = {wp = "South Australia"},
["西澳大利亞"] = {wp = "Western Australia"},
["塔斯馬尼亞"] = {wp = "Tasmania"},
["澳大利亞首都領地"] = {placetype = "territory", wp = "Australian Capital Territory"},
["北領地"] = {placetype = "territory", wp = "Northern Territory"},
}
-- states and territories of Australia
export.australia_group = {
placename_to_key = false,
default_container = "澳大利亞",
default_placetype = "state",
data = export.australia_states_and_territories,
}
export.austria_states = {
["維也納州"] = {wp = "Vienna (state)"},
["下奧地利州"] = {wp = "Lower Austria"},
["上奧地利州"] = {wp = "Upper Austria"},
["施泰爾馬克州"] = {wp = "Styria"},
["蒂羅爾州"] = {wp = "Tyrol (state)"},
["克恩頓州"] = {wp = "Carinthia"},
["薩爾茨堡州"] = {wp = "Salzburg (state)"},
["福拉爾貝格州"] = {wp = "Vorarlberg"},
["布根蘭州"] = {wp = "Burgenland"},
}
-- states of Austria
export.austria_group = {
placename_to_key = false,
default_container = "奧地利",
default_placetype = "state",
data = export.austria_states,
}
export.bangladesh_divisions = {
["巴里薩爾專區"] = {wp = "Barisal Division"},
["吉大港專區"] = {wp = "Chittagong Division"},
["達卡專區"] = {wp = "Dhaka Division"},
["庫爾納專區"] = {wp = "Khulna Division"},
["邁門辛專區"] = {wp = "Mymensingh Division"},
["拉吉沙希專區"] = {wp = "Rajshahi Division"},
["朗普爾專區"] = {wp = "Rangpur Division"},
["錫爾赫特專區"] = {wp = "Sylhet Division"},
}
-- divisions of Bangladesh
export.bangladesh_group = {
placename_to_key = false,
default_container = "孟加拉國",
default_placetype = "division",
data = export.bangladesh_divisions,
}
export.brazil_states = {
["里約熱內盧州"] = {wp = "Rio de Janeiro (state)"},
["里約熱內盧"] = {alias_of = "里約熱內盧州"},
["聖保羅州"] = {wp = "São Paulo (state)"},
["米納斯吉拉斯"] = {wp = "Minas Gerais"},
["巴伊亞"] = {wp = "Bahia"},
["亞馬遜州"] = {wp = "Amazonas (Brazilian state)"},
["帕拉州"] = {wp = "Pará"},
["伯南布哥州"] = {wp = "Pernambuco"},
["南里奧格蘭德州"] = {wp = "Rio Grande do Sul"},
["巴西聯邦區"] = {wp = "Federal District (Brazil)"},
["塞阿拉州"] = {wp = "Ceará"},
["巴拉那州"] = {wp = "Paraná (state)"},
["戈亞斯州"] = {wp = "Goiás"},
["聖埃斯皮里圖州"] = {wp = "Espírito Santo"},
["馬拉尼昂州"] = {wp = "Maranhão"},
["北里奧格蘭德州"] = {wp = "Rio Grande do Norte"},
["聖卡塔琳娜州"] = {wp = "Santa Catarina (state)"},
["阿拉戈亞斯州"] = {wp = "Alagoas"},
["帕拉伊巴州"] = {wp = "Paraíba"},
["皮奧伊州"] = {wp = "Piauí"},
["阿克里州"] = {wp = "Acre (state)"},
["阿馬帕州"] = {wp = "Amapá"},
["馬托格羅索州"] = {wp = "Mato Grosso"},
["南馬托格羅索州"] = {wp = "Mato Grosso do Sul"},
["朗多尼亞州"] = {wp = "Rondônia"},
["羅賴馬州"] = {wp = "Roraima"},
["塞爾希培州"] = {wp = "Sergipe"},
["托坎廷斯州"] = {wp = "Tocantins"},
}
-- states of Brazil
export.brazil_group = {
placename_to_key = false,
default_container = "巴西",
default_placetype = "state",
data = export.brazil_states,
}
-- provinces (a.k.a. oblasts) of Bulgaria
export.bulgaria_provinces = {
["布拉戈耶夫格勒省"] = {wp = "Blagoevgrad Province"},
["布爾加斯省"] = {wp = "Burgas Province"},
["多布里奇省"] = {wp = "Dobrich Province"},
["加布羅沃省"] = {wp = "Gabrovo Province"},
["哈斯科沃省"] = {wp = "Haskovo Province"},
["卡爾扎利省"] = {wp = "Kardzhali Province"},
["屈斯滕迪爾省"] = {wp = "Kyustendil Province"},
["洛維奇省"] = {wp = "Lovech Province"},
["蒙塔納省"] = {wp = "Montana Province"},
["帕扎爾吉克省"] = {wp = "Pazardzhik Province"},
["佩爾尼克省"] = {wp = "Pernik Province"},
["普萊文省"] = {wp = "Pleven Province"},
["普羅夫迪夫省"] = {wp = "Plovdiv Province"},
["拉茲格勒省"] = {wp = "Razgrad Province"},
["魯塞省"] = {wp = "Ruse Province"},
["舒門省"] = {wp = "Shumen Province"},
["錫利斯特拉省"] = {wp = "Silistra Province"},
["斯利文省"] = {wp = "Sliven Province"},
["斯莫梁省"] = {wp = "Smolyan Province"},
["索非亞市省"] = {wp = "Sofia City Province"},
["索非亞省"] = {wp = "Sofia Province"},
["斯塔拉扎戈拉省"] = {wp = "Stara Zagora Province"},
["特爾戈維什泰省"] = {wp = "Targovishte Province"},
["瓦爾納省"] = {wp = "Varna Province"},
["大特爾諾沃省"] = {wp = "Veliko Tarnovo Province"},
["維丁省"] = {wp = "Vidin Province"},
["弗拉察省"] = {wp = "Vratsa Province"},
["揚博爾省"] = {wp = "Yambol Province"},
}
export.bulgaria_group = {
placename_to_key = false,
default_container = "保加利亞",
divs = {"regions", "planning regions", "provinces", "municipalities", "settlements"},
default_placetype = "province",
data = export.bulgaria_provinces,
}
export.canada_provinces_and_territories = {
["亞伯達"] = {wp = "Alberta"},
["艾伯塔"] = {alias_of = "亞伯達"},
["英屬哥倫比亞"] = {wp = "British Columbia"},
["卑詩省"] = {alias_of = "英屬哥倫比亞"},
["馬尼托巴"] = {wp = "Manitoba"},
["新不倫瑞克"] = {wp = "New Brunswick"},
["紐芬蘭與拉布拉多"] = {wp = "Newfoundland and Labrador"},
["西北地區"] = {placetype = "territory", wp = "Northwest Territories"},
["新斯科舍"] = {wp = "Nova Scotia"},
["努納武特"] = {placetype = "territory", wp = "Nunavut"},
["安大略"] = {divs = {"counties", "regional municipalities"}, wp = "Ontario"},
["愛德華王子島"] = {wp = "Prince Edward Island"},
["魁北克"] = {wp = "Quebec"},
["薩斯喀徹溫"] = {wp = "Saskatchewan"},
["育空"] = {placetype = "territory", wp = "Yukon"},
}
export.canada_group = {
placename_to_key = false,
default_container = "加拿大",
default_placetype = "province",
data = export.canada_provinces_and_territories,
}
export.china_provinces_and_autonomous_regions = {
-- Provinces
["安徽"] = {wp = "安徽省"},
["福建"] = {wp = "福建省"},
["甘肅"] = {wp = "甘肅省"},
["廣東"] = {wp = "廣東省"},
["貴州"] = {wp = "貴州省"},
["海南"] = {wp = "海南省"},
["河北"] = {wp = "河北省"},
["黑龍江"] = {wp = "黑龍江省"},
["河南"] = {wp = "河南省"},
["湖北"] = {wp = "湖北省"},
["湖南"] = {wp = "湖南省"},
["江蘇"] = {wp = "江蘇省"},
["江西"] = {wp = "江西省"},
["吉林"] = {wp = "吉林省"},
["遼寧"] = {wp = "遼寧省"},
["青海"] = {wp = "青海省"},
["陝西"] = {wp = "陝西省"},
["山東"] = {wp = "山東省"},
["山西"] = {wp = "山西省"},
["四川"] = {wp = "四川省"},
["雲南"] = {wp = "雲南省"},
["浙江"] = {wp = "浙江省"},
-- Autonomous regions
["廣西"] = {placetype = "autonomous region", wp = "廣西壯族自治區"},
["廣西壯族自治區"] = {alias_of = "廣西"},
["內蒙古"] = {placetype = "autonomous region", wp = "內蒙古自治區"},
["內蒙古自治區"] = {alias_of = "內蒙"},
["寧夏"] = {placetype = "autonomous region", wp = "寧夏回族自治區"},
["寧夏回族自治區"] = {alias_of = "寧夏"},
["西藏"] = {placetype = "autonomous region", wp = "西藏自治區"},
["西藏自治區"] = {alias_of = "西藏"},
["新疆"] = {placetype = "autonomous region", wp = "新疆維吾爾自治區"},
["新疆維吾爾自治區"] = {alias_of = "新疆"},
-- Direct-administered municipalities (treated as province-level for holonym purposes)
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "北京市"},
["北京市"] = {alias_of = "北京"},
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "上海市"},
["上海市"] = {alias_of = "上海"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "天津市"},
["天津市"] = {alias_of = "天津"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "重慶市"},
["重慶市"] = {alias_of = "重慶"},
}
export.china_group = {
placename_to_key = false,
default_container = "中國",
default_placetype = "province",
default_divs = {
"prefecture-level cities",
"districts",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_provinces_and_autonomous_regions,
}
export.china_prefecture_level_cities = {
-- Guangdong
["廣州"] = {container = "廣東", wp = "Guangzhou"},
["東莞"] = {container = "廣東", wp = "Dongguan"},
["佛山"] = {container = "廣東", wp = "Foshan"},
["惠州"] = {container = "廣東", wp = "Huizhou"},
["江門"] = {container = "廣東", wp = "Jiangmen"},
["深圳"] = {container = "廣東", wp = "Shenzhen"},
["中山"] = {container = "廣東", wp = "Zhongshan"},
["汕頭"] = {container = "廣東", wp = "Shantou"},
["潮州"] = {container = "廣東", wp = "Chaozhou"},
["揭陽"] = {container = "廣東", wp = "Jieyang"},
["珠海"] = {container = "廣東", wp = "Zhuhai"},
["湛江"] = {container = "廣東", wp = "Zhanjiang"},
["茂名"] = {container = "廣東", wp = "Maoming"},
["清遠"] = {container = "廣東", wp = "Qingyuan"},
["肇慶"] = {container = "廣東", wp = "Zhaoqing"},
-- Direct-administered municipalities (also in china_provinces; duplicated here for division categorisation)
["上海"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Shanghai"},
["北京"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Beijing"},
["重慶"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Chongqing"},
["天津"] = {placetype = {"direct-administered municipality", "municipality", "city"}, wp = "Tianjin"},
-- Jiangsu
["常熟"] = {container = "江蘇", wp = "Changshu"},
["常州"] = {container = "江蘇", wp = "Changzhou"},
["蘇州"] = {container = "江蘇", wp = "Suzhou"},
["無錫"] = {container = "江蘇", wp = "Wuxi"},
["南京"] = {container = "江蘇", wp = "Nanjing"},
["南通"] = {container = "江蘇", wp = "Nantong"},
["江陰"] = {container = "江蘇", wp = "Jiangyin"},
["張家港"] = {container = "江蘇", wp = "Zhangjiagang"},
["徐州"] = {container = "江蘇", wp = "Xuzhou"},
["揚州"] = {container = "江蘇", wp = "Yangzhou"},
["鹽城"] = {container = "江蘇", wp = "Yancheng"},
["淮安"] = {container = "江蘇", wp = "Huai'an"},
["連雲港"] = {container = "江蘇", wp = "Lianyungang"},
["宿遷"] = {container = "江蘇", wp = "Suqian"},
["鎮江"] = {container = "江蘇", wp = "Zhenjiang"},
["崑山"] = {container = "江蘇", wp = "Kunshan"},
["泰州"] = {container = "江蘇", wp = "Taizhou, Jiangsu"}, -- distinct from 台州 (Zhejiang)
-- Zhejiang
["杭州"] = {container = "浙江", wp = "Hangzhou"},
["紹興"] = {container = "浙江", wp = "Shaoxing"},
["寧波"] = {container = "浙江", wp = "Ningbo"},
["慈溪"] = {container = "浙江", wp = "Cixi"},
["余姚"] = {container = "浙江", wp = "Yuyao"},
["溫州"] = {container = "浙江", wp = "Wenzhou"},
["瑞安"] = {placetype = "county-level city", container = {key = "溫州", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Rui'an"},
["台州"] = {container = "浙江", wp = "Taizhou, Zhejiang"},
["義烏"] = {container = "浙江", wp = "Yiwu"},
["嘉興"] = {container = "浙江", wp = "Jiaxing"},
["金華"] = {container = "浙江", wp = "Jinhua"},
["湖州"] = {container = "浙江", wp = "Huzhou"},
["永康"] = {placetype = "county-level city", container = {key = "金華", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Yongkang, Zhejiang"},
-- Fujian
["廈門"] = {container = "福建", wp = "Xiamen"},
["晉江"] = {container = "福建", wp = "Jinjiang"},
["泉州"] = {container = "福建", wp = "Quanzhou"},
["莆田"] = {container = "福建", wp = "Putian"},
["福州"] = {container = "福建", wp = "Fuzhou"},
-- Shandong
["青島"] = {container = "山東", wp = "Qingdao"},
["臨沂"] = {container = "山東", wp = "Linyi"},
["淄博"] = {container = "山東", wp = "Zibo"},
["濟南"] = {container = "山東", wp = "Jinan"},
["濰坊"] = {container = "山東", wp = "Weifang"},
["煙台"] = {container = "山東", wp = "Yantai"},
["濟寧"] = {container = "山東", wp = "Jining"},
["泰安"] = {container = "山東", wp = "Tai'an"},
["威海"] = {container = "山東", wp = "Weihai"},
["菏澤"] = {container = "山東", wp = "Heze"},
["德州"] = {container = "山東", wp = "Dezhou"},
["日照"] = {container = "山東", wp = "Rizhao"},
["聊城"] = {container = "山東", wp = "Liaocheng"},
["棗莊"] = {container = "山東", wp = "Zaozhuang"},
["滕州"] = {placetype = "county-level city", container = {key = "棗莊", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Tengzhou"},
["東營"] = {container = "山東", wp = "Dongying"},
-- Henan
["鄭州"] = {container = "河南", wp = "Zhengzhou"},
["洛陽"] = {container = "河南", wp = "Luoyang"},
["新鄉"] = {container = "河南", wp = "Xinxiang"},
["信陽"] = {container = "河南", wp = "Xinyang"},
["安陽"] = {container = "河南", wp = "Anyang"},
["開封"] = {container = "河南", wp = "Kaifeng"},
["許昌"] = {container = "河南", wp = "Xuchang"},
["濮陽"] = {container = "河南", wp = "Puyang"},
["商丘"] = {container = "河南", wp = "Shangqiu"},
["南陽"] = {container = "河南", wp = "Nanyang, Henan"},
["焦作"] = {container = "河南", wp = "Jiaozuo"},
["平頂山"] = {container = "河南", wp = "Pingdingshan"},
["周口"] = {container = "河南", wp = "Zhoukou"},
["駐馬店"] = {container = "河南", wp = "Zhumadian"},
-- Hubei
["武漢"] = {container = "湖北", wp = "Wuhan"},
["襄陽"] = {container = "湖北", wp = "Xiangyang"},
["宜昌"] = {container = "湖北", wp = "Yichang"},
["鄂州"] = {container = "湖北", wp = "Ezhou"},
["十堰"] = {container = "湖北", wp = "Shiyan"},
-- Hunan
["長沙"] = {container = "湖南", wp = "Changsha"},
["株洲"] = {container = "湖南", wp = "Zhuzhou"},
["衡陽"] = {container = "湖南", wp = "Hengyang"},
["邵陽"] = {container = "湖南", wp = "Shaoyang"},
["岳陽"] = {container = "湖南", wp = "Yueyang"},
["常德"] = {container = "湖南", wp = "Changde"},
["瀏陽"] = {placetype = "county-level city", container = {key = "長沙", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Liuyang"},
-- Sichuan
["成都"] = {container = "四川", wp = "Chengdu"},
["綿陽"] = {container = "四川", wp = "Mianyang"},
["南充"] = {container = "四川", wp = "Nanchong"},
["達州"] = {container = "四川", wp = "Dazhou"},
["瀘州"] = {container = "四川", wp = "Luzhou"},
["宜賓"] = {container = "四川", wp = "Yibin"},
-- Yunnan
["昆明"] = {container = "雲南", wp = "Kunming"},
["曲靖"] = {container = "雲南", wp = "Qujing"},
-- Guizhou
["貴陽"] = {container = "貴州", wp = "Guiyang"},
["遵義"] = {container = "貴州", wp = "Zunyi"},
["六盤水"] = {container = "貴州", wp = "Liupanshui"},
["畢節"] = {container = "貴州", wp = "Bijie"},
-- Shaanxi
["西安"] = {container = "陝西", wp = "Xi'an"},
["咸陽"] = {container = "陝西", wp = "Xianyang"},
["寶雞"] = {container = "陝西", wp = "Baoji"},
-- Heilongjiang
["哈爾濱"] = {container = "黑龍江", wp = "Harbin"},
["大慶"] = {container = "黑龍江", wp = "Daqing"},
["齊齊哈爾"] = {container = "黑龍江", wp = "Qiqihar"},
-- Liaoning
["瀋陽"] = {container = "遼寧", wp = "Shenyang"},
["撫順"] = {container = "遼寧", wp = "Fushun"},
["大連"] = {container = "遼寧", wp = "Dalian"},
["鞍山"] = {container = "遼寧", wp = "Anshan"},
["錦州"] = {container = "遼寧", wp = "Jinzhou"},
["葫蘆島"] = {container = "遼寧", wp = "Huludao"},
["盤錦"] = {container = "遼寧", wp = "Panjin"},
-- Jilin
["長春"] = {container = "吉林", wp = "Changchun"},
["吉林市"] = {container = "吉林", wp = "Jilin City"}, -- distinct from 吉林 (province)
-- Anhui
["合肥"] = {container = "安徽", wp = "Hefei"},
["蚌埠"] = {container = "安徽", wp = "Bengbu"},
["淮南"] = {container = "安徽", wp = "Huainan"},
["蕪湖"] = {container = "安徽", wp = "Wuhu"},
["淮北"] = {container = "安徽", wp = "Huaibei"},
["滁州"] = {container = "安徽", wp = "Chuzhou"},
["六安"] = {container = "安徽", wp = "Lu'an"},
["阜陽"] = {container = "安徽", wp = "Fuyang, Anhui"},
["宿州"] = {container = "安徽", wp = "Suzhou, Anhui"}, -- distinct from 蘇州 (Jiangsu)
-- Hebei
["石家莊"] = {container = "河北", wp = "Shijiazhuang"},
["邯鄲"] = {container = "河北", wp = "Handan"},
["唐山"] = {container = "河北", wp = "Tangshan"},
["秦皇島"] = {container = "河北", wp = "Qinhuangdao"},
["邢台"] = {container = "河北", wp = "Xingtai"},
["保定"] = {container = "河北", wp = "Baoding"},
["張家口"] = {container = "河北", wp = "Zhangjiakou"},
["衡水"] = {container = "河北", wp = "Hengshui"},
["滄州"] = {container = "河北", wp = "Cangzhou"},
-- Shanxi
["太原"] = {container = "山西", wp = "Taiyuan"},
["大同"] = {container = "山西", wp = "Datong"},
["長治"] = {container = "山西", wp = "Changzhi"},
["臨汾"] = {container = "山西", wp = "Linfen"},
-- Jiangxi
["南昌"] = {container = "江西", wp = "Nanchang"},
["贛州"] = {container = "江西", wp = "Ganzhou"},
["上饒"] = {container = "江西", wp = "Shangrao"},
["九江"] = {container = "江西", wp = "Jiujiang"},
-- Guangxi (autonomous region)
["南寧"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Nanning"},
["柳州"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Liuzhou"},
["桂林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guilin"},
["玉林"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Yulin, Guangxi"},
["北海"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Beihai"},
["貴港"] = {container = {key = "廣西", placetype = "autonomous region"}, wp = "Guigang"},
-- Inner Mongolia (autonomous region)
["呼和浩特"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Hohhot"},
["包頭"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Baotou"},
["赤峰"] = {container = {key = "內蒙古", placetype = "autonomous region"}, wp = "Chifeng"},
-- Xinjiang (autonomous region)
["烏魯木齊"] = {container = {key = "新疆", placetype = "autonomous region"}, wp = "Ürümqi"},
-- Ningxia (autonomous region)
["銀川"] = {container = {key = "寧夏", placetype = "autonomous region"}, wp = "Yinchuan"},
-- Hainan
["海口"] = {container = "海南", wp = "Haikou"},
-- Qinghai
["西寧"] = {container = "青海", wp = "Xining"},
-- Gansu
["蘭州"] = {container = "甘肅", wp = "Lanzhou"},
-- Chongqing subdivision (district 142 miles from Chongqing proper)
["萬州"] = {placetype = "district", container = {key = "重慶", placetype = "direct-administered municipality"}, divs = {"subdistricts", "townships"}, wp = "Wanzhou"},
-- County within Suqian prefecture-level city
["沭陽"] = {placetype = "county", container = {key = "宿遷", placetype = "prefecture-level city"}, divs = {"subdistricts", "townships"}, wp = "Shuyang County"},
}
export.china_prefecture_level_cities_group = {
placename_to_key = false,
default_placetype = {"prefecture-level city", "city"},
default_divs = {
"districts", "subdistricts", "townships",
{type = "counties", cat_as = "縣和縣級市"},
{type = "county-level cities", cat_as = "縣和縣級市"},
},
data = export.china_prefecture_level_cities,
}
export.finland_regions = {
["拉普蘭省"] = {wp = "Lapland (Finland)"},
["北奧斯特博滕省"] = {wp = "North Ostrobothnia"},
["卡亞尼省"] = {wp = "Kainuu"},
["北卡累利亞省"] = {wp = "North Karelia"},
["北薩沃省"] = {wp = "Northern Savonia"},
["南薩沃省"] = {wp = "Southern Savonia"},
["南卡累利亞省"] = {wp = "South Karelia"},
["中芬蘭省"] = {wp = "Central Finland"},
["南奧斯特博滕省"] = {wp = "South Ostrobothnia"},
["奧斯特博滕省"] = {wp = "Ostrobothnia (region)"},
["中奧斯特博滕省"] = {wp = "Central Ostrobothnia"},
["皮爾卡馬省"] = {wp = "Pirkanmaa"},
["薩塔昆塔省"] = {wp = "Satakunta"},
["派亞特哈米省"] = {wp = "Päijät-Häme"},
["坎塔哈米省"] = {wp = "Tavastia Proper"},
["屈米河谷省"] = {wp = "Kymenlaakso"},
["烏西馬省"] = {wp = "Uusimaa"},
["西南芬蘭省"] = {wp = "Southwest Finland"},
["奧蘭群島"] = {wp = "Åland", placetype = {"autonomous region", "region"}},
}
export.finland_group = {
placename_to_key = false,
default_container = "芬蘭",
default_placetype = "region",
data = export.finland_regions,
}
export.france_administrative_regions = {
["奧弗涅-隆河-阿爾卑斯大區"] = {wp = "Auvergne-Rhône-Alpes"},
["勃艮第-弗朗什-孔泰大區"] = {wp = "Bourgogne-Franche-Comté"},
["布列塔尼大區"] = {wp = "Brittany (administrative region)"},
["中央-羅亞爾河谷大區"] = {wp = "Centre-Val de Loire"},
["科西嘉大區"] = {wp = "Corsica"},
["大東部大區"] = {wp = "Grand Est"},
["上法蘭西大區"] = {wp = "Hauts-de-France"},
["法蘭西島大區"] = {wp = "Île-de-France"},
["諾曼底大區"] = {wp = "Normandy"},
["新阿基坦大區"] = {wp = "Nouvelle-Aquitaine"},
["奧克西塔尼大區"] = {wp = "Occitanie"},
["盧瓦爾河地區大區"] = {wp = "Pays de la Loire"},
["普羅旺斯-阿爾卑斯-蔚藍海岸大區"] = {wp = "Provence-Alpes-Côte d'Azur"},
-- Old region names (pre-2016) as aliases
["北部-加萊海峽大區"] = {wp = "Nord-Pas-de-Calais"},
["加來海峽大區"] = {alias_of = "北部-加萊海峽大區"},
}
export.france_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "region",
data = export.france_administrative_regions,
}
-- France departments (abbreviated list)
export.france_departments = {
["北部省"] = {wp = "Nord (department)", container = "上法蘭西大區"},
["加來海峽省"] = {wp = "Pas-de-Calais", container = "上法蘭西大區"},
["巴黎市"] = {wp = "Paris", container = "法蘭西島大區"},
["上塞納省"] = {wp = "Hauts-de-Seine", container = "法蘭西島大區"},
}
export.france_departments_group = {
placename_to_key = false,
default_container = "法國",
default_placetype = "department",
data = export.france_departments,
}
export.germany_states = {
["巴登-符騰堡"] = {wp = "Baden-Württemberg"},
["巴伐利亞"] = {wp = "Bavaria"},
["柏林"] = {wp = "Berlin"},
["布蘭登堡"] = {wp = "Brandenburg"},
["不來梅"] = {wp = "Bremen"},
["漢堡"] = {wp = "Hamburg"},
["黑森"] = {wp = "Hesse"},
["梅克倫堡-前波美拉尼亞"] = {wp = "Mecklenburg-Vorpommern"},
["下薩克森"] = {wp = "Lower Saxony"},
["北萊茵-威斯特法倫"] = {wp = "North Rhine-Westphalia"},
["萊茵蘭-普法爾茨"] = {wp = "Rhineland-Palatinate"},
["薩爾"] = {wp = "Saarland"},
["薩克森"] = {wp = "Saxony"},
["薩克森-安哈爾特"] = {wp = "Saxony-Anhalt"},
["石勒蘇益格-荷爾斯泰因"] = {wp = "Schleswig-Holstein"},
["圖林根"] = {wp = "Thuringia"},
}
export.germany_group = {
placename_to_key = false,
default_container = "德國",
default_placetype = "state",
data = export.germany_states,
}
export.greece_regions = {
["阿提卡大區"] = {wp = "Attica (region)"},
["中希臘大區"] = {wp = "Central Greece (administrative region)"},
["中馬其頓大區"] = {wp = "Central Macedonia"},
["克里特大區"] = {wp = "Crete"},
["東馬其頓和色雷斯大區"] = {wp = "Eastern Macedonia and Thrace"},
["伊庇魯斯大區"] = {wp = "Epirus (region)"},
["愛奧尼亞群島大區"] = {wp = "Ionian Islands (region)"},
["北愛琴大區"] = {wp = "North Aegean"},
["伯羅奔尼撒大區"] = {wp = "Peloponnese (region)"},
["南愛琴大區"] = {wp = "South Aegean"},
["塞薩利大區"] = {wp = "Thessaly"},
["西希臘大區"] = {wp = "Western Greece"},
["西馬其頓大區"] = {wp = "Western Macedonia"},
["阿托斯山"] = {wp = "Monastic community of Mount Athos", placetype = {"autonomous region", "region"}},
}
export.greece_group = {
placename_to_key = false,
default_container = "希臘",
default_placetype = "region",
data = export.greece_regions,
}
export.india_states_and_union_territories = {
["安達曼-尼科巴群島"] = {placetype = "union territory", wp = "Andaman and Nicobar Islands"},
["安得拉邦"] = {wp = "Andhra Pradesh"},
["阿魯納恰爾邦"] = {wp = "Arunachal Pradesh"},
["阿薩姆"] = {wp = "Assam"},
["比哈爾邦"] = {wp = "Bihar"},
["昌迪加爾"] = {placetype = "union territory", wp = "Chandigarh"},
["恰蒂斯加爾邦"] = {wp = "Chhattisgarh"},
["達德拉-納加爾哈維利和達曼-第烏"] = {placetype = "union territory", wp = "Dadra and Nagar Haveli and Daman and Diu"},
["德里"] = {placetype = "union territory", wp = "Delhi"},
["果阿"] = {wp = "Goa"},
["古吉拉特邦"] = {wp = "Gujarat"},
["哈里亞納邦"] = {wp = "Haryana"},
["喜馬偕爾邦"] = {wp = "Himachal Pradesh"},
["查謨和克什米爾"] = {placetype = "union territory", wp = "Jammu and Kashmir (union territory)"},
["賈坎德邦"] = {wp = "Jharkhand"},
["卡納塔克邦"] = {wp = "Karnataka"},
["喀拉拉邦"] = {wp = "Kerala"},
["拉達克"] = {placetype = "union territory", wp = "Ladakh"},
["拉克沙群島"] = {placetype = "union territory", wp = "Lakshadweep"},
["中央邦"] = {wp = "Madhya Pradesh"},
["馬哈拉施特拉邦"] = {wp = "Maharashtra"},
["曼尼普爾邦"] = {wp = "Manipur"},
["梅加拉亞邦"] = {wp = "Meghalaya"},
["米佐拉姆邦"] = {wp = "Mizoram"},
["那加蘭邦"] = {wp = "Nagaland"},
["奧里薩邦"] = {wp = "Odisha"},
["本地治里"] = {placetype = "union territory", wp = "Puducherry"},
["旁遮普邦"] = {wp = "Punjab, India"},
["拉賈斯坦邦"] = {wp = "Rajasthan"},
["錫金"] = {wp = "Sikkim"},
["泰米爾納德邦"] = {wp = "Tamil Nadu"},
["特倫甘納邦"] = {wp = "Telangana"},
["特里普拉邦"] = {wp = "Tripura"},
["北方邦"] = {wp = "Uttar Pradesh"},
["北阿坎德邦"] = {wp = "Uttarakhand"},
["西孟加拉邦"] = {wp = "West Bengal"},
}
export.india_group = {
placename_to_key = false,
default_container = "印度",
default_placetype = "state",
default_divs = {"districts"},
data = export.india_states_and_union_territories,
}
export.indonesia_provinces = {
["亞齊省"] = {wp = "Aceh"},
["峇里省"] = {wp = "Bali"},
["邦加勿里洞省"] = {wp = "Bangka Belitung Islands"},
["萬丹省"] = {wp = "Banten"},
["明古魯省"] = {wp = "Bengkulu"},
["中爪哇省"] = {wp = "Central Java"},
["中加里曼丹省"] = {wp = "Central Kalimantan"},
["中巴布亞省"] = {wp = "Central Papua"},
["中蘇拉威西省"] = {wp = "Central Sulawesi"},
["東爪哇省"] = {wp = "East Java"},
["東加里曼丹省"] = {wp = "East Kalimantan"},
["東努沙登加拉省"] = {wp = "East Nusa Tenggara"},
["哥倫打洛省"] = {wp = "Gorontalo"},
["巴布亞高地省"] = {wp = "Highland Papua"},
["雅加達首都特區"] = {wp = "Jakarta"},
["占碑省"] = {wp = "Jambi"},
["楠榜省"] = {wp = "Lampung"},
["馬魯古省"] = {wp = "Maluku"},
["北加里曼丹省"] = {wp = "North Kalimantan"},
["北馬魯古省"] = {wp = "North Maluku"},
["北蘇拉威西省"] = {wp = "North Sulawesi"},
["北巴布亞省"] = {wp = "North Papua"},
["北蘇門答臘省"] = {wp = "North Sumatra"},
["巴布亞省"] = {wp = "Papua (province)"},
["廖內省"] = {wp = "Riau"},
["廖內群島省"] = {wp = "Riau Islands"},
["東南蘇拉威西省"] = {wp = "Southeast Sulawesi"},
["南加里曼丹省"] = {wp = "South Kalimantan"},
["南巴布亞省"] = {wp = "South Papua"},
["南蘇拉威西省"] = {wp = "South Sulawesi"},
["南蘇門答臘省"] = {wp = "South Sumatra"},
["西南巴布亞省"] = {wp = "Southwest Papua"},
["西爪哇省"] = {wp = "West Java"},
["西加里曼丹省"] = {wp = "West Kalimantan"},
["西努沙登加拉省"] = {wp = "West Nusa Tenggara"},
["西巴布亞省"] = {wp = "West Papua (province)"},
["西蘇拉威西省"] = {wp = "West Sulawesi"},
["西蘇門答臘省"] = {wp = "West Sumatra"},
["日惹特區"] = {wp = "Special Region of Yogyakarta"},
}
export.indonesia_group = {
placename_to_key = false,
default_container = "印度尼西亞",
default_placetype = "province",
data = export.indonesia_provinces,
}
export.iran_provinces = {
["阿爾博爾茲省"] = {wp = "Alborz Province"},
["阿爾達比勒省"] = {wp = "Ardabil Province"},
["布什爾省"] = {wp = "Bushehr Province"},
["恰哈爾馬哈勒-巴赫蒂亞里省"] = {wp = "Chaharmahal and Bakhtiari Province"},
["東阿塞拜疆省"] = {wp = "East Azerbaijan Province"},
["法爾斯省"] = {wp = "Fars Province"},
["帕爾斯省"] = {alias_of = "法爾斯省"},
["吉蘭省"] = {wp = "Gilan Province"},
["戈勒斯坦省"] = {wp = "Golestan Province"},
["哈馬丹省"] = {wp = "Hamadan Province"},
["霍爾木茲甘省"] = {wp = "Hormozgan Province"},
["伊拉姆省"] = {wp = "Ilam Province"},
["伊斯法罕省"] = {wp = "Isfahan Province"},
["克爾曼省"] = {wp = "Kerman Province"},
["克爾曼沙赫省"] = {wp = "Kermanshah Province"},
["胡齊斯坦省"] = {wp = "Khuzestan Province"},
["科吉盧耶-博亞赫邁德省"] = {wp = "Kohgiluyeh and Boyer-Ahmad Province"},
["庫爾德斯坦省"] = {wp = "Kurdistan Province"},
["洛雷斯坦省"] = {wp = "Lorestan Province"},
["馬爾卡齊省"] = {wp = "Markazi Province"},
["馬贊達蘭省"] = {wp = "Mazandaran Province"},
["北呼羅珊省"] = {wp = "North Khorasan Province"},
["加茲溫省"] = {wp = "Qazvin Province"},
["庫姆省"] = {wp = "Qom Province"},
["拉扎維呼羅珊省"] = {wp = "Razavi Khorasan Province"},
["森南省"] = {wp = "Semnan Province"},
["錫斯坦-俾路支斯坦省"] = {wp = "Sistan and Baluchestan Province"},
["南呼羅珊省"] = {wp = "South Khorasan Province"},
["德黑蘭省"] = {wp = "Tehran Province"},
["西阿塞拜疆省"] = {wp = "West Azerbaijan Province"},
["亞茲德省"] = {wp = "Yazd Province"},
["贊詹省"] = {wp = "Zanjan Province"},
}
export.iran_group = {
placename_to_key = false,
default_container = "伊朗",
default_placetype = "province",
data = export.iran_provinces,
}
export.ireland_counties = {
["卡洛郡"] = {wp = "County Carlow"},
["卡文郡"] = {wp = "County Cavan"},
["克萊爾郡"] = {wp = "County Clare"},
["科克郡"] = {wp = "County Cork"},
["多尼戈爾郡"] = {wp = "County Donegal"},
["都柏林郡"] = {wp = "County Dublin"},
["戈爾韋郡"] = {wp = "County Galway"},
["克里郡"] = {wp = "County Kerry"},
["基爾代爾郡"] = {wp = "County Kildare"},
["基爾肯尼郡"] = {wp = "County Kilkenny"},
["萊什郡"] = {wp = "County Laois"},
["利特里姆郡"] = {wp = "County Leitrim"},
["利默里克郡"] = {wp = "County Limerick"},
["朗福德郡"] = {wp = "County Longford"},
["勞斯郡"] = {wp = "County Louth"},
["梅奧郡"] = {wp = "County Mayo"},
["米斯郡"] = {wp = "County Meath"},
["莫納亨郡"] = {wp = "County Monaghan"},
["奧法利郡"] = {wp = "County Offaly"},
["羅斯康芒郡"] = {wp = "County Roscommon"},
["斯萊戈郡"] = {wp = "County Sligo"},
["蒂珀雷里郡"] = {wp = "County Tipperary"},
["沃特福德郡"] = {wp = "County Waterford"},
["西米斯郡"] = {wp = "County Westmeath"},
["韋克斯福德郡"] = {wp = "County Wexford"},
["威克洛郡"] = {wp = "County Wicklow"},
}
-- local function make_irish_type_key_to_placename(container_pattern)
-- return function(key)
-- key = key:gsub(container_pattern, "")
-- local elliptical_key = key:gsub("^County ", "")
-- return key, elliptical_key
-- end
-- end
-- local function make_irish_type_placename_to_key(container_suffix)
-- return function(placename)
-- if not placename:find("^County ") and not placename:find("^City ") then
-- placename = "County " .. placename
-- end
-- return placename .. container_suffix
-- end
-- end
-- counties of Ireland
export.ireland_group = {
placename_to_key = false,
default_container = "愛爾蘭",
default_placetype = "county",
data = export.ireland_counties,
}
export.italy_administrative_regions = {
["阿布魯佐"] = {wp = "Abruzzo"},
["巴西利卡塔"] = {wp = "Basilicata"},
["卡拉布里亞"] = {wp = "Calabria"},
["坎帕尼亞"] = {wp = "Campania"},
["艾米利亞-羅馬涅"] = {wp = "Emilia-Romagna"},
["弗留利-威尼斯朱利亞"] = {wp = "Friuli-Venezia Giulia"},
["拉齊奧"] = {wp = "Lazio"},
["利古里亞"] = {wp = "Liguria"},
["倫巴第"] = {wp = "Lombardy"},
["倫巴底"] = {alias_of = "倫巴第"},
["馬爾凱"] = {wp = "Marche"},
["莫利塞"] = {wp = "Molise"},
["皮埃蒙特"] = {wp = "Piedmont"},
["普利亞"] = {wp = "Apulia"},
["阿普利亞"] = {alias_of = "普利亞"},
["薩丁尼亞"] = {wp = "Sardinia"},
["西西里"] = {wp = "Sicily"},
["托斯卡納"] = {wp = "Tuscany"},
["特倫蒂諾-上阿迪傑"] = {wp = "Trentino-Alto Adige/Südtirol"},
["翁布里亞"] = {wp = "Umbria"},
["奧斯塔谷"] = {wp = "Aosta Valley"},
["威尼托"] = {wp = "Veneto"},
}
export.italy_group = {
placename_to_key = false,
default_container = "意大利",
default_placetype = "region",
data = export.italy_administrative_regions,
}
-- table of Japanese prefectures; interpolated into the main 'places' table, but also needed separately
export.japan_prefectures = {
["青森縣"] = {wp = "青森縣"},
["岩手縣"] = {wp = "岩手縣"},
["宮城縣"] = {wp = "宮城縣"},
["秋田縣"] = {wp = "秋田縣"},
["山形縣"] = {wp = "山形縣"},
["福島縣"] = {wp = "福島縣"},
["茨城縣"] = {wp = "茨城縣"},
["栃木縣"] = {wp = "栃木縣"},
["群馬縣"] = {wp = "群馬縣"},
["埼玉縣"] = {wp = "埼玉縣"},
["千葉縣"] = {wp = "千葉縣"},
["神奈川縣"] = {wp = "神奈川縣"},
["新潟縣"] = {wp = "新潟縣"},
["富山縣"] = {wp = "富山縣"},
["石川縣"] = {wp = "石川縣"},
["福井縣"] = {wp = "福井縣"},
["山梨縣"] = {wp = "山梨縣"},
["長野縣"] = {wp = "長野縣"},
["岐阜縣"] = {wp = "岐阜縣"},
["靜岡縣"] = {wp = "靜岡縣"},
["愛知縣"] = {wp = "愛知縣"},
["三重縣"] = {wp = "三重縣"},
["滋賀縣"] = {wp = "滋賀縣"},
["兵庫縣"] = {wp = "兵庫縣"},
["奈良縣"] = {wp = "奈良縣"},
["和歌山縣"] = {wp = "和歌山縣"},
["鳥取縣"] = {wp = "鳥取縣"},
["島根縣"] = {wp = "島根縣"},
["岡山縣"] = {wp = "岡山縣"},
["廣島縣"] = {wp = "廣島縣"},
["山口縣"] = {wp = "山口縣"},
["德島縣"] = {wp = "德島縣"},
["香川縣"] = {wp = "香川縣"},
["愛媛縣"] = {wp = "愛媛縣"},
["高知縣"] = {wp = "高知縣"},
["福岡縣"] = {wp = "福岡縣"},
["佐賀縣"] = {wp = "佐賀縣"},
["長崎縣"] = {wp = "長崎縣"},
["熊本縣"] = {wp = "熊本縣"},
["大分縣"] = {wp = "大分縣"},
["宮崎縣"] = {wp = "宮崎縣"},
["鹿兒島縣"] = {wp = "鹿兒島縣"},
["沖繩縣"] = {wp = "沖繩縣"},
["北海道"] = {divs = {"subprefectures"}, wp = "北海道"},
["京都府"] = {wp = "京都府"},
["大阪府"] = {wp = "大阪府"},
}
local function japan_placename_to_key(placename)
local japan_placename_to_key_map = {
-- ["東京"] = "東京都",
["大阪"] = "大阪府",
["京都"] = "京都府",
}
if placename:find("[都道府縣]$") then
return placename -- 已帶後綴,不轉換
end
return japan_placename_to_key_map[placename] or (placename .. "縣")
end
-- prefectures of Japan
export.japan_group = {
key_to_placename = make_key_to_placename(nil, "[都道府縣]$"),
placename_to_key = japan_placename_to_key,
default_container = "日本",
default_placetype = "prefecture",
default_divs = {"cities", "districts"},
data = export.japan_prefectures,
}
export.laos_provinces = {
["阿塔坡省"] = {wp = "Attapeu Province"},
["博膠省"] = {wp = "Bokeo Province"},
["波里坎賽省"] = {wp = "Bolikhamxai Province"},
["占巴塞省"] = {wp = "Champasak Province"},
["華潘省"] = {wp = "Houaphanh Province"},
["甘蒙省"] = {wp = "Khammouane Province"},
["南塔省"] = {wp = "Luang Namtha Province"},
["琅勃拉邦省"] = {wp = "Luang Prabang Province"},
["烏多姆賽省"] = {wp = "Oudomxay Province"},
["豐沙里省"] = {wp = "Phongsaly Province"},
["沙拉灣省"] = {wp = "Salavan Province"},
["沙灣拿吉省"] = {wp = "Savannakhet Province"},
["萬象省"] = {wp = "Vientiane Province"},
["萬象直轄市"] = {placetype = "prefecture", wp = "Vientiane Prefecture"},
["賽亞武里省"] = {wp = "Sainyabuli Province"},
["塞公省"] = {wp = "Sekong Province"},
["賽頌本省"] = {wp = "Xaisomboun Province"},
["川壙省"] = {wp = "Xiangkhouang Province"},
}
export.laos_group = {
placename_to_key = false,
default_container = "老撾",
default_placetype = "province",
data = export.laos_provinces,
}
export.lebanon_governorates = {
["阿卡爾省"] = {wp = "Akkar Governorate"},
["巴勒貝克-赫爾梅勒省"] = {wp = "Baalbek-Hermel Governorate"},
["貝魯特省"] = {wp = "Beirut Governorate"},
["貝卡省"] = {wp = "Beqaa Governorate"},
["克塞旺-裘拜勒省"] = {wp = "Keserwan-Jbeil Governorate"},
["黎巴嫩山省"] = {wp = "Mount Lebanon Governorate"},
["納巴蒂耶省"] = {wp = "Nabatieh Governorate"},
["北部省(黎巴嫩)"] = {wp = "North Governorate (Lebanon)", no_auto_augment_container = true},
["南部省(黎巴嫩)"] = {wp = "South Governorate (Lebanon)", no_auto_augment_container = true},
}
export.lebanon_group = {
placename_to_key = false,
default_container = "黎巴嫩",
default_placetype = "governorate",
data = export.lebanon_governorates,
}
export.malaysia_states = {
["柔佛州"] = {wp = "Johor"},
["吉打州"] = {wp = "Kedah"},
["吉蘭丹州"] = {wp = "Kelantan"},
["馬六甲州"] = {wp = "Malacca"},
["森美蘭州"] = {wp = "Negeri Sembilan"},
["彭亨州"] = {wp = "Pahang"},
["檳城州"] = {wp = "Penang"},
["霹靂州"] = {wp = "Perak"},
["玻璃市州"] = {wp = "Perlis"},
["沙巴州"] = {wp = "Sabah"},
["砂拉越州"] = {wp = "Sarawak"},
["雪蘭莪州"] = {wp = "Selangor"},
["登嘉樓州"] = {wp = "Terengganu"},
}
export.malaysia_group = {
placename_to_key = false,
default_container = "馬來西亞",
default_placetype = "state",
data = export.malaysia_states,
}
export.malta_regions = {
["東部區(馬爾他)"] = {wp = "Eastern Region, Malta", no_auto_augment_container = true},
["戈佐區"] = {wp = "Gozo Region"},
["北部區(馬爾他)"] = {wp = "Northern Region, Malta", no_auto_augment_container = true},
["港口區"] = {wp = "Port Region, Malta"},
["南部區(馬爾他)"] = {wp = "Southern Region, Malta", no_auto_augment_container = true},
["西部區(馬爾他)"] = {wp = "Western Region, Malta", no_auto_augment_container = true},
}
export.malta_group = {
placename_to_key = false,
default_container = "馬爾他",
default_placetype = "region",
data = export.malta_regions,
}
export.mexico_states = {
["阿瓜斯卡連特斯州"] = {wp = "Aguascalientes"},
["下加利福尼亞州"] = {wp = "Baja California"},
["南下加利福尼亞州"] = {wp = "Baja California Sur"},
["坎佩切州"] = {wp = "Campeche"},
["恰帕斯州"] = {wp = "Chiapas"},
["奇瓦瓦州"] = {wp = "Chihuahua (state)"},
["科阿韋拉州"] = {wp = "Coahuila"},
["科利馬州"] = {wp = "Colima"},
["杜蘭戈州"] = {wp = "Durango"},
["瓜納華托州"] = {wp = "Guanajuato"},
["格雷羅州"] = {wp = "Guerrero"},
["伊達爾戈州"] = {wp = "Hidalgo (state)"},
["哈利斯科州"] = {wp = "Jalisco"},
["墨西哥州"] = {wp = "State of Mexico"},
["米卻肯州"] = {wp = "Michoacán"},
["莫雷洛斯州"] = {wp = "Morelos"},
["納亞里特州"] = {wp = "Nayarit"},
["新萊昂州"] = {wp = "Nuevo León"},
["瓦哈卡州"] = {wp = "Oaxaca"},
["普埃布拉州"] = {wp = "Puebla"},
["克雷塔羅州"] = {wp = "Querétaro"},
["金塔納羅奧州"] = {wp = "Quintana Roo"},
["聖路易斯波托西州"] = {wp = "San Luis Potosí"},
["錫那羅亞州"] = {wp = "Sinaloa"},
["索諾拉州"] = {wp = "Sonora"},
["塔巴斯科州"] = {wp = "Tabasco (state)"},
["塔毛利帕斯州"] = {wp = "Tamaulipas"},
["特拉斯卡拉州"] = {wp = "Tlaxcala"},
["韋拉克魯斯州"] = {wp = "Veracruz"},
["尤卡坦州"] = {wp = "Yucatán"},
["薩卡特卡斯州"] = {wp = "Zacatecas"},
}
export.mexico_group = {
placename_to_key = false,
default_container = "墨西哥",
default_placetype = "state",
data = export.mexico_states,
}
export.moldova_districts_and_autonomous_territorial_units = {
["阿內尼諾伊區"] = {wp = "Anenii Noi District"},
["巴薩拉比亞斯卡區"] = {wp = "Basarabeasca District"},
["布里切尼區"] = {wp = "Briceni District"},
["卡胡爾區"] = {wp = "Cahul District"},
["坎特米爾區"] = {wp = "Cantemir District"},
["克勒拉希區"] = {wp = "Călărași District"},
["考沙尼區"] = {wp = "Căușeni District"},
["奇米什利亞區"] = {wp = "Cimișlia District"},
["克里烏列尼區"] = {wp = "Criuleni District"},
["東杜沙尼區"] = {wp = "Dondușeni District"},
["德羅基亞區"] = {wp = "Drochia District"},
["杜巴薩里區"] = {wp = "Dubăsari District"},
["埃迪涅茨區"] = {wp = "Edineț District"},
["法勒什蒂區"] = {wp = "Fălești District"},
["弗洛雷什蒂區"] = {wp = "Florești District"},
["格洛德尼區"] = {wp = "Glodeni District"},
["欣切什蒂區"] = {wp = "Hîncești District"},
["亞洛韋尼區"] = {wp = "Ialoveni District"},
["萊奧瓦區"] = {wp = "Leova District"},
["尼斯波雷尼區"] = {wp = "Nisporeni District"},
["奧克尼察區"] = {wp = "Ocnița District"},
["奧爾海伊區"] = {wp = "Orhei District"},
["雷齊納區"] = {wp = "Rezina District"},
["雷什卡尼區"] = {wp = "Rîșcani District"},
["辛格雷伊區"] = {wp = "Sîngerei District"},
["索羅卡區"] = {wp = "Soroca District"},
["斯特拉沙尼區"] = {wp = "Strășeni District"},
["紹爾達涅什蒂區"] = {wp = "Șoldănești District"},
["斯蒂凡沃達區"] = {wp = "Ștefan Vodă District"},
["塔拉克利亞區"] = {wp = "Taraclia District"},
["泰萊涅什蒂區"] = {wp = "Telenești District"},
["翁格尼區"] = {wp = "Ungheni District"},
["基希訥烏市"] = {wp = "Chișinău", placetype = "municipality"},
["巴爾茨市"] = {wp = "Bălți", placetype = "municipality"},
["加告茲自治領土"] = {wp = "Gagauzia", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
["本德爾市"] = {wp = "Bender, Moldova", placetype = "municipality"},
["德涅斯特河沿岸"] = {wp = "Transnistria", placetype = {"autonomous territorial unit", "autonomous region", "region"}},
}
export.moldova_group = {
placename_to_key = false,
default_container = "摩爾多瓦",
default_placetype = {"district", "raion"},
data = export.moldova_districts_and_autonomous_territorial_units,
}
export.morocco_regions = {
["丹吉爾-得土安-霍賽馬大區"] = {wp = "Tangier-Tetouan-Al Hoceima"},
["東方大區(摩洛哥)"] = {wp = "Oriental, Morocco"},
["非斯-梅克內斯大區"] = {wp = "Fez-Meknes"},
["拉巴特-薩累-肯尼特拉大區"] = {wp = "Rabat-Salé-Kénitra"},
["貝尼梅拉勒-赫尼夫拉大區"] = {wp = "Béni Mellal-Khénifra"},
["卡薩布蘭卡-塞塔特大區"] = {wp = "Casablanca-Settat"},
["馬拉喀什-薩菲大區"] = {wp = "Marrakesh-Safi"},
["德拉阿-塔菲拉勒特大區"] = {wp = "Drâa-Tafilalet"},
["蘇斯-馬薩大區"] = {wp = "Souss-Massa"},
["蓋勒明-烏德農大區"] = {wp = "Guelmim-Oued Noun"},
["拉阿永-薩基亞-哈姆拉大區"] = {wp = "Laâyoune-Sakia El Hamra"},
["達赫拉-奧以德達赫卜大區"] = {wp = "Dakhla-Oued Ed-Dahab"},
}
export.morocco_group = {
placename_to_key = false,
default_container = "摩洛哥",
default_placetype = "region",
data = export.morocco_regions,
}
export.egypt_governorates = {
["開羅省"] = {wp = "Cairo Governorate"},
["吉薩省"] = {wp = "Giza Governorate"},
["夏爾基亞省"] = {wp = "Sharqia Governorate"},
["達卡利亞省"] = {wp = "Dakahlia Governorate"},
["貝海拉省"] = {wp = "Beheira Governorate"},
["明亞省"] = {wp = "Minya Governorate"},
["蓋柳比亞省"] = {wp = "Qalyubia Governorate"},
["索哈傑省"] = {wp = "Sohag Governorate"},
["亞歷山大省"] = {wp = "Alexandria Governorate"},
["加爾比亞省"] = {wp = "Gharbia Governorate"},
["艾斯尤特省"] = {wp = "Asyut Governorate"},
["莫諾菲亞省"] = {wp = "Monufia Governorate"},
["法尤姆省"] = {wp = "Faiyum Governorate"},
["卡夫爾謝赫省"] = {wp = "Kafr El Sheikh Governorate"},
["基納省"] = {wp = "Qena Governorate"},
["本尼蘇威夫省"] = {wp = "Beni Suef Governorate"},
["達米埃塔省"] = {wp = "Damietta Governorate"},
["阿斯旺省"] = {wp = "Aswan Governorate"},
["伊斯梅利亞省"] = {wp = "Ismailia Governorate"},
["盧克索省"] = {wp = "Luxor Governorate"},
["蘇伊士省"] = {wp = "Suez Governorate"},
["塞德港省"] = {wp = "Port Said Governorate"},
["馬特魯省"] = {wp = "Matrouh Governorate"},
["北西奈省"] = {wp = "North Sinai Governorate"},
["紅海省"] = {wp = "Red Sea Governorate"},
["新河谷省"] = {wp = "New Valley Governorate"},
["南西奈省"] = {wp = "South Sinai Governorate"},
}
export.egypt_group = {
placename_to_key = false,
default_container = "埃及",
default_placetype = "governorate",
data = export.egypt_governorates,
}
export.spain_autonomous_communities = {
["安達盧西亞"] = {wp = "Andalusia"},
["安達魯西亞"] = {alias_of = "安達盧西亞"},
["阿拉貢"] = {wp = "Aragon"},
["阿斯圖里亞斯"] = {wp = "Asturias"},
["巴利阿里群島"] = {wp = "Balearic Islands"},
["巴斯克"] = {wp = "Basque Country (autonomous community)"},
["加那利群島"] = {wp = "Canary Islands"},
["坎塔布里亞"] = {wp = "Cantabria"},
["卡斯蒂利亞-拉曼恰"] = {wp = "Castilla-La Mancha"},
["卡斯蒂利亞-萊昂"] = {wp = "Castilla y León"},
["加泰羅尼亞"] = {wp = "Catalonia"},
["加泰隆尼亞"] = {alias_of = "加泰羅尼亞"},
["埃斯特雷馬杜拉"] = {wp = "Extremadura"},
["加利西亞"] = {wp = "Galicia (Spain)"},
["拉里奧哈"] = {wp = "La Rioja (autonomous community)"},
["馬德里自治區"] = {wp = "Community of Madrid"},
["穆爾西亞"] = {wp = "Region of Murcia"},
["納瓦拉"] = {wp = "Navarre"},
["巴倫西亞"] = {wp = "Valencian Community"},
["巴倫西亞自治區"] = {alias_of = "巴倫西亞"},
}
export.spain_group = {
placename_to_key = false,
default_container = "西班牙",
default_placetype = "autonomous community",
data = export.spain_autonomous_communities,
}
export.taiwan_counties = {
["彰化縣"] = {wp = "彰化縣"},
["嘉義縣"] = {wp = "嘉義縣"},
["新竹縣"] = {wp = "新竹縣"},
["花蓮縣"] = {wp = "花蓮縣"},
["金門縣"] = {wp = "金門縣"},
["連江縣"] = {wp = "連江縣"},
["苗栗縣"] = {wp = "苗栗縣"},
["南投縣"] = {wp = "南投縣"},
["屏東縣"] = {wp = "屏東縣"},
["澎湖縣"] = {wp = "澎湖縣"},
["宜蘭縣"] = {wp = "宜蘭縣"},
["雲林縣"] = {wp = "雲林縣"},
}
export.taiwan_group = {
key_to_placename = make_key_to_placename(nil, "縣$"),
placename_to_key = make_placename_to_key("縣"),
default_container = "臺灣",
default_placetype = "county",
default_divs = {"districts", "townships"},
data = export.taiwan_counties,
}
export.new_york_boroughs = {
["布朗克斯"] = {the = true, wp = "The Bronx"},
["布魯克林"] = {wp = "Brooklyn"},
["曼哈頓"] = {wp = "Manhattan"},
["皇后區"] = {wp = "Queens"},
["史泰登島"] = {wp = "Staten Island"},
}
export.new_york_boroughs_group = {
placename_to_key = false,
default_container = {key = "紐約市", placetype = "city"},
default_placetype = "borough",
default_is_city = true,
data = export.new_york_boroughs,
}
export.romania_counties = {
["阿爾巴縣"] = {wp = "Alba County"},
["阿拉德縣"] = {wp = "Arad County"},
["阿爾傑什縣"] = {wp = "Argeș County"},
["巴考縣"] = {wp = "Bacău County"},
["比霍爾縣"] = {wp = "Bihor County"},
["比斯特里察-訥瑟烏德縣"] = {wp = "Bistrița-Năsăud County"},
["博托沙尼縣"] = {wp = "Botoșani County"},
["布拉索夫縣"] = {wp = "Brașov County"},
["布勒伊拉縣"] = {wp = "Brăila County"},
["布澤烏縣"] = {wp = "Buzău County"},
["卡拉什-塞韋林縣"] = {wp = "Caraș-Severin County"},
["克盧日縣"] = {wp = "Cluj County"},
["康斯坦察縣"] = {wp = "Constanța County"},
["科瓦斯納縣"] = {wp = "Covasna County"},
["克勒拉希縣"] = {wp = "Călărași County"},
["多爾日縣"] = {wp = "Dolj County"},
["登博維察縣"] = {wp = "Dâmbovița County"},
["加拉茨縣"] = {wp = "Galați County"},
["久爾久縣"] = {wp = "Giurgiu County"},
["戈爾日縣"] = {wp = "Gorj County"},
["哈爾吉塔縣"] = {wp = "Harghita County"},
["胡內多阿拉縣"] = {wp = "Hunedoara County"},
["雅洛米察縣"] = {wp = "Ialomița County"},
["雅西縣"] = {wp = "Iași County"},
["伊爾福夫縣"] = {wp = "Ilfov County"},
["馬拉穆列什縣"] = {wp = "Maramureș County"},
["梅赫丁茨縣"] = {wp = "Mehedinți County"},
["穆列什縣"] = {wp = "Mureș County"},
["尼亞姆茨縣"] = {wp = "Neamț County"},
["奧爾特縣"] = {wp = "Olt County"},
["普拉霍瓦縣"] = {wp = "Prahova County"},
["薩圖馬雷縣"] = {wp = "Satu Mare County"},
["錫比烏縣"] = {wp = "Sibiu County"},
["蘇恰瓦縣"] = {wp = "Suceava County"},
["瑟拉日縣"] = {wp = "Sălaj County"},
["特列奧爾曼縣"] = {wp = "Teleorman County"},
["蒂米什縣"] = {wp = "Timiș County"},
["圖爾恰縣"] = {wp = "Tulcea County"},
["瓦斯盧伊縣"] = {wp = "Vaslui County"},
["弗蘭恰縣"] = {wp = "Vrancea County"},
["沃爾恰縣"] = {wp = "Vâlcea County"},
}
export.romania_group = {
placename_to_key = false,
default_container = "羅馬尼亞",
default_placetype = "county",
data = export.romania_counties,
}
export.north_korea_provinces = {
["慈江道"] = {wp = "慈江道"},
["咸鏡北道"] = {wp = "咸鏡北道"},
["咸鏡南道"] = {wp = "咸鏡南道"},
["黃海北道"] = {wp = "黃海北道"},
["黃海南道"] = {wp = "黃海南道"},
["江原道(北韓)"] = {wp = "江原道 (朝鮮民主主義人民共和國)"},
["平安北道"] = {wp = "平安北道"},
["平安南道"] = {wp = "平安南道"},
["兩江道"] = {wp = "兩江道"},
}
export.north_korea_group = {
placename_to_key = false,
default_container = "朝鮮",
default_placetype = "province",
data = export.north_korea_provinces,
}
export.south_korea_provinces = {
["忠清北道"] = {wp = "忠清北道"},
["忠清南道"] = {wp = "忠清南道"},
["江原道(南韓)"] = {wp = "江原特別自治道"},
["京畿道"] = {wp = "京畿道"},
["慶尚北道"] = {wp = "慶尚北道"},
["慶尚南道"] = {wp = "慶尚南道"},
["全羅北道"] = {wp = "全羅北道"},
["全羅南道"] = {wp = "全羅南道"},
["濟州道"] = {wp = "濟州道"},
}
export.south_korea_group = {
placename_to_key = false,
default_container = "韓國",
default_placetype = "province",
data = export.south_korea_provinces,
}
export.thailand_provinces = {
["阿姆納特坤府"] = {wp = "Amnat Charoen Province"},
["紅統府"] = {wp = "Ang Thong Province"},
["彭侃府"] = {wp = "Bueng Kan Province"},
["武里南府"] = {wp = "Buriram Province"},
["北柳府"] = {wp = "Chachoengsao Province"},
["猜納府"] = {wp = "Chai Nat Province"},
["猜耶奔府"] = {wp = "Chaiyaphum Province"},
["尖竹汶府"] = {wp = "Chanthaburi Province"},
["清邁府"] = {wp = "Chiang Mai Province"},
["清萊府"] = {wp = "Chiang Rai Province"},
["春武里府"] = {wp = "Chonburi Province"},
["春蓬府"] = {wp = "Chumphon Province"},
["加拉信府"] = {wp = "Kalasin Province"},
["甘烹碧府"] = {wp = "Kamphaeng Phet Province"},
["北碧府"] = {wp = "Kanchanaburi Province"},
["孔敬府"] = {wp = "Khon Kaen Province"},
["甲米府"] = {wp = "Krabi Province"},
["南邦府"] = {wp = "Lampang Province"},
["南奔府"] = {wp = "Lamphun Province"},
["黎府"] = {wp = "Loei Province"},
["華富里府"] = {wp = "Lopburi Province"},
["夜豐頌府"] = {wp = "Mae Hong Son Province"},
["瑪哈沙拉堪府"] = {wp = "Maha Sarakham Province"},
["莫達罕府"] = {wp = "Mukdahan Province"},
["那空那育府"] = {wp = "Nakhon Nayok Province"},
["佛統府"] = {wp = "Nakhon Pathom Province"},
["那空帕農府"] = {wp = "Nakhon Phanom Province"},
["呵叻府"] = {wp = "Nakhon Ratchasima Province"},
["那空沙旺府"] = {wp = "Nakhon Sawan Province"},
["洛坤府"] = {wp = "Nakhon Si Thammarat Province"},
["難府"] = {wp = "Nan Province"},
["那拉提瓦府"] = {wp = "Narathiwat Province"},
["農布瓦蘭普府"] = {wp = "Nong Bua Lamphu Province"},
["廊開府"] = {wp = "Nong Khai Province"},
["暖武里府"] = {wp = "Nonthaburi Province"},
["巴吞他尼府"] = {wp = "Pathum Thani Province"},
["北大年府"] = {wp = "Pattani Province"},
["攀牙府"] = {wp = "Phang Nga Province"},
["博他侖府"] = {wp = "Phatthalung Province"},
["帕堯府"] = {wp = "Phayao Province"},
["碧差汶府"] = {wp = "Phetchabun Province"},
["碧武里府"] = {wp = "Phetchaburi Province"},
["披集府"] = {wp = "Phichit Province"},
["彭世洛府"] = {wp = "Phitsanulok Province"},
["大城府"] = {wp = "Phra Nakhon Si Ayutthaya Province"},
["帕府"] = {wp = "Phrae Province"},
["普吉府"] = {wp = "Phuket Province"},
["巴真府"] = {wp = "Prachinburi Province"},
["巴蜀府"] = {wp = "Prachuap Khiri Khan Province"},
["拉廊府"] = {wp = "Ranong Province"},
["叻丕府"] = {wp = "Ratchaburi Province"},
["羅勇府"] = {wp = "Rayong Province"},
["黎逸府"] = {wp = "Roi Et Province"},
["沙繳府"] = {wp = "Sa Kaeo Province"},
["色軍府"] = {wp = "Sakon Nakhon Province"},
["北欖府"] = {wp = "Samut Prakan Province"},
["沙沒沙空府"] = {wp = "Samut Sakhon Province"},
["沙沒頌堪府"] = {wp = "Samut Songkhram Province"},
["沙拉武里府"] = {wp = "Saraburi Province"},
["沙敦府"] = {wp = "Satun Province"},
["信武里府"] = {wp = "Sing Buri Province"},
["四色菊府"] = {wp = "Sisaket Province"},
["宋卡府"] = {wp = "Songkhla Province"},
["素可泰府"] = {wp = "Sukhothai Province"},
["素攀武里府"] = {wp = "Suphan Buri Province"},
["素叻他尼府"] = {wp = "Surat Thani Province"},
["素林府"] = {wp = "Surin Province"},
["達府"] = {wp = "Tak Province"},
["董里府"] = {wp = "Trang Province"},
["達叻府"] = {wp = "Trat Province"},
["烏汶府"] = {wp = "Ubon Ratchathani Province"},
["烏隆府"] = {wp = "Udon Thani Province"},
["烏泰他尼府"] = {wp = "Uthai Thani Province"},
["烏達拉勐府"] = {wp = "Uttaradit Province"},
["惹拉府"] = {wp = "Yala Province"},
["耶梭通府"] = {wp = "Yasothon Province"},
}
export.thailand_group = {
placename_to_key = false,
default_container = "泰國",
default_placetype = "province",
data = export.thailand_provinces,
}
export.turkey_provinces = {
["阿達納省"] = {wp = "Adana Province"},
["阿德亞曼省"] = {wp = "Adıyaman Province"},
["阿菲永卡拉希薩爾省"] = {wp = "Afyonkarahisar Province"},
["阿里省"] = {wp = "Ağrı Province"},
["阿馬西亞省"] = {wp = "Amasya Province"},
["安卡拉省"] = {wp = "Ankara Province"},
["安塔利亞省"] = {wp = "Antalya Province"},
["阿爾特溫省"] = {wp = "Artvin Province"},
["艾登省"] = {wp = "Aydın Province"},
["巴勒克埃西爾省"] = {wp = "Balıkesir Province"},
["比萊吉克省"] = {wp = "Bilecik Province"},
["賓格爾省"] = {wp = "Bingöl Province"},
["比特利斯省"] = {wp = "Bitlis Province"},
["博盧省"] = {wp = "Bolu Province"},
["布爾杜爾省"] = {wp = "Burdur Province"},
["布爾薩省"] = {wp = "Bursa Province"},
["恰納卡萊省"] = {wp = "Çanakkale Province"},
["昌克勒省"] = {wp = "Çankırı Province"},
["喬魯姆省"] = {wp = "Çorum Province"},
["代尼茲利省"] = {wp = "Denizli Province"},
["迪亞巴克爾省"] = {wp = "Diyarbakır Province"},
["埃迪爾內省"] = {wp = "Edirne Province"},
["埃拉澤省"] = {wp = "Elazığ Province"},
["埃爾津詹省"] = {wp = "Erzincan Province"},
["埃爾祖魯姆省"] = {wp = "Erzurum Province"},
["埃斯基謝希爾省"] = {wp = "Eskişehir Province"},
["加濟安泰普省"] = {wp = "Gaziantep Province"},
["吉雷松省"] = {wp = "Giresun Province"},
["居米什哈內省"] = {wp = "Gümüşhane Province"},
["哈卡里省"] = {wp = "Hakkâri Province"},
["哈塔伊省"] = {wp = "Hatay Province"},
["伊斯帕爾塔省"] = {wp = "Isparta Province"},
["梅爾辛省"] = {wp = "Mersin Province"},
["伊茲密爾省"] = {wp = "İzmir Province"},
["卡爾斯省"] = {wp = "Kars Province"},
["卡斯塔莫努省"] = {wp = "Kastamonu Province"},
["開塞利省"] = {wp = "Kayseri Province"},
["柯克拉雷利省"] = {wp = "Kırklareli Province"},
["克爾謝希爾省"] = {wp = "Kırşehir Province"},
["科賈埃利省"] = {wp = "Kocaeli Province"},
["科尼亞省"] = {wp = "Konya Province"},
["屈塔希亞省"] = {wp = "Kütahya Province"},
["馬拉蒂亞省"] = {wp = "Malatya Province"},
["馬尼薩省"] = {wp = "Manisa Province"},
["卡赫拉曼馬拉什省"] = {wp = "Kahramanmaraş Province"},
["馬爾丁省"] = {wp = "Mardin Province"},
["穆拉省"] = {wp = "Muğla Province"},
["穆什省"] = {wp = "Muş Province"},
["內夫謝希爾省"] = {wp = "Nevşehir Province"},
["尼代省"] = {wp = "Niğde Province"},
["奧爾杜省"] = {wp = "Ordu Province"},
["里澤省"] = {wp = "Rize Province"},
["薩卡里亞省"] = {wp = "Sakarya Province"},
["薩姆松省"] = {wp = "Samsun Province"},
["錫爾特省"] = {wp = "Siirt Province"},
["錫諾普省"] = {wp = "Sinop Province"},
["錫瓦斯省"] = {wp = "Sivas Province"},
["泰基爾達省"] = {wp = "Tekirdağ Province"},
["托卡特省"] = {wp = "Tokat Province"},
["特拉布宗省"] = {wp = "Trabzon Province"},
["通傑利省"] = {wp = "Tunceli Province"},
["尚勒烏爾法省"] = {wp = "Şanlıurfa Province"},
["烏沙克省"] = {wp = "Uşak Province"},
["凡省"] = {wp = "Van Province"},
["約茲加特省"] = {wp = "Yozgat Province"},
["宗古爾達克省"] = {wp = "Zonguldak Province"},
["阿克薩賴省"] = {wp = "Aksaray Province"},
["拜布爾特省"] = {wp = "Bayburt Province"},
["卡拉曼省"] = {wp = "Karaman Province"},
["克勒克卡萊省"] = {wp = "Kırıkkale Province"},
["巴特曼省"] = {wp = "Batman Province"},
["蘇爾納克省"] = {wp = "Şırnak Province"},
["巴爾騰省"] = {wp = "Bartın Province"},
["阿爾達罕省"] = {wp = "Ardahan Province"},
["伊迪爾省"] = {wp = "Iğdır Province"},
["亞洛瓦省"] = {wp = "Yalova Province"},
["卡拉比克省"] = {wp = "Karabük Province"},
["基利斯省"] = {wp = "Kilis Province"},
["奧斯曼尼耶省"] = {wp = "Osmaniye Province"},
["迪茲傑省"] = {wp = "Düzce Province"},
}
export.turkey_group = {
placename_to_key = false,
default_container = "土耳其",
default_placetype = "province",
data = export.turkey_provinces,
}
export.vietnam_provinces = {
-- Northeast
["北江省"] = {wp = "Bắc Giang Province"},
["北件省"] = {wp = "Bắc Kạn Province"},
["高平省"] = {wp = "Cao Bằng Province"},
["河江省"] = {wp = "Hà Giang Province"},
["諒山省"] = {wp = "Lạng Sơn Province"},
["富壽省"] = {wp = "Phú Thọ Province"},
["廣寧省"] = {wp = "Quảng Ninh Province"},
["太原省"] = {wp = "Thái Nguyên Province"},
["宣光省"] = {wp = "Tuyên Quang Province"},
-- Northwest
["老街省"] = {wp = "Lào Cai Province"},
["安沛省"] = {wp = "Yên Bái Province"},
["奠邊省"] = {wp = "Điện Biên Province"},
["和平省"] = {wp = "Hoà Bình Province"},
["萊州省"] = {wp = "Lai Châu Province"},
["山羅省"] = {wp = "Sơn La Province"},
-- Red River Delta
["北寧省"] = {wp = "Bắc Ninh Province"},
["河南省"] = {wp = "Hà Nam Province"},
["海陽省"] = {wp = "Hải Dương Province"},
["興安省"] = {wp = "Hưng Yên Province"},
["南定省"] = {wp = "Nam Định Province"},
["寧平省"] = {wp = "Ninh Bình Province"},
["太平省"] = {wp = "Thái Bình Province"},
["永福省"] = {wp = "Vĩnh Phúc Province"},
-- North Central Coast
["河靜省"] = {wp = "Hà Tĩnh Province"},
["乂安省"] = {wp = "Nghệ An Province"},
["廣平省"] = {wp = "Quảng Bình Province"},
["廣治省"] = {wp = "Quảng Trị Province"},
["清化省"] = {wp = "Thanh Hoá Province"},
-- Central Highlands
["得樂省"] = {wp = "Đắk Lắk Province"},
["得農省"] = {wp = "Đăk Nông Province"},
["嘉萊省"] = {wp = "Gia Lai Province"},
["崑嵩省"] = {wp = "Kon Tum Province"},
["林同省"] = {wp = "Lâm Đồng Province"},
-- South Central Coast
["平定省"] = {wp = "Bình Định Province"},
["平順省"] = {wp = "Bình Thuận Province"},
["慶和省"] = {wp = "Khánh Hoà Province"},
["寧順省"] = {wp = "Ninh Thuận Province"},
["富安省"] = {wp = "Phú Yên Province"},
["廣南省"] = {wp = "Quảng Nam Province"},
["廣義省"] = {wp = "Quảng Ngãi Province"},
-- Southeast
["巴地-頭頓省"] = {wp = "Bà Rịa–Vũng Tàu Province"},
["平陽省"] = {wp = "Bình Dương Province"},
["平福省"] = {wp = "Bình Phước Province"},
["同奈省"] = {wp = "Đồng Nai Province"},
["西寧省"] = {wp = "Tây Ninh Province"},
-- Mekong Delta
["安江省"] = {wp = "An Giang Province"},
["薄寮省"] = {wp = "Bạc Liêu Province"},
["檳椥省"] = {wp = "Bến Tre Province"},
["金甌省"] = {wp = "Cà Mau Province"},
["同塔省"] = {wp = "Đồng Tháp Province"},
["後江省"] = {wp = "Hậu Giang Province"},
["堅江省"] = {wp = "Kiên Giang Province"},
["龍安省"] = {wp = "Long An Province"},
["朔莊省"] = {wp = "Sóc Trăng Province"},
["前江省"] = {wp = "Tiền Giang Province"},
["茶榮省"] = {wp = "Trà Vinh Province"},
["永隆省"] = {wp = "Vĩnh Long Province"},
}
export.vietnam_group = {
placename_to_key = false,
default_container = "越南",
default_placetype = "province",
data = export.vietnam_provinces,
}
export.united_states_states = {
["阿拉巴馬"] = {wp = "Alabama"},
["阿拉斯加"] = {wp = "Alaska"},
["亞利桑那"] = {wp = "Arizona"},
["阿肯色"] = {wp = "Arkansas"},
["加利福尼亞"] = {wp = "California"},
["加州"] = {alias_of = "加利福尼亞"},
["科羅拉多"] = {wp = "Colorado"},
["康乃狄克"] = {wp = "Connecticut"},
["康涅狄格"] = {alias_of = "康乃狄克"},
["德拉瓦"] = {wp = "Delaware"},
["佛羅里達"] = {wp = "Florida"},
["佛罗里达"] = {alias_of = "佛羅里達"},
["佐治亞"] = {wp = "Georgia (U.S. state)"},
["夏威夷"] = {addl_parents = {"玻里尼西亞"}, wp = "Hawaii"},
["愛達荷"] = {wp = "Idaho"},
["伊利諾伊"] = {wp = "Illinois"},
["伊利诺伊"] = {alias_of = "伊利諾伊"},
["印地安那"] = {wp = "Indiana"},
["印第安納"] = {alias_of = "印地安那"},
["愛荷華"] = {wp = "Iowa"},
["堪薩斯"] = {wp = "Kansas"},
["肯塔基"] = {wp = "Kentucky"},
["路易斯安那"] = {wp = "Louisiana"},
["緬因"] = {wp = "Maine"},
["馬里蘭"] = {wp = "Maryland"},
["麻薩諸塞"] = {wp = "Massachusetts"},
["麻薩诸塞"] = {alias_of = "麻薩諸塞"},
["密西根"] = {wp = "Michigan"},
["密歇根"] = {alias_of = "密西根"},
["明尼蘇達"] = {wp = "Minnesota"},
["明尼苏达"] = {alias_of = "明尼蘇達"},
["密西西比"] = {wp = "Mississippi"},
["密蘇里"] = {wp = "Missouri"},
["蒙大拿"] = {wp = "Montana"},
["內布拉斯加"] = {wp = "Nebraska"},
["內華達"] = {wp = "Nevada"},
["新罕布什爾"] = {wp = "New Hampshire"},
["新澤西"] = {wp = "New Jersey"},
["新泽西"] = {alias_of = "新澤西"},
["新墨西哥"] = {wp = "New Mexico"},
["紐約"] = {wp = "New York (state)"},
["纽约"] = {alias_of = "紐約"},
["北卡羅來納"] = {wp = "North Carolina"},
["北达科他"] = {alias_of = "北達科他"},
["北達科他"] = {wp = "North Dakota"},
["俄亥俄"] = {wp = "Ohio"},
["奧克拉荷馬"] = {wp = "Oklahoma"},
["奧勒岡"] = {wp = "Oregon"},
["俄勒冈"] = {alias_of = "奧勒岡"},
["賓夕法尼亞"] = {wp = "Pennsylvania"},
["宾夕法尼亚"] = {alias_of = "賓夕法尼亞"},
["羅德島"] = {wp = "Rhode Island"},
["南卡羅來納"] = {wp = "South Carolina"},
["南達科他"] = {wp = "South Dakota"},
["田納西"] = {wp = "Tennessee"},
["田纳西"] = {alias_of = "田納西"},
["德克薩斯"] = {wp = "Texas"},
["德州"] = {alias_of = "德克薩斯"},
["猶他"] = {wp = "Utah"},
["佛蒙特"] = {wp = "Vermont"},
["弗吉尼亞"] = {wp = "Virginia"},
["弗吉尼亚"] = {alias_of = "弗吉尼亞"},
["維吉尼亞"] = {alias_of = "弗吉尼亞"},
["華盛頓州"] = {wp = "Washington (state)"},
["华盛顿州"] = {alias_of = "華盛頓州"},
["西維吉尼亞"] = {wp = "West Virginia"},
["西弗吉尼亞"] = {alias_of = "西維吉尼亞"},
["威斯康辛"] = {wp = "Wisconsin"},
["懷俄明"] = {wp = "Wyoming"},
-- Washington D.C. (federal district, treated like a state in holonym context)
["華盛頓特區"] = {placetype = {"federal district", "district"}, wp = "Washington, D.C."},
}
export.united_states_group = {
placename_to_key = false,
default_container = "美國",
default_placetype = "state",
default_divs = {"counties", "county seats"},
addl_divs = {
{type = "census-designated places", prep = "in"},
{type = "unincorporated communities", prep = "in"},
},
data = export.united_states_states,
}
export.united_kingdom_constituent_countries = {
["英格蘭"] = {divs = {"counties", "districts"}, wp = "England"},
["北愛爾蘭"] = {
placetype = {"constituent country", "province", "country"},
divs = {"counties", "districts"},
wp = "Northern Ireland",
},
["蘇格蘭"] = {divs = {{type = "council areas", container_parent_type = false}}, wp = "Scotland"},
["威爾斯"] = {divs = {"counties"}, wp = "Wales"},
["威爾士"] = {alias_of = "威爾斯"},
}
export.united_kingdom_group = {
placename_to_key = false,
default_container = "英國",
default_placetype = {"constituent country", "country"},
default_no_container_cat = true,
data = export.united_kingdom_constituent_countries,
}
-- Scotland council areas
export.scotland_council_areas = {
["Aberdeen市"] = {wp = "Aberdeen"},
["Aberdeenshire"] = {wp = "Aberdeenshire"},
["Angus"] = {wp = "Angus, Scotland"},
["Argyll and Bute"] = {wp = "Argyll and Bute"},
["Clackmannanshire"] = {wp = "Clackmannanshire"},
["Dumfries and Galloway"] = {wp = "Dumfries and Galloway"},
["Dundee市"] = {wp = "Dundee"},
["East Ayrshire"] = {wp = "East Ayrshire"},
["East Dunbartonshire"] = {wp = "East Dunbartonshire"},
["East Lothian"] = {wp = "East Lothian"},
["East Renfrewshire"] = {wp = "East Renfrewshire"},
["Edinburgh市"] = {wp = "Edinburgh"},
["Eilean Siar"] = {wp = "Outer Hebrides"},
["Falkirk"] = {wp = "Falkirk"},
["Fife"] = {wp = "Fife"},
["Glasgow市"] = {wp = "Glasgow"},
["高地"] = {wp = "Highland council area"},
["Highland"] = {alias_of = "高地", display = true},
["Inverclyde"] = {wp = "Inverclyde"},
["Midlothian"] = {wp = "Midlothian"},
["Moray"] = {wp = "Moray"},
["North Ayrshire"] = {wp = "North Ayrshire"},
["North Lanarkshire"] = {wp = "North Lanarkshire"},
["Orkney群島"] = {wp = "Orkney"},
["Perth and Kinross"] = {wp = "Perth and Kinross"},
["Renfrewshire"] = {wp = "Renfrewshire"},
["Scottish Borders"] = {wp = "Scottish Borders"},
["Shetland群島"] = {wp = "Shetland"},
["South Ayrshire"] = {wp = "South Ayrshire"},
["South Lanarkshire"] = {wp = "South Lanarkshire"},
["Stirling"] = {wp = "Stirling (council area)"},
["West Dunbartonshire"] = {wp = "West Dunbartonshire"},
["West Lothian"] = {wp = "West Lothian"},
}
export.scotland_group = {
placename_to_key = false,
default_container = "蘇格蘭",
default_placetype = "council area",
data = export.scotland_council_areas,
}
-- England counties (ceremonial)
export.england_counties = {
-- Metropolitan counties
["大倫敦"] = {wp = "Greater London"},
["大曼徹斯特"] = {wp = "Greater Manchester"},
["默西賽德郡"] = {wp = "Merseyside"},
["西密德蘭"] = {wp = "West Midlands (county)"},
["南約克郡"] = {wp = "South Yorkshire"},
["西約克郡"] = {wp = "West Yorkshire"},
["泰恩-威爾郡"] = {wp = "Tyne and Wear"},
-- Non-metropolitan ceremonial counties
["貝德福德郡"] = {wp = "Bedfordshire"},
["伯克郡"] = {wp = "Berkshire"},
["白金漢郡"] = {wp = "Buckinghamshire"},
["劍橋郡"] = {wp = "Cambridgeshire"},
["柴郡"] = {wp = "Cheshire"},
["康沃爾郡"] = {wp = "Cornwall"},
["坎布里亞郡"] = {wp = "Cumbria"},
["德比郡"] = {wp = "Derbyshire"},
["德文郡"] = {wp = "Devon"},
["多塞特郡"] = {wp = "Dorset"},
["達勒姆郡"] = {wp = "County Durham"},
["約克郡東區"] = {wp = "East Riding of Yorkshire"},
["東薩塞克斯郡"] = {wp = "East Sussex"},
["埃塞克斯郡"] = {wp = "Essex"},
["格洛斯特郡"] = {wp = "Gloucestershire"},
["漢普郡"] = {wp = "Hampshire"},
["赫里福德郡"] = {wp = "Herefordshire"},
["赫特福德郡"] = {wp = "Hertfordshire"},
["懷特島"] = {wp = "Isle of Wight"},
["肯特郡"] = {wp = "Kent"},
["蘭開夏郡"] = {wp = "Lancashire"},
["萊斯特郡"] = {wp = "Leicestershire"},
["林肯郡"] = {wp = "Lincolnshire"},
["諾福克郡"] = {wp = "Norfolk"},
["北安普敦郡"] = {wp = "Northamptonshire"},
["諾森伯蘭郡"] = {wp = "Northumberland"},
["北約克郡"] = {wp = "North Yorkshire"},
["諾丁漢郡"] = {wp = "Nottinghamshire"},
["牛津郡"] = {wp = "Oxfordshire"},
["拉特蘭郡"] = {wp = "Rutland"},
["什羅普郡"] = {wp = "Shropshire"},
["薩默塞特郡"] = {wp = "Somerset"},
["南亨伯賽德郡"] = {wp = "South Humberside"},
["斯塔福德郡"] = {wp = "Staffordshire"},
["薩福克郡"] = {wp = "Suffolk"},
["薩里郡"] = {wp = "Surrey"},
["沃里克郡"] = {wp = "Warwickshire"},
["西薩塞克斯郡"] = {wp = "West Sussex"},
["威爾特郡"] = {wp = "Wiltshire"},
["伍斯特郡"] = {wp = "Worcestershire"},
}
export.england_group = {
placename_to_key = false,
default_container = {key = "英格蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.england_counties,
}
-- Counties of Northern Ireland
export.northern_ireland_counties = {
["安特里姆郡"] = {wp = "County Antrim"},
["阿爾馬郡"] = {wp = "County Armagh"},
["貝爾法斯特市"] = {is_city = true, wp = "Belfast"},
["唐郡"] = {wp = "County Down"},
["弗馬納郡"] = {wp = "County Fermanagh"},
["倫敦德里郡"] = {wp = "County Londonderry"},
["德里市"] = {is_city = true, wp = "Derry"},
["泰龍郡"] = {wp = "County Tyrone"},
}
export.northern_ireland_group = {
placename_to_key = false,
default_container = {key = "北愛爾蘭", placetype = "constituent country"},
default_placetype = "county",
data = export.northern_ireland_counties,
}
export.nigeria_states = {
["阿比亞州"] = {wp = "Abia State"},
["阿達馬瓦州"] = {wp = "Adamawa State"},
["阿誇伊博姆州"] = {wp = "Akwa Ibom State"},
["阿南布拉州"] = {wp = "Anambra State"},
["包奇州"] = {wp = "Bauchi State"},
["貝耶薩州"] = {wp = "Bayelsa State"},
["貝努埃州"] = {wp = "Benue State"},
["博爾諾州"] = {wp = "Borno State"},
["跨河州"] = {wp = "Cross River State"},
["三角洲州"] = {wp = "Delta State"},
["埃博尼州"] = {wp = "Ebonyi State"},
["埃多州"] = {wp = "Edo State"},
["埃基蒂州"] = {wp = "Ekiti State"},
["埃努古州"] = {wp = "Enugu State"},
["阿布賈聯邦首都轄區"] = {placetype = {"federal territory", "territory", "state"}, the = true, wp = "Federal Capital Territory, Nigeria"},
["貢貝州"] = {wp = "Gombe State"},
["伊莫州"] = {wp = "Imo State"},
["吉加瓦州"] = {wp = "Jigawa State"},
["卡杜納州"] = {wp = "Kaduna State"},
["卡諾州"] = {wp = "Kano State"},
["卡齊納州"] = {wp = "Katsina State"},
["克比州"] = {wp = "Kebbi State"},
["科吉州"] = {wp = "Kogi State"},
["誇拉州"] = {wp = "Kwara State"},
["拉各斯州"] = {wp = "Lagos State"},
["納薩拉瓦州"] = {wp = "Nasarawa State"},
["尼日爾州"] = {wp = "Niger State"},
["奧貢州"] = {wp = "Ogun State"},
["翁多州"] = {wp = "Ondo State"},
["奧順州"] = {wp = "Osun State"},
["奧約州"] = {wp = "Oyo State"},
["高原州"] = {wp = "Plateau State"},
["河流州"] = {wp = "Rivers State"},
["索科托州"] = {wp = "Sokoto State"},
["塔拉巴州"] = {wp = "Taraba State"},
["約貝州"] = {wp = "Yobe State"},
["贊法拉州"] = {wp = "Zamfara State"},
}
export.nigeria_group = {
placename_to_key = false,
default_container = "奈及利亞",
default_placetype = "state",
data = export.nigeria_states,
}
-----------------------------------------------------------------------------------
-- Selected city groups --
-----------------------------------------------------------------------------------
-- Key world cities frequently used as holonyms (entries covered by dedicated city groups removed)
export.misc_cities = {
-- Americas
["費爾法克斯"] = {container = "弗吉尼亞", placetype = "city", is_city = true, wp = "Fairfax, Virginia"},
["斯克蘭頓"] = {container = "賓夕法尼亞", placetype = "city", is_city = true, wp = "Scranton, Pennsylvania"},
["里約熱內盧市"] = {container = "巴西", placetype = "city", is_city = true, wp = "Rio de Janeiro"},
["布宜諾斯艾利斯"] = {container = "阿根廷", placetype = "city", is_city = true, wp = "Buenos Aires"},
["聖地牙哥"] = {container = "智利", placetype = "city", is_city = true, wp = "Santiago"},
["波哥大"] = {container = "哥倫比亞", placetype = "city", is_city = true, wp = "Bogotá"},
["利馬"] = {container = "秘魯", placetype = "city", is_city = true, wp = "Lima"},
-- Europe
["阿姆斯特丹"] = {container = "荷蘭", placetype = "city", is_city = true, wp = "Amsterdam"},
["布魯塞爾"] = {container = "比利時", placetype = "city", is_city = true, wp = "Brussels"},
["維也納"] = {container = "奧地利", placetype = "city", is_city = true, wp = "Vienna"},
["伊斯坦布爾"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Istanbul"},
["基輔"] = {container = "烏克蘭", placetype = "city", is_city = true, wp = "Kyiv"},
["華沙"] = {container = "波蘭", placetype = "city", is_city = true, wp = "Warsaw"},
["布拉格"] = {container = "捷克", placetype = "city", is_city = true, wp = "Prague"},
["布達佩斯"] = {container = "匈牙利", placetype = "city", is_city = true, wp = "Budapest"},
["斯德哥爾摩"] = {container = "瑞典", placetype = "city", is_city = true, wp = "Stockholm"},
["赫爾辛基"] = {container = "芬蘭", placetype = "city", is_city = true, wp = "Helsinki"},
["奧斯陸"] = {container = "挪威", placetype = "city", is_city = true, wp = "Oslo"},
["哥本哈根"] = {container = "丹麥", placetype = "city", is_city = true, wp = "Copenhagen"},
["里斯本"] = {container = "葡萄牙", placetype = "city", is_city = true, wp = "Lisbon"},
["雅典"] = {container = "希臘", placetype = "city", is_city = true, wp = "Athens"},
["蘇黎世"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Zurich"},
["日內瓦"] = {container = "瑞士", placetype = "city", is_city = true, wp = "Geneva"},
["第比利斯"] = {container = "格魯吉亞", placetype = "city", is_city = true, wp = "Tbilisi"},
["貝爾格勒"] = {container = "塞爾維亞", placetype = "city", is_city = true, wp = "Belgrade"},
["薩格勒布"] = {container = "克羅埃西亞", placetype = "city", is_city = true, wp = "Zagreb"},
["都柏林"] = {container = "愛爾蘭", placetype = "city", is_city = true, wp = "Dublin"},
-- Asia
["北京市"] = {container = "北京", placetype = "city", is_city = true, wp = "Beijing"},
["上海市"] = {container = "上海", placetype = "city", is_city = true, wp = "Shanghai"},
["德里市"] = {container = "德里", placetype = "city", is_city = true, wp = "Delhi"},
["曼谷"] = {container = "泰國", placetype = "city", is_city = true, wp = "Bangkok"},
["吉隆坡"] = {container = "馬來西亞", placetype = "city", is_city = true, wp = "Kuala Lumpur"},
["開羅"] = {container = "埃及", placetype = "city", is_city = true, wp = "Cairo"},
["德黑蘭"] = {container = "伊朗", placetype = "city", is_city = true, wp = "Tehran"},
["安卡拉"] = {container = "土耳其", placetype = "city", is_city = true, wp = "Ankara"},
-- Oceania
["奧克蘭"] = {container = "紐西蘭", placetype = "city", is_city = true, wp = "Auckland"},
-- Africa
["開普敦"] = {container = "南非", placetype = "city", is_city = true, wp = "Cape Town"},
["約翰尼斯堡"] = {container = "南非", placetype = "city", is_city = true, wp = "Johannesburg"},
["奈洛比"] = {container = "肯亞", placetype = "city", is_city = true, wp = "Nairobi"},
}
export.misc_cities_group = {
placename_to_key = false,
default_placetype = "city",
default_is_city = true,
data = export.misc_cities,
}
export.netherlands_provinces = {
["德倫特省"] = {wp = "Drenthe"},
["弗萊福蘭省"] = {wp = "Flevoland"},
["弗里斯蘭省"] = {wp = "Friesland"},
["格爾德蘭省"] = {wp = "Gelderland"},
["格羅寧根省"] = {wp = "Groningen (province)"},
["林堡省(荷蘭)"] = {wp = "Limburg (Netherlands)"},
["北布拉班特省"] = {wp = "North Brabant"},
["北荷蘭省"] = {wp = "North Holland"},
["上艾瑟爾省"] = {wp = "Overijssel"},
["南荷蘭省"] = {wp = "South Holland"},
["烏特勒支省"] = {wp = "Utrecht (province)"},
["澤蘭省"] = {wp = "Zeeland"},
}
export.netherlands_group = {
placename_to_key = false,
default_container = "荷蘭",
default_placetype = "province",
data = export.netherlands_provinces,
}
export.new_zealand_regions = {
["北地大區"] = {wp = "Northland Region"},
["奧克蘭大區"] = {wp = "Auckland Region"},
["懷卡托大區"] = {wp = "Waikato Region"},
["豐盛灣大區"] = {wp = "Bay of Plenty Region"},
["吉斯伯恩大區"] = {wp = "Gisborne District", placetype = {"region", "district"}},
["霍克斯灣大區"] = {wp = "Hawke's Bay Region"},
["塔拉納基大區"] = {wp = "Taranaki Region"},
["馬納瓦圖-旺阿努伊大區"] = {wp = "Manawatū-Whanganui Region"},
["惠靈頓大區"] = {wp = "Wellington Region"},
["塔斯曼大區"] = {wp = "Tasman District", placetype = {"region", "district"}},
["納爾遜大區"] = {wp = "Nelson, New Zealand", placetype = {"region", "city"}, is_city = true},
["馬爾堡大區"] = {wp = "Marlborough District", placetype = {"region", "district"}},
["西海岸大區"] = {wp = "West Coast Region"},
["坎特伯雷大區"] = {wp = "Canterbury Region"},
["奧塔哥大區"] = {wp = "Otago Region"},
["南地大區"] = {wp = "Southland Region"},
}
export.new_zealand_group = {
placename_to_key = false,
default_container = "紐西蘭",
default_placetype = "region",
data = export.new_zealand_regions,
}
export.norwegian_counties = {
["奧斯陸縣"] = {wp = "Oslo"},
["羅加蘭縣"] = {wp = "Rogaland"},
["莫雷-羅姆斯達爾縣"] = {wp = "Møre og Romsdal"},
["諾爾蘭縣"] = {wp = "Nordland"},
["東福爾縣"] = {wp = "Østfold"},
["阿克斯胡斯縣"] = {wp = "Akershus"},
["布斯克呂縣"] = {wp = "Buskerud"},
["因蘭德縣"] = {wp = "Innlandet"},
["西福爾縣"] = {wp = "Vestfold"},
["泰勒馬克縣"] = {wp = "Telemark"},
["阿格德爾縣"] = {wp = "Agder"},
["西地縣"] = {wp = "Vestland"},
["特倫德拉格縣"] = {wp = "Trøndelag"},
["特羅姆斯縣"] = {wp = "Troms"},
["芬馬克縣"] = {wp = "Finnmark"},
}
export.norway_group = {
placename_to_key = false,
default_container = "挪威",
default_placetype = "county",
data = export.norwegian_counties,
}
export.pakistan_provinces_and_territories = {
["自由克什米爾"] = {wp = "Azad Kashmir", placetype = {"administrative territory", "autonomous territory", "territory"}},
["俾路支省"] = {wp = "Balochistan, Pakistan"},
["吉爾吉特-巴爾蒂斯坦"] = {wp = "Gilgit-Baltistan", placetype = {"administrative territory", "territory"}},
["伊斯蘭馬巴德首都直轄區"] = {wp = "Islamabad Capital Territory", placetype = {"federal territory", "administrative territory", "territory"}},
["開伯爾-普赫圖赫瓦省"] = {wp = "Khyber Pakhtunkhwa"},
["旁遮普省(巴基斯坦)"] = {wp = "Punjab, Pakistan"},
["信德省"] = {wp = "Sindh"},
}
export.pakistan_group = {
placename_to_key = false,
default_container = "巴基斯坦",
default_placetype = "province",
data = export.pakistan_provinces_and_territories,
}
export.philippines_provinces = {
["阿布拉省"] = {wp = "Abra (province)"},
["北阿古桑省"] = {wp = "Agusan del Norte"},
["南阿古桑省"] = {wp = "Agusan del Sur"},
["阿克蘭省"] = {wp = "Aklan"},
["阿爾拜省"] = {wp = "Albay"},
["安蒂克省"] = {wp = "Antique (province)"},
["阿帕亞沃省"] = {wp = "Apayao"},
["奧羅拉省"] = {wp = "Aurora (province)"},
["巴西蘭省"] = {wp = "Basilan"},
["巴丹省"] = {wp = "Bataan"},
["巴達內斯省"] = {wp = "Batanes"},
["八打雁省"] = {wp = "Batangas"},
["本格特省"] = {wp = "Benguet"},
["比利蘭省"] = {wp = "Biliran"},
["保和省"] = {wp = "Bohol"},
["布基農省"] = {wp = "Bukidnon"},
["布拉干省"] = {wp = "Bulacan"},
["卡加延省"] = {wp = "Cagayan"},
["北甲馬仁省"] = {wp = "Camarines Norte"},
["南甲馬仁省"] = {wp = "Camarines Sur"},
["卡米金省"] = {wp = "Camiguin"},
["卡皮斯省"] = {wp = "Capiz"},
["卡坦端內斯省"] = {wp = "Catanduanes"},
["甲米地省"] = {wp = "Cavite"},
["宿霧省"] = {wp = "Cebu"},
["哥打巴托省"] = {wp = "Cotabato"},
["達沃德奧羅省"] = {wp = "Davao de Oro"},
["北達沃省"] = {wp = "Davao del Norte"},
["南達沃省"] = {wp = "Davao del Sur"},
["西達沃省"] = {wp = "Davao Occidental"},
["東達沃省"] = {wp = "Davao Oriental"},
["迪納加特群島省"] = {wp = "Dinagat Islands"},
["東薩馬省"] = {wp = "Eastern Samar"},
["吉馬拉斯省"] = {wp = "Guimaras"},
["伊富高省"] = {wp = "Ifugao"},
["北伊羅科斯省"] = {wp = "Ilocos Norte"},
["南伊羅科斯省"] = {wp = "Ilocos Sur"},
["伊洛伊洛省"] = {wp = "Iloilo"},
["伊莎貝拉省"] = {wp = "Isabela (province)"},
["卡林加省"] = {wp = "Kalinga (province)"},
["拉烏尼翁省"] = {wp = "La Union"},
["拉古納省"] = {wp = "Laguna (province)"},
["北拉瑙省"] = {wp = "Lanao del Norte"},
["南拉瑙省"] = {wp = "Lanao del Sur"},
["萊特省"] = {wp = "Leyte (province)"},
["北馬京達瑙省"] = {wp = "Maguindanao del Norte"},
["南馬京達瑙省"] = {wp = "Maguindanao del Sur"},
["馬林杜克省"] = {wp = "Marinduque"},
["馬斯巴特省"] = {wp = "Masbate"},
["西米薩米斯省"] = {wp = "Misamis Occidental"},
["東米薩米斯省"] = {wp = "Misamis Oriental"},
["山岳省"] = {wp = "Mountain Province"},
["西內格羅斯省"] = {wp = "Negros Occidental"},
["東內格羅斯省"] = {wp = "Negros Oriental"},
["北薩馬省"] = {wp = "Northern Samar"},
["新怡詩夏省"] = {wp = "Nueva Ecija"},
["新比斯開省"] = {wp = "Nueva Vizcaya"},
["西民都洛省"] = {wp = "Occidental Mindoro"},
["東民都洛省"] = {wp = "Oriental Mindoro"},
["巴拉望省"] = {wp = "Palawan"},
["邦板牙省"] = {wp = "Pampanga"},
["邦阿西楠省"] = {wp = "Pangasinan"},
["奎松省"] = {wp = "Quezon"},
["基里諾省"] = {wp = "Quirino"},
["黎剎省"] = {wp = "Rizal (province)"},
["朗布隆省"] = {wp = "Romblon"},
["薩馬省"] = {wp = "Samar (province)"},
["薩蘭加尼省"] = {wp = "Sarangani"},
["錫基霍爾省"] = {wp = "Siquijor"},
["索索貢省"] = {wp = "Sorsogon"},
["南哥打巴托省"] = {wp = "South Cotabato"},
["南萊特省"] = {wp = "Southern Leyte"},
["蘇丹庫達拉省"] = {wp = "Sultan Kudarat"},
["蘇祿省"] = {wp = "Sulu"},
["北蘇里高省"] = {wp = "Surigao del Norte"},
["南蘇里高省"] = {wp = "Surigao del Sur"},
["塔拉克省"] = {wp = "Tarlac"},
["塔威塔威省"] = {wp = "Tawi-Tawi"},
["三描禮士省"] = {wp = "Zambales"},
["北三寶顏省"] = {wp = "Zamboanga del Norte"},
["南三寶顏省"] = {wp = "Zamboanga del Sur"},
["三寶顏錫布蓋省"] = {wp = "Zamboanga Sibugay"},
["馬尼拉都會區"] = {wp = "Metro Manila", placetype = {"region", "province"}},
}
export.philippines_group = {
placename_to_key = false,
default_container = "菲律賓",
default_placetype = "province",
data = export.philippines_provinces,
}
export.poland_voivodeships = {
["下西里西亞省"] = {wp = "Lower Silesian Voivodeship"},
["庫亞維-波美拉尼亞省"] = {wp = "Kuyavian-Pomeranian Voivodeship"},
["盧布林省"] = {wp = "Lublin Voivodeship"},
["盧布斯省"] = {wp = "Lubusz Voivodeship"},
["羅茲省"] = {wp = "Łódź Voivodeship"},
["小波蘭省"] = {wp = "Lesser Poland Voivodeship"},
["馬佐夫舍省"] = {wp = "Masovian Voivodeship"},
["奧波萊省"] = {wp = "Opole Voivodeship"},
["喀爾巴阡山省"] = {wp = "Subcarpathian Voivodeship"},
["波德拉謝省"] = {wp = "Podlaskie Voivodeship"},
["波美拉尼亞省"] = {wp = "Pomeranian Voivodeship"},
["西里西亞省"] = {wp = "Silesian Voivodeship"},
["神聖十字省"] = {wp = "Świętokrzyskie Voivodeship"},
["瓦爾米亞-馬祖里省"] = {wp = "Warmian-Masurian Voivodeship"},
["大波蘭省"] = {wp = "Greater Poland Voivodeship"},
["西波美拉尼亞省"] = {wp = "West Pomeranian Voivodeship"},
}
export.poland_group = {
placename_to_key = false,
default_container = "波蘭",
default_placetype = "voivodeship",
data = export.poland_voivodeships,
}
export.portugal_districts_and_autonomous_regions = {
["亞速爾群島"] = {wp = "Azores", placetype = {"autonomous region", "region"}},
["阿維羅區"] = {wp = "Aveiro District"},
["貝雅區"] = {wp = "Beja District"},
["布拉加區"] = {wp = "Braga District"},
["布拉干薩區"] = {wp = "Bragança District"},
["卡斯特洛布蘭科區"] = {wp = "Castelo Branco District"},
["科英布拉區"] = {wp = "Coimbra District"},
["埃武拉區"] = {wp = "Évora District"},
["法魯區"] = {wp = "Faro District"},
["瓜達區"] = {wp = "Guarda District"},
["萊里亞區"] = {wp = "Leiria District"},
["里斯本區"] = {wp = "Lisbon District"},
["馬德拉島"] = {wp = "Madeira", placetype = {"autonomous region", "region"}},
["波塔萊格里區"] = {wp = "Portalegre District"},
["波爾圖區"] = {wp = "Porto District"},
["聖塔倫區"] = {wp = "Santarém District"},
["塞圖巴爾區"] = {wp = "Setúbal District"},
["維亞納堡區"] = {wp = "Viana do Castelo District"},
["維拉雷亞爾區"] = {wp = "Vila Real District"},
["維塞烏區"] = {wp = "Viseu District"},
}
export.portugal_group = {
placename_to_key = false,
default_container = "葡萄牙",
default_placetype = "district",
data = export.portugal_districts_and_autonomous_regions,
}
local russia_oblast = {placetype = "oblast"}
local russia_krai = {placetype = "krai"}
local russia_republic = {placetype = "republic"}
local russia_autonomous_okrug = {placetype = {"autonomous okrug", "okrug"}}
export.russia_federal_subjects = {
-- autonomous oblast
["猶太自治州"] = {placetype = {"autonomous oblast", "oblast"}, wp = "Jewish Autonomous Oblast"},
-- autonomous okrugs
["楚科奇自治區"] = {wp = "Chukotka Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西自治區"] = {wp = "Khanty-Mansi Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["漢特-曼西亞"] = {alias_of = "漢特-曼西自治區"},
["涅涅茨自治區"] = {wp = "Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
["亞馬洛-涅涅茨自治區"] = {wp = "Yamalo-Nenets Autonomous Okrug", placetype = {"autonomous okrug", "okrug"}},
-- krais
["阿爾泰邊疆區"] = {wp = "Altai Krai", placetype = "krai"},
["堪察加邊疆區"] = {wp = "Kamchatka Krai", placetype = "krai"},
["哈巴羅夫斯克邊疆區"] = {wp = "Khabarovsk Krai", placetype = "krai"},
["克拉斯諾達爾邊疆區"] = {wp = "Krasnodar Krai", placetype = "krai"},
["克拉斯諾亞爾斯克邊疆區"] = {wp = "Krasnoyarsk Krai", placetype = "krai"},
["彼爾姆邊疆區"] = {wp = "Perm Krai", placetype = "krai"},
["濱海邊疆區"] = {wp = "Primorsky Krai", placetype = "krai"},
["斯塔夫羅波爾邊疆區"] = {wp = "Stavropol Krai", placetype = "krai"},
["外貝加爾邊疆區"] = {wp = "Zabaykalsky Krai", placetype = "krai"},
-- oblasts
["阿穆爾州"] = russia_oblast,
["阿爾漢格爾斯克州"] = russia_oblast,
["阿斯特拉罕州"] = russia_oblast,
["別爾哥羅德州"] = russia_oblast,
["布良斯克州"] = russia_oblast,
["車裡雅賓斯克州"] = russia_oblast,
["伊爾庫茨克州"] = russia_oblast,
["伊萬諾沃州"] = russia_oblast,
["加里寧格勒州"] = russia_oblast,
["卡盧加州"] = russia_oblast,
["克麥羅沃州"] = russia_oblast,
["基洛夫州"] = russia_oblast,
["科斯特羅馬州"] = russia_oblast,
["庫爾干州"] = russia_oblast,
["庫爾斯克州"] = russia_oblast,
["列寧格勒州"] = russia_oblast,
["利佩茨克州"] = russia_oblast,
["馬加丹州"] = russia_oblast,
["莫斯科州"] = russia_oblast,
["摩爾曼斯克州"] = russia_oblast,
["下諾夫哥羅德州"] = russia_oblast,
["諾夫哥羅德州"] = russia_oblast,
["新西伯利亞州"] = russia_oblast,
["鄂木斯克州"] = russia_oblast,
["奧倫堡州"] = russia_oblast,
["奧廖爾州"] = russia_oblast,
["奔薩州"] = russia_oblast,
["普斯科夫州"] = russia_oblast,
["羅斯托夫州"] = russia_oblast,
["梁贊州"] = russia_oblast,
["薩哈林州"] = {wp = "Sakhalin Oblast", placetype = "oblast"},
["薩馬拉州"] = russia_oblast,
["薩拉托夫州"] = russia_oblast,
["斯摩棱斯克州"] = russia_oblast,
["斯維爾德洛夫斯克州"] = russia_oblast,
["坦波夫州"] = russia_oblast,
["托木斯克州"] = russia_oblast,
["圖拉州"] = russia_oblast,
["特維爾州"] = russia_oblast,
["秋明州"] = russia_oblast,
["烏里揚諾夫斯克州"] = russia_oblast,
["弗拉基米爾州"] = russia_oblast,
["伏爾加格勒州"] = russia_oblast,
["沃洛格達州"] = russia_oblast,
["沃羅涅日州"] = russia_oblast,
["雅羅斯拉夫爾州"] = russia_oblast,
-- republics
["阿迪格共和國"] = russia_republic,
["巴什科爾托斯坦共和國"] = russia_republic,
["布里亞特共和國"] = russia_republic,
["達吉斯坦共和國"] = russia_republic,
["印古什共和國"] = russia_republic,
["卡爾梅克共和國"] = russia_republic,
["卡累利亞共和國"] = {wp = "Republic of Karelia", placetype = "republic"},
["哈卡斯共和國"] = russia_republic,
["莫爾多瓦共和國"] = russia_republic,
["北奧塞梯-阿蘭尼亞共和國"] = {wp = "North Ossetia–Alania", placetype = "republic"},
["北奧塞梯"] = {alias_of = "北奧塞梯-阿蘭尼亞共和國"},
["韃靼斯坦共和國"] = russia_republic,
["阿爾泰共和國"] = {wp = "Altai Republic", placetype = "republic"},
["車臣共和國"] = russia_republic,
["楚瓦什共和國"] = russia_republic,
["卡巴爾達-巴爾卡爾共和國"] = russia_republic,
["卡拉恰伊-切爾克斯共和國"] = russia_republic,
["科米共和國"] = {wp = "Komi Republic", placetype = "republic"},
["馬里埃爾共和國"] = russia_republic,
["薩哈共和國"] = {wp = "Sakha Republic", placetype = "republic"},
["雅庫特"] = {alias_of = "薩哈共和國"},
["圖瓦共和國"] = russia_republic,
["烏德穆爾特共和國"] = russia_republic,
}
export.russia_group = {
placename_to_key = false,
default_container = "俄羅斯",
default_placetype = "oblast",
data = export.russia_federal_subjects,
}
export.saudi_arabia_provinces = {
["利雅得省"] = {wp = "Riyadh Province"},
["麥加省"] = {wp = "Mecca Province"},
["東部省(沙特)"] = {wp = "Eastern Province, Saudi Arabia", no_auto_augment_container = true},
["麥地那省"] = {wp = "Medina Province"},
["阿西爾省"] = {wp = "Asir"},
["吉贊省"] = {wp = "Jazan Province"},
["卡西姆省"] = {wp = "Al-Qassim Province"},
["塔布克省"] = {wp = "Tabuk Province"},
["哈伊爾省"] = {wp = "Ha'il Province"},
["焦夫省"] = {wp = "Al-Jawf Province"},
["納季蘭省"] = {wp = "Najran Province"},
["北部邊界省"] = {wp = "Northern Borders Province"},
["巴哈省"] = {wp = "Al-Bahah Province"},
}
export.saudi_arabia_group = {
placename_to_key = false,
default_container = "沙烏地阿拉伯",
default_placetype = "province",
data = export.saudi_arabia_provinces,
}
export.south_africa_provinces = {
["東開普省"] = {wp = "Eastern Cape"},
["自由邦省"] = {wp = "Free State (South African province)"},
["豪登省"] = {wp = "Gauteng"},
["夸祖魯-納塔爾省"] = {wp = "KwaZulu-Natal"},
["林波波省"] = {wp = "Limpopo"},
["姆普馬蘭加省"] = {wp = "Mpumalanga"},
["西北省(南非)"] = {wp = "North West (South African province)"},
["北開普省"] = {wp = "Northern Cape"},
["西開普省"] = {wp = "Western Cape"},
}
export.south_africa_group = {
placename_to_key = false,
default_container = "南非",
default_placetype = "province",
data = export.south_africa_provinces,
}
export.ukraine_oblasts = {
["切爾卡瑟州"] = {wp = "Cherkasy Oblast"},
["切爾尼戈夫州"] = {wp = "Chernihiv Oblast"},
["切爾諾夫策州"] = {wp = "Chernivtsi Oblast"},
["第聶伯羅彼得羅夫斯克州"] = {wp = "Dnipropetrovsk Oblast"},
["頓涅茨克州"] = {wp = "Donetsk Oblast"},
["伊萬諾-弗蘭科夫斯克州"] = {wp = "Ivano-Frankivsk Oblast"},
["哈爾科夫州"] = {wp = "Kharkiv Oblast"},
["赫爾松州"] = {wp = "Kherson Oblast"},
["赫梅利尼茨基州"] = {wp = "Khmelnytskyi Oblast"},
["基洛夫格勒州"] = {wp = "Kirovohrad Oblast"},
["基輔州"] = {wp = "Kyiv Oblast"},
["盧甘斯克州"] = {wp = "Luhansk Oblast"},
["利沃夫州"] = {wp = "Lviv Oblast"},
["尼古拉耶夫州"] = {wp = "Mykolaiv Oblast"},
["敖德薩州"] = {wp = "Odesa Oblast"},
["波爾塔瓦州"] = {wp = "Poltava Oblast"},
["羅夫諾州"] = {wp = "Rivne Oblast"},
["蘇梅州"] = {wp = "Sumy Oblast"},
["捷爾諾波爾州"] = {wp = "Ternopil Oblast"},
["文尼察州"] = {wp = "Vinnytsia Oblast"},
["沃里尼亞州"] = {wp = "Volyn Oblast"},
["外喀爾巴阡州"] = {wp = "Zakarpattia Oblast"},
["扎波羅熱州"] = {wp = "Zaporizhzhia Oblast"},
["日托米爾州"] = {wp = "Zhytomyr Oblast"},
}
export.ukraine_group = {
placename_to_key = false,
default_container = "烏克蘭",
default_placetype = "oblast",
data = export.ukraine_oblasts,
}
export.wales_principal_areas = {
["布拉艾諾格溫特"] = {wp = "Blaenau Gwent"},
["布里真德"] = {wp = "Bridgend County Borough"},
["卡菲利"] = {wp = "Caerphilly County Borough"},
["卡馬森郡"] = {wp = "Carmarthenshire", placetype = "county"},
["克雷地基昂"] = {wp = "Ceredigion", placetype = "county"},
["科溫"] = {wp = "Conwy County Borough"},
["登比郡"] = {wp = "Denbighshire", placetype = "county"},
["弗林特郡"] = {wp = "Flintshire", placetype = "county"},
["格溫內德"] = {wp = "Gwynedd", placetype = "county"},
["安格爾西島"] = {wp = "Isle of Anglesey", placetype = "county"},
["默瑟蒂德菲爾"] = {wp = "Merthyr Tydfil County Borough"},
["蒙茅斯郡"] = {wp = "Monmouthshire", placetype = "county"},
["尼斯-波特塔爾博特"] = {wp = "Neath Port Talbot"},
["彭布羅克郡"] = {wp = "Pembrokeshire", placetype = "county"},
["波伊斯"] = {wp = "Powys", placetype = "county"},
["朗達坎農塔夫"] = {wp = "Rhondda Cynon Taf"},
["托爾范"] = {wp = "Torfaen"},
["格拉摩根谷"] = {wp = "Vale of Glamorgan"},
["雷克瑟姆"] = {wp = "Wrexham County Borough"},
}
export.wales_group = {
placename_to_key = false,
default_container = {key = "威爾斯", placetype = "constituent country"},
default_placetype = "county borough",
data = export.wales_principal_areas,
}
-----------------------------------------------------------------------------------
-- City groups --
-----------------------------------------------------------------------------------
export.australia_cities = {
["阿德萊德"] = {container = "南澳大利亞", wp = "Adelaide"},
["布里斯班"] = {container = "昆士蘭", wp = "Brisbane"},
["坎培拉"] = {container = "澳大利亞首都領地", wp = "Canberra"},
["墨爾本"] = {container = "維多利亞州", wp = "Melbourne"},
["紐卡素"] = {container = "新南威爾斯", wp = "Newcastle, New South Wales"},
["伯斯"] = {container = "西澳大利亞", wp = "Perth"},
["悉尼"] = {container = "新南威爾斯", wp = "Sydney"},
}
export.australia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "澳大利亞",
default_placetype = "city",
default_is_city = true,
data = export.australia_cities,
}
export.brazil_cities = {
["聖保羅"] = {container = "聖保羅州", wp = "São Paulo"},
["里約熱內盧"] = {container = "里約熱內盧州", wp = "Rio de Janeiro"},
["貝洛奧里藏特"] = {container = "米納斯吉拉斯", wp = "Belo Horizonte"},
["累西腓"] = {container = "伯南布哥州", wp = "Recife"},
["阿雷格里港"] = {container = "南里奧格蘭德州", wp = "Porto Alegre"},
["巴西利亞"] = {container = "巴西聯邦區", wp = "Brasília"},
["福塔萊薩"] = {container = "塞阿拉州", wp = "Fortaleza"},
["薩爾瓦多"] = {container = "巴伊亞", wp = "Salvador, Bahia"},
["庫里蒂巴"] = {container = "巴拉那州", wp = "Curitiba"},
["坎皮納斯"] = {container = "聖保羅州", wp = "Campinas"},
["戈亞尼亞"] = {container = "戈亞斯州", wp = "Goiânia"},
["瑪瑙斯"] = {container = "亞馬遜州", wp = "Manaus"},
["伯利恆"] = {container = "帕拉州", wp = "Belém, Pará"},
["維多利亞"] = {container = "聖埃斯皮里圖州", wp = "Vitória, Espírito Santo"},
["聖路易斯"] = {container = "馬拉尼昂州", wp = "São Luís"},
["納塔爾"] = {container = "北里奧格蘭德州", wp = "Natal, Rio Grande do Norte"},
["弗洛里亞諾波利斯"] = {container = "聖卡塔琳娜州", wp = "Florianópolis"},
["馬塞約"] = {container = "阿拉戈亞斯州", wp = "Maceió"},
["若昂佩索阿"] = {container = "帕拉伊巴州", wp = "João Pessoa"},
["特雷齊納"] = {container = "皮奧伊州", wp = "Teresina"},
["隆德里納"] = {container = "巴拉那州", wp = "Londrina"},
}
export.brazil_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "巴西",
default_placetype = "city",
default_is_city = true,
data = export.brazil_cities,
}
export.canada_cities = {
["多倫多"] = {container = "安大略", wp = "Toronto"},
["蒙特婁"] = {container = "魁北克", wp = "Montreal"},
["溫哥華"] = {container = "英屬哥倫比亞", wp = "Vancouver"},
["卡加里"] = {container = "亞伯達", wp = "Calgary"},
["愛民頓"] = {container = "亞伯達", wp = "Edmonton"},
["渥太華"] = {container = "安大略", wp = "Ottawa"},
["魁北克城"] = {container = "魁北克", wp = "Quebec City"},
["溫尼伯"] = {container = "馬尼托巴", wp = "Winnipeg"},
["漢密爾頓"] = {container = "安大略", wp = "Hamilton, Ontario"},
}
export.canada_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "加拿大",
default_placetype = "city",
default_is_city = true,
data = export.canada_cities,
}
export.france_cities = {
["巴黎"] = {container = "法蘭西島大區", wp = "Paris"},
["里昂"] = {container = "奧弗涅-隆河-阿爾卑斯大區", wp = "Lyon"},
["馬賽"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Marseille"},
["里爾"] = {container = "上法蘭西大區", wp = "Lille"},
["波爾多"] = {container = "新阿基坦大區", wp = "Bordeaux"},
["圖盧茲"] = {container = "奧克西塔尼大區", wp = "Toulouse"},
["尼斯"] = {container = "普羅旺斯-阿爾卑斯-蔚藍海岸大區", wp = "Nice"},
["南特"] = {container = "盧瓦爾河地區大區", wp = "Nantes"},
["史特拉斯堡"] = {container = "大東部大區", wp = "Strasbourg"},
["雷恩"] = {container = "布列塔尼大區", wp = "Rennes"},
}
export.france_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "法國",
default_placetype = "city",
default_is_city = true,
data = export.france_cities,
}
export.germany_cities = {
["科隆"] = {container = "北萊茵-威斯特法倫", wp = "Cologne"},
["杜塞爾多夫"] = {container = "北萊茵-威斯特法倫", wp = "Düsseldorf"},
["多特蒙德"] = {container = "北萊茵-威斯特法倫", wp = "Dortmund"},
["埃森"] = {container = "北萊茵-威斯特法倫", wp = "Essen"},
["柏林"] = {wp = "Berlin"},
["法蘭克福"] = {container = "黑森", wp = "Frankfurt"},
["漢堡"] = {wp = "Hamburg"},
["慕尼黑"] = {container = "巴伐利亞", wp = "Munich"},
["斯圖加特"] = {container = "巴登-符騰堡", wp = "Stuttgart"},
["曼海姆"] = {container = "巴登-符騰堡", wp = "Mannheim"},
["紐倫堡"] = {container = "巴伐利亞", wp = "Nuremberg"},
["漢諾威"] = {container = "下薩克森", wp = "Hanover"},
["比勒費爾德"] = {container = "北萊茵-威斯特法倫", wp = "Bielefeld"},
["萊比錫"] = {container = "薩克森", wp = "Leipzig"},
["亞琛"] = {container = "北萊茵-威斯特法倫", wp = "Aachen"},
["不來梅"] = {wp = "Bremen"},
}
export.germany_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "德國",
default_placetype = "city",
default_is_city = true,
data = export.germany_cities,
}
export.india_cities = {
["德里"] = {container = {key = "德里", placetype = "union territory"}, wp = "Delhi"},
["孟買"] = {container = "馬哈拉施特拉邦", wp = "Mumbai"},
["加爾各答"] = {container = "西孟加拉邦", wp = "Kolkata"},
["班加羅爾"] = {container = "卡納塔克邦", wp = "Bengaluru"},
["金奈"] = {container = "泰米爾納德邦", wp = "Chennai"},
["海德拉巴"] = {container = "特倫甘納邦", wp = "Hyderabad"},
["艾哈邁達巴德"] = {container = "古吉拉特邦", wp = "Ahmedabad"},
["浦那"] = {container = "馬哈拉施特拉邦", wp = "Pune"},
["蘇拉特"] = {container = "古吉拉特邦", wp = "Surat"},
["勒克瑙"] = {container = "北方邦", wp = "Lucknow"},
["齋浦爾"] = {container = "拉賈斯坦邦", wp = "Jaipur"},
["坎普爾"] = {container = "北方邦", wp = "Kanpur"},
["那格浦爾"] = {container = "馬哈拉施特拉邦", wp = "Nagpur"},
["巴特那"] = {container = "比哈爾邦", wp = "Patna"},
["瓦拉納西"] = {container = "北方邦", wp = "Varanasi"},
["印多爾"] = {container = "中央邦", wp = "Indore"},
["博帕爾"] = {container = "中央邦", wp = "Bhopal"},
["阿格拉"] = {container = "北方邦", wp = "Agra"},
["科欽"] = {container = "喀拉拉邦", wp = "Kochi"},
["維沙卡帕特南"] = {container = "安得拉邦", wp = "Visakhapatnam"},
["齋普爾"] = {alias_of = "齋浦爾"},
}
export.india_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "印度",
default_placetype = "city",
default_is_city = true,
data = export.india_cities,
}
export.indonesia_cities = {
["雅加達"] = {container = "雅加達首都特區", wp = "Jakarta"},
["泗水"] = {container = "東爪哇省", wp = "Surabaya"},
["勿加泗"] = {container = "西爪哇省", wp = "Bekasi"},
["萬隆"] = {container = "西爪哇省", wp = "Bandung"},
["棉蘭"] = {container = "北蘇門答臘省", wp = "Medan"},
["德波"] = {container = "西爪哇省", wp = "Depok"},
["萬丹市"] = {container = "萬丹省", wp = "Tangerang"},
["巨港"] = {container = "南蘇門答臘省", wp = "Palembang"},
["三寶壟"] = {container = "中爪哇省", wp = "Semarang"},
["望加錫"] = {container = "南蘇拉威西省", wp = "Makassar"},
["武端"] = {container = "廖內群島省", wp = "Batam"},
["茂物"] = {container = "西爪哇省", wp = "Bogor"},
["北干巴魯"] = {container = "廖內省", wp = "Pekanbaru"},
["班達爾楠榜"] = {container = "楠榜省", wp = "Bandar Lampung"},
["巴東"] = {container = "西蘇門答臘省", wp = "Padang"},
["薩馬林達"] = {container = "東加里曼丹省", wp = "Samarinda"},
["瑪琅"] = {container = "東爪哇省", wp = "Malang"},
["日惹"] = {container = "日惹特區", wp = "Yogyakarta"},
["登巴薩"] = {container = "峇里省", wp = "Denpasar"},
["哲勒貢"] = {container = "西爪哇省", wp = "Cirebon"},
["梭羅"] = {container = "中爪哇省", wp = "Surakarta"},
["馬辰"] = {container = "南加里曼丹省", wp = "Banjarmasin"},
["打橫"] = {container = "西爪哇省", wp = "Tasikmalaya"},
}
export.indonesia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "印度尼西亞",
default_placetype = "city",
default_is_city = true,
data = export.indonesia_cities,
}
export.italy_cities = {
["米蘭"] = {container = "倫巴第", wp = "Milan"},
["那不勒斯"] = {container = "坎帕尼亞", wp = "Naples"},
["羅馬"] = {container = "拉齊奧", wp = "Rome"},
["都靈"] = {container = "皮埃蒙特", wp = "Turin"},
["威尼斯"] = {container = "威尼托", wp = "Venice"},
["佛羅倫斯"] = {container = "托斯卡納", wp = "Florence"},
["巴里"] = {container = "普利亞", wp = "Bari"},
["巴勒莫"] = {container = "西西里", wp = "Palermo"},
["卡塔尼亞"] = {container = "西西里", wp = "Catania"},
["布雷西亞"] = {container = "倫巴第", wp = "Brescia"},
["熱那亞"] = {container = "利古里亞", wp = "Genoa"},
}
export.italy_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "region"),
default_container = "意大利",
default_placetype = "city",
default_is_city = true,
data = export.italy_cities,
}
export.japan_cities = {
["東京"] = {keydesc = "[[東京]]都會區,[[日本]]的[[首都]]和[[都]]級行政區",
placetype = {"city", "prefecture"},
divs = {
{type = "special wards", container_parent_type = false},
{type = "cities", prep = "in"},
},
},
["橫濱"] = {container = "神奈川縣", wp = "Yokohama"},
["大阪"] = {container = "大阪府", wp = "Osaka"},
["名古屋"] = {container = "愛知縣", wp = "Nagoya"},
["札幌"] = {container = "北海道", wp = "Sapporo"},
["福岡"] = {container = "福岡縣", wp = "Fukuoka"},
["神戶"] = {container = "兵庫縣", wp = "Kobe"},
["京都"] = {container = "京都府", wp = "Kyoto"},
["川崎"] = {container = "神奈川縣", wp = "Kawasaki, Kanagawa"},
["廣島"] = {container = "廣島縣", wp = "Hiroshima"},
["仙台"] = {container = "宮城縣", wp = "Sendai"},
["北九州"] = {container = "福岡縣", wp = "Kitakyushu"},
["新潟"] = {container = "新潟縣", wp = "Niigata (city)"},
["靜岡"] = {container = "靜岡縣", wp = "Shizuoka (city)"},
["岡山"] = {container = "岡山縣", wp = "Okayama"},
["熊本"] = {container = "熊本縣", wp = "Kumamoto"},
["鹿兒島"] = {container = "鹿兒島縣", wp = "Kagoshima"},
}
export.japan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "prefecture"),
default_container = "日本",
default_placetype = "city",
default_is_city = true,
data = export.japan_cities,
}
export.mexico_cities = {
["墨西哥城"] = {wp = "墨西哥城"},
["蒙特雷"] = {container = "新萊昂州", wp = "Monterrey"},
["瓜達拉哈拉"] = {container = "哈利斯科州", wp = "Guadalajara"},
["普埃布拉市"] = {container = "普埃布拉州", wp = "Puebla (city)"},
["托盧卡"] = {container = "墨西哥州", wp = "Toluca"},
["蒂華納"] = {container = "下加利福尼亞州", wp = "Tijuana"},
["萊昂"] = {container = "瓜納華托州", wp = "León, Guanajuato"},
["克雷塔羅市"] = {container = "克雷塔羅州", wp = "Querétaro (city)"},
["華雷斯城"] = {container = "奇瓦瓦州", wp = "Ciudad Juárez"},
["托雷翁"] = {container = "科阿韋拉州", wp = "Torreón"},
["梅里達"] = {container = "尤卡坦州", wp = "Mérida, Yucatán"},
["聖路易斯波托西市"] = {container = "聖路易斯波托西州", wp = "San Luis Potosí (city)"},
["阿瓜斯卡連特斯市"] = {container = "阿瓜斯卡連特斯州", wp = "Aguascalientes (city)"},
["墨西卡利"] = {container = "下加利福尼亞州", wp = "Mexicali"},
}
export.mexico_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "墨西哥",
default_placetype = "city",
default_is_city = true,
data = export.mexico_cities,
}
export.nigeria_cities = {
["拉各斯"] = {container = "拉各斯州", wp = "Lagos"},
["卡諾市"] = {container = "卡諾州", wp = "Kano (city)"},
["伊巴丹"] = {container = "奧約州", wp = "Ibadan"},
["阿布賈"] = {container = {key = "阿布賈聯邦首都轄區", placetype = "federal territory"}, wp = "Abuja"},
["哈科特港"] = {container = "河流州", wp = "Port Harcourt"},
["卡杜納市"] = {container = "卡杜納州", wp = "Kaduna (city)"},
["貝寧城"] = {container = "埃多州", wp = "Benin City"},
["阿巴"] = {container = "阿比亞州", wp = "Aba, Nigeria"},
["奧尼查"] = {container = "阿南布拉州", wp = "Onitsha"},
["邁杜古里"] = {container = "博爾諾州", wp = "Maiduguri"},
["伊洛林"] = {container = "誇拉州", wp = "Ilorin"},
["索科托市"] = {container = "索科托州", wp = "Sokoto (city)"},
["喬斯"] = {container = "高原州", wp = "Jos"},
["扎里亞"] = {container = "卡杜納州", wp = "Zaria"},
["埃努古市"] = {container = "埃努古州", wp = "Enugu (city)"},
}
export.nigeria_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "奈及利亞",
default_placetype = "city",
default_is_city = true,
data = export.nigeria_cities,
}
export.pakistan_cities = {
["卡拉奇"] = {container = "信德省", wp = "Karachi"},
["拉合爾"] = {container = "旁遮普省(巴基斯坦)", wp = "Lahore"},
["拉瓦爾品第"] = {container = "旁遮普省(巴基斯坦)", wp = "Rawalpindi"},
["伊斯蘭馬巴德"] = {container = {key = "伊斯蘭馬巴德首都直轄區", placetype = "federal territory"}, wp = "Islamabad"},
["費薩拉巴德"] = {container = "旁遮普省(巴基斯坦)", wp = "Faisalabad"},
["古傑蘭瓦拉"] = {container = "旁遮普省(巴基斯坦)", wp = "Gujranwala"},
["海德拉巴(巴基斯坦)"] = {container = "信德省", wp = "Hyderabad, Pakistan"},
["木爾坦"] = {container = "旁遮普省(巴基斯坦)", wp = "Multan"},
["白沙瓦"] = {container = "開伯爾-普赫圖赫瓦省", wp = "Peshawar"},
["奎達"] = {container = "俾路支省", wp = "Quetta"},
["薩戈達"] = {container = "旁遮普省(巴基斯坦)", wp = "Sargodha"},
["錫亞爾科特"] = {container = "旁遮普省(巴基斯坦)", wp = "Sialkot"},
}
export.pakistan_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "巴基斯坦",
default_placetype = "city",
default_is_city = true,
data = export.pakistan_cities,
}
export.philippines_cities = {
["奎松市"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Quezon City"},
["馬尼拉"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Manila"},
["達沃市"] = {container = "南達沃省", wp = "Davao City"},
["卡洛坎"] = {container = {key = "馬尼拉都會區", placetype = "region"}, wp = "Caloocan"},
["三寶顏市"] = {container = "南三寶顏省", wp = "Zamboanga City"},
["宿霧市"] = {container = "宿霧省", wp = "Cebu City"},
["安蒂波洛"] = {container = "黎剎省", wp = "Antipolo"},
["卡加延德奧羅"] = {container = "東米薩米斯省", wp = "Cagayan de Oro"},
["達斯馬里尼亞斯"] = {container = "甲米地省", wp = "Dasmariñas"},
["棉蘭老將軍城"] = {container = "南哥打巴托省", wp = "General Santos"},
["聖何塞德爾蒙特"] = {container = "布拉干省", wp = "San Jose del Monte"},
["巴科洛德"] = {container = "西內格羅斯省", wp = "Bacolod"},
["卡蘭巴"] = {container = "拉古納省", wp = "Calamba, Laguna"},
["天使城"] = {container = "邦板牙省", wp = "Angeles City"},
["伊洛伊洛市"] = {container = "伊洛伊洛省", wp = "Iloilo City"},
}
export.philippines_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "菲律賓",
default_placetype = "city",
default_is_city = true,
data = export.philippines_cities,
}
export.russia_cities = {
["莫斯科"] = {wp = "Moscow"},
["聖彼得堡"] = {wp = "Saint Petersburg"},
["新西伯利亞"] = {container = "新西伯利亞州", wp = "Novosibirsk"},
["葉卡捷琳堡"] = {container = "斯維爾德洛夫斯克州", wp = "Yekaterinburg"},
["下諾夫哥羅德"] = {container = "下諾夫哥羅德州", wp = "Nizhny Novgorod"},
["喀山"] = {container = {key = "韃靼斯坦共和國", placetype = "republic"}, wp = "Kazan"},
["車裡雅賓斯克市"] = {container = "車裡雅賓斯克州", wp = "Chelyabinsk"},
["頓河畔羅斯托夫"] = {container = "羅斯托夫州", wp = "Rostov-on-Don"},
["克拉斯諾達爾市"] = {container = {key = "克拉斯諾達爾邊疆區", placetype = "krai"}, wp = "Krasnodar"},
["薩馬拉市"] = {container = "薩馬拉州", wp = "Samara"},
["克拉斯諾亞爾斯克市"] = {container = {key = "克拉斯諾亞爾斯克邊疆區", placetype = "krai"}, wp = "Krasnoyarsk"},
["烏法"] = {container = {key = "巴什科爾托斯坦共和國", placetype = "republic"}, wp = "Ufa"},
["薩拉托夫市"] = {container = "薩拉托夫州", wp = "Saratov"},
["鄂木斯克市"] = {container = "鄂木斯克州", wp = "Omsk"},
["沃羅涅日市"] = {container = "沃羅涅日州", wp = "Voronezh"},
["伏爾加格勒市"] = {container = "伏爾加格勒州", wp = "Volgograd"},
["彼爾姆市"] = {container = {key = "彼爾姆邊疆區", placetype = "krai"}, wp = "Perm, Russia"},
}
export.russia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "oblast"),
default_container = "俄羅斯",
default_placetype = "city",
default_is_city = true,
data = export.russia_cities,
}
export.saudi_arabia_cities = {
["利雅得"] = {container = "利雅得省", wp = "Riyadh"},
["吉達"] = {container = "麥加省", wp = "Jeddah"},
["達曼"] = {container = "東部省(沙特)", wp = "Dammam"},
["麥加"] = {container = "麥加省", wp = "Mecca"},
["麥地那"] = {container = "麥地那省", wp = "Medina"},
["霍夫夫"] = {container = "東部省(沙特)", wp = "Hofuf"},
["哈米斯穆沙伊特"] = {container = "阿西爾省", wp = "Khamis Mushait"},
}
export.saudi_arabia_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "沙烏地阿拉伯",
default_placetype = "city",
default_is_city = true,
data = export.saudi_arabia_cities,
}
export.south_korea_cities = {
["首爾"] = {wp = "Seoul"},
["釜山"] = {wp = "Busan"},
["仁川"] = {wp = "Incheon"},
["大邱"] = {wp = "Daegu"},
["大田"] = {wp = "Daejeon"},
["光州"] = {wp = "Gwangju"},
["蔚山"] = {wp = "Ulsan"},
}
export.south_korea_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "南韓",
default_placetype = "city",
default_is_city = true,
data = export.south_korea_cities,
}
export.spain_cities = {
["馬德里"] = {container = "馬德里自治區", wp = "Madrid"},
["巴塞羅那"] = {container = "加泰羅尼亞", wp = "Barcelona"},
["瓦倫西亞"] = {container = "巴倫西亞", wp = "Valencia"},
["塞維利亞"] = {container = "安達盧西亞", wp = "Seville"},
["畢爾包"] = {container = "巴斯克", wp = "Bilbao"},
}
export.spain_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "autonomous community"),
default_container = "西班牙",
default_placetype = "city",
default_is_city = true,
data = export.spain_cities,
}
export.taiwan_cities = {
-- Special municipalities (province-level)
["臺北市"] = {placetype = "special municipality", wp = "臺北市"},
["新北市"] = {placetype = "special municipality", wp = "新北市"},
["桃園市"] = {placetype = "special municipality", wp = "桃園市"},
["臺中市"] = {placetype = "special municipality", wp = "臺中市"},
["臺南市"] = {placetype = "special municipality", wp = "臺南市"},
["高雄市"] = {placetype = "special municipality", wp = "高雄市"},
-- these last three are not special municipalities
["嘉義市"] = {placetype = "city", wp = "嘉義市"},
["新竹市"] = {placetype = "city", wp = "新竹市"},
["基隆市"] = {placetype = "city", wp = "基隆市"},
}
export.taiwan_cities_group = {
key_to_placename = make_key_to_placename(nil, "市$"),
placename_to_key = make_placename_to_key("市"),
default_container = "臺灣",
default_placetype = {"special municipality", "city"},
default_is_city = true,
data = export.taiwan_cities,
}
export.united_kingdom_cities = {
["倫敦"] = {container = {key = "大倫敦", placetype = "county"}, wp = "London"},
["曼徹斯特"] = {container = {key = "大曼徹斯特", placetype = "county"}, wp = "Manchester"},
["伯明翰"] = {container = {key = "西密德蘭", placetype = "county"}, wp = "Birmingham"},
["利物浦"] = {container = {key = "默西賽德郡", placetype = "county"}, wp = "Liverpool"},
["格拉斯哥"] = {container = {key = "Glasgow市", placetype = "council area"}, wp = "Glasgow"},
["利茲"] = {container = {key = "西約克郡", placetype = "county"}, wp = "Leeds"},
["布里斯托"] = {container = {key = "英格蘭", placetype = "constituent country"}, wp = "Bristol"},
["卡地夫"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Cardiff"},
["愛丁堡"] = {container = {key = "Edinburgh市", placetype = "council area"}, wp = "Edinburgh"},
["斯旺西"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Swansea"},
["紐波特"] = {container = {key = "威爾斯", placetype = "constituent country"}, wp = "Newport, Wales"},
}
export.united_kingdom_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "county"),
default_container = "英國",
default_placetype = "city",
default_is_city = true,
data = export.united_kingdom_cities,
}
export.united_states_cities = {
["紐約市"] = {container = "紐約", wp = "New York City"},
["洛杉磯"] = {container = "加利福尼亞", wp = "Los Angeles"},
["芝加哥"] = {container = "伊利諾伊", wp = "Chicago"},
["華盛頓特區"] = {wp = "Washington, D.C."},
["巴爾的摩"] = {container = "馬里蘭", wp = "Baltimore"},
["聖荷西"] = {container = "加利福尼亞", wp = "San Jose, California"},
["舊金山"] = {container = "加利福尼亞", wp = "San Francisco"},
["波士頓"] = {container = "麻薩諸塞", wp = "Boston"},
["達拉斯"] = {container = "德克薩斯", wp = "Dallas"},
["費城"] = {container = "賓夕法尼亞", wp = "Philadelphia"},
["休士頓"] = {container = "德克薩斯", wp = "Houston"},
["邁阿密"] = {container = "佛羅里達", wp = "Miami"},
["亞特蘭大"] = {container = "喬治亞", wp = "Atlanta"},
["底特律"] = {container = "密西根", wp = "Detroit"},
["鳳凰城"] = {container = "亞利桑那", wp = "Phoenix"},
["西雅圖"] = {container = "華盛頓州", wp = "Seattle"},
["明尼阿波利斯"] = {container = "明尼蘇達", wp = "Minneapolis"},
["克里夫蘭"] = {container = "俄亥俄", wp = "Cleveland"},
["丹佛"] = {container = "科羅拉多", wp = "Denver"},
["聖地牙哥(美國)"] = {container = "加利福尼亞", wp = "San Diego"},
["波特蘭(俄勒岡)"] = {container = "俄勒岡", wp = "Portland"},
["聖路易斯"] = {container = "密蘇里", wp = "St. Louis"},
["夏洛特"] = {container = "北卡羅來納", wp = "Charlotte"},
["薩克拉門托"] = {container = "加利福尼亞", wp = "Sacramento"},
["匹茲堡"] = {container = "賓夕法尼亞", wp = "Pittsburgh"},
["鹽湖城"] = {container = "猶他", wp = "Salt Lake City"},
["聖安東尼奧"] = {container = "德克薩斯", wp = "San Antonio"},
["哥倫布"] = {container = "俄亥俄", wp = "Columbus"},
["堪薩斯城"] = {container = "密蘇里", wp = "Kansas City metropolitan area"},
["印第安納波利斯"] = {container = "印第安納", wp = "Indianapolis"},
["拉斯維加斯"] = {container = "內華達", wp = "Las Vegas"},
["辛辛那提"] = {container = "俄亥俄", wp = "Cincinnati"},
["奧斯汀"] = {container = "德克薩斯", wp = "Austin"},
["密爾沃基"] = {container = "威斯康辛", wp = "Milwaukee"},
["羅利"] = {container = "北卡羅來納", wp = "Raleigh"},
["納什維爾"] = {container = "田納西", wp = "Nashville"},
["傑克遜維爾"] = {container = "佛羅里達", wp = "Jacksonville"},
["新奧爾良"] = {container = "路易斯安那", wp = "New Orleans"},
["路易斯維爾"] = {container = "肯塔基", wp = "Louisville"},
["奧克拉荷馬城"] = {container = "奧克拉荷馬", wp = "Oklahoma City"},
["孟菲斯"] = {container = "田納西", wp = "Memphis"},
["伯明翰(美國)"] = {container = "阿拉巴馬", wp = "Birmingham, Alabama"},
["弗雷斯諾"] = {container = "加利福尼亞", wp = "Fresno"},
["里奇蒙"] = {container = "弗吉尼亞", wp = "Richmond"},
["水牛城"] = {container = "紐約", wp = "Buffalo"},
["艾爾帕索"] = {container = "德克薩斯", wp = "El Paso"},
["阿爾伯克基"] = {container = "新墨西哥", wp = "Albuquerque"},
["塔森"] = {container = "亞利桑那", wp = "Tucson"},
["科羅拉多斯普林斯"] = {container = "科羅拉多", wp = "Colorado Springs"},
["奧馬哈"] = {container = "內布拉斯加", wp = "Omaha"},
["塔爾薩"] = {container = "奧克拉荷馬", wp = "Tulsa"},
}
export.united_states_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "state"),
default_container = "美國",
default_placetype = "city",
default_is_city = true,
data = export.united_states_cities,
}
export.vietnam_cities = {
["胡志明市"] = {wp = "Ho Chi Minh City"},
["西貢"] = {alias_of = "胡志明市"},
["河內"] = {wp = "Hanoi"},
["峴港"] = {wp = "Da Nang"},
["海防"] = {wp = "Haiphong"},
["邊和"] = {container = "同奈省", wp = "Biên Hòa", placetype = "city"},
["芹苴"] = {wp = "Cần Thơ"},
["順化"] = {wp = "Huế"},
}
export.vietnam_cities_group = {
placename_to_key = false,
canonicalize_key_container = make_canonicalize_key_container(nil, "province"),
default_container = "越南",
default_placetype = {"municipality", "city"},
default_is_city = true,
data = export.vietnam_cities,
}
-----------------------------------------------------------------------------------
-- locations list --
-----------------------------------------------------------------------------------
export.locations = {
export.continents_group,
export.countries_group,
export.country_like_entities_group,
export.former_countries_group,
export.united_states_group,
export.united_kingdom_group,
export.scotland_group,
export.england_group,
export.northern_ireland_group,
export.ireland_group,
export.wales_group,
export.china_group,
export.china_prefecture_level_cities_group,
export.taiwan_group,
export.canada_group,
export.australia_group,
export.india_group,
export.japan_group,
export.brazil_group,
export.france_group,
export.france_departments_group,
export.germany_group,
export.italy_group,
export.spain_group,
export.austria_group,
export.bangladesh_group,
export.egypt_group,
export.finland_group,
export.greece_group,
export.indonesia_group,
export.lebanon_group,
export.malaysia_group,
export.malta_group,
export.mexico_group,
export.moldova_group,
export.morocco_group,
export.netherlands_group,
export.new_zealand_group,
export.norway_group,
export.pakistan_group,
export.philippines_group,
export.poland_group,
export.portugal_group,
export.romania_group,
export.bulgaria_group,
export.iran_group,
export.russia_group,
export.saudi_arabia_group,
export.south_africa_group,
export.laos_group,
export.north_korea_group,
export.south_korea_group,
export.thailand_group,
export.turkey_group,
export.ukraine_group,
export.vietnam_group,
export.nigeria_group,
export.new_york_boroughs_group,
export.australia_cities_group,
export.brazil_cities_group,
export.canada_cities_group,
export.france_cities_group,
export.germany_cities_group,
export.india_cities_group,
export.indonesia_cities_group,
export.italy_cities_group,
export.japan_cities_group,
export.mexico_cities_group,
export.nigeria_cities_group,
export.pakistan_cities_group,
export.philippines_cities_group,
export.russia_cities_group,
export.saudi_arabia_cities_group,
export.south_korea_cities_group,
export.spain_cities_group,
export.taiwan_cities_group,
export.united_kingdom_cities_group,
export.united_states_cities_group,
export.vietnam_cities_group,
export.misc_cities_group,
}
return export
qib8iqcjd5ao5apqffc32lpbcoze66h
Module:Place/placetypes
828
3437750
9759400
9759347
2026-05-14T13:52:30Z
TongcyDai
53191
// Edit via Wikiplus
9759400
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["Eastern Europe"] = {"continent/Europe"},
["Central Europe"] = {"continent/Europe"},
["Western Europe"] = {"continent/Europe"},
["South Europe"] = {"continent/Europe"},
["Southern Europe"] = {"continent/Europe"},
["Northern Europe"] = {"continent/Europe"},
["Northeast Europe"] = {"continent/Europe"},
["Northeastern Europe"] = {"continent/Europe"},
["Southeast Europe"] = {"continent/Europe"},
["Southeastern Europe"] = {"continent/Europe"},
["North Caucasus"] = {"continent/Europe"},
["South Caucasus"] = {"continent/Asia"},
["South Asia"] = {"continent/Asia"},
["Southern Asia"] = {"continent/Asia"},
["East Asia"] = {"continent/Asia"},
["Eastern Asia"] = {"continent/Asia"},
["Central Asia"] = {"continent/Asia"},
["West Asia"] = {"continent/Asia"},
["Western Asia"] = {"continent/Asia"},
["Southeast Asia"] = {"continent/Asia"},
["North Asia"] = {"continent/Asia"},
["Northern Asia"] = {"continent/Asia"},
["Anatolia"] = {"continent/Asia"},
["Asia Minor"] = {"continent/Asia"},
["Mesopotamia"] = {"continent/Asia"},
["North Africa"] = {"continent/Africa"},
["Central Africa"] = {"continent/Africa"},
["West Africa"] = {"continent/Africa"},
["East Africa"] = {"continent/Africa"},
["Southern Africa"] = {"continent/Africa"},
["Central America"] = {"continent/Central America"},
["Caribbean"] = {"continent/North America"},
["Polynesia"] = {"continent/Oceania"},
["Micronesia"] = {"continent/Oceania"},
["Melanesia"] = {"continent/Oceania"},
["Siberia"] = {"country/Russia", "continent/Asia"},
["Russian Far East"] = {"country/Russia", "continent/Asia"},
["South Wales"] = {"constituent country/Wales", "continent/Europe"},
["Balkans"] = {"continent/Europe"},
["West Bank"] = {"country/Palestine", "continent/Asia"},
["Gaza"] = {"country/Palestine", "continent/Asia"},
["Gaza Strip"] = {"country/Palestine", "continent/Asia"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {true, "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
isnvcskhzie854cprgiz1s9wv1md33s
9759524
9759400
2026-05-14T21:17:11Z
TongcyDai
53191
// Edit via Wikiplus
9759524
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {true, "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
ldt06cyy49cbqsomlbt8j6aqsd9bb0r
9759527
9759524
2026-05-14T21:38:15Z
TongcyDai
53191
9759527
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
-- ZH: returns "" for continent/continental-region/supercontinent/planet specs (非洲城市 not 非洲的城市);
-- returns 的 for all other location types (法國的城市, 加州的城市, etc.)
local function spec_de_particle(spec)
local pt = spec and spec.placetype
if pt then
local pts = type(pt) == "table" and pt or {pt}
for _, p in ipairs(pts) do
if p == "continent" or p == "continental region" or p == "supercontinent" or p == "planet" then
return ""
end
end
end
return export.zh_strings.de_particle
end
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" / "非洲城市" (continent/region omit 的)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local retcats = {export.get_prefixed_key(key, spec) .. spec_de_particle(spec) .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. spec_de_particle(container.spec) .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" / "亞洲首都" (continent omit 的)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. spec_de_particle(container.spec) .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. spec_de_particle(spec) .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. spec_de_particle(container.spec) .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {true, "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
lf10p3c62sso0to6j6flpsob2n5s2xw
9759528
9759527
2026-05-14T21:45:33Z
TongcyDai
53191
9759528
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {"+++國家", "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
1iyxbrvziv8h90lz8w1g6fzn1qi7qo8
9759551
9759528
2026-05-14T22:25:27Z
TongcyDai
53191
9759551
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[大洲]]以及大洲等級的[[地區]](如[[玻里尼西亞]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {"+++國家", "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
8dipwf3tiggjpwd4kzfexwxxgjrg34i
9759605
9759551
2026-05-14T22:30:16Z
TongcyDai
53191
9759605
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地名" (location_key + 地名)
insert(retcats, export.get_prefixed_key(key, spec) .. "地名")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[大洲]]以及大洲等級的[[地區]](如[[玻里尼西亞]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {"+++國家", "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"水體"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
mb4r27oac4hxcu99ak6clzd9en0jo3i
9759668
9759605
2026-05-14T23:56:54Z
TongcyDai
53191
9759668
Scribunto
text/plain
local export = {}
export.force_cat = false -- set to true for testing
local m_locations = require("Module:place/locations")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_strutils = require("Module:string utilities")
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
-- Chinese localization data (zh_name, zh_suffix, qualifiers, extra-info labels, etc.)
local m_zh_data = require("Module:place/data/sandbox")
local dump = mw.dumpObject
local insert = table.insert
local concat = table.concat
local internal_error = m_locations.internal_error
export.internal_error = internal_error
local process_error = m_locations.process_error
export.process_error = process_error
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local ucfirst = m_strutils.ucfirst
local ulower = m_strutils.lower
local rmatch = m_strutils.match
local split = m_strutils.split
--[==[ intro:
This module contains placetype data used by [[Module:place]] and {{tl|place}}, along with a significant amount of code
to work with both placetypes and locations, as well as some placename-related info (FIXME: Consider moving it to
[[Module:place/locations]]). See also [[Module:place/locations]], which has definitions of all known locations. You must
currently load this module using {{cd|require()}}, not using {{cd|mw.loadData()}}.
In particular, it contains two fundamental and tricky functions:
# `get_placetype_equivs`, which finds the equivalent placetypes to look under in order to find a given property, and in
the process correctly handles placetypes with qualifiers (including qualifiers that act similar to "type-raising"
operators in that they do something non-trivial to the placetype to their right) as well as form-of directives and
fallbacks.
# `find_matching_holonym_location`, which looks up a holonym to find a matching known location, but in the process
checks holonyms to the right to make sure there isn't a clash between the user-specified containing holonyms and the
containers of the known location being considered. This is done to prevent overcategorizing when either there are two
known locations with the same name (e.g. Birmingham in England and Birmingham, Alabama in the US), or more generally
two locations with the same name, one of which is a known location but where the other is not (e.g. we're processing
non-known-location Mérida, Spain and don't want it categorized like known location Mérida, Yucatán, Mexico).
Both of these functions are invoked repeatedly, and probably are invoked several times on the same inputs and as a
result are candidates for memoization to speed up the operation of {{tl|place}}.
]==]
------------------------------------------------------------------------------------------
-- Basic utilities --
------------------------------------------------------------------------------------------
--[==[
Return true if `force_cat` is set either in this module or in [[Module:place/locations]].
]==]
function export.get_force_cat()
return export.force_cat or m_locations.force_cat
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/place/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("place/" .. page)
return true
end
function export.remove_links_and_html(text)
text = m_links.remove_links(text)
return text:gsub("<.->", "")
end
--[==[
Return the singular version of a maybe-plural placetype, or nil if not plural. This correctly handles placetypes with
irregular plurals such as `kibbutzim` plural of `kibbutz` by looking up in a table constructed from the `plural` values
specified in `placetype_data`. If a special plural value is not found, the regular singularization algorithm in
[[Module:en-utilities]] is invoked, which reverses the y -> ies change after vowels and the 'es' addition after sh/ch/x,
and otherwise just subtracts a final 's' (which will incorrectly generate 'passe' for plural 'passes'; FIXME: consider
changing this for words ending in '-sses'). If the generated singular is the same as the passed-in value, nil is
returned.
]==]
function export.maybe_singularize_placetype(placetype)
if not placetype then
return nil
end
if export.plural_placetype_to_singular[placetype] then
return export.plural_placetype_to_singular[placetype]
end
local retval = require(en_utilities_module).singularize(placetype)
if retval == placetype then
return nil
end
return retval
end
-- Return the correct plural of a placetype, and (if `do_ucfirst` is given) make the first letter uppercase. We first
-- look up the plural in `placetype_data`, falling back to pluralize() in [[Module:en-utilities]], which is almost
-- always correct.
function export.pluralize_placetype(placetype, do_ucfirst)
local ptdata = export.placetype_data[placetype]
if ptdata and ptdata.plural then
placetype = ptdata.plural
else
placetype = require(en_utilities_module).pluralize(placetype)
end
if do_ucfirst then
return ucfirst(placetype)
else
return placetype
end
end
--[==[
Get the data associated with a placetype, which may be in its singular or plural form. If `from_category` is specified,
we also look for category-only placetypes (generally plural) followed by `!`. Return three values: (a) the placetype
under which the data can be looked up (i.e. in its singular form if the passed-in `placetype` is plural and did not
match a category-only placetype followed by `!`); (b) the placetype data structure; (c) the type of `placetype` match
that occurred, one of `"direct"` if the canonical placetype is the same as the passed-in `placetype` and also the same
as the key under which `ptdata` was looked up, or `"direct-category"` if the `ptdata` was looked up under a key formed
from the passed-in `placetype` by adding `!`, or `"plural"` if the `ptdata` was looked up under the singularized version
of the plural passed-in `placetype`.
]==]
function export.get_placetype_data(placetype, from_category)
local ptdata = export.placetype_data[placetype]
if ptdata then
return placetype, ptdata, "direct"
end
if from_category then
ptdata = export.placetype_data[placetype .. "!"]
if ptdata then
return placetype .. "!", ptdata, "direct-category"
end
end
local sg_placetype = export.maybe_singularize_placetype(placetype)
if sg_placetype then
ptdata = export.placetype_data[sg_placetype]
if ptdata then
return sg_placetype, ptdata, "plural"
end
end
return nil
end
--[==[
Check for special pseudo-placetypes that should be ignored for categorization purposes.
]==]
function export.placetype_is_ignorable(placetype)
return placetype == "and" or placetype == "or" or placetype:find("^%(")
end
function export.resolve_placetype_aliases(placetype)
return export.placetype_aliases[placetype] or placetype
end
--[==[
Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the
key isn't found in the placetype's entry in `placetype_data`, return nil.
]==]
function export.get_placetype_prop(placetype, key)
-- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype
-- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in
-- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice.
placetype = export.resolve_placetype_aliases(placetype)
if export.placetype_data[placetype] then
return export.placetype_data[placetype][key]
else
return nil
end
end
--[==[
Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list
{ {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e.
# the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are
zero such qualifiers, the value will be nil);
# a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil);
# the "reduced placetype" on the right.
Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from
left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases
in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization
of qualifiers does not happen if `no_canon_qualifiers` is specified.
For example, given the placetype `"small beachside unincorporated community"`, the return value will be
{ {
{nil, nil, "small beachside unincorporated community"},
{nil, "small", "beachside unincorporated community"},
{"small", "[[beachfront]]", "unincorporated community"},
{"small [[beachfront]]", "[[unincorporated]]", "community"},
}}
Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to
`"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`.
On the other hand, if given `"small former haunted community"`, the return value will be
{ {
{nil, nil, "small former haunted community"},
{nil, "small", "former haunted community"},
{"small", "former", "haunted community"},
}}
because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers.
Finally, if given `"former adr"`, the return value will be
{ {
{nil, nil, "former adr"},
{nil, "former", "administrative region"},
}}
because `"adr"` is a recognized placetype alias for `"administrative region"`.
]==]
function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers)
local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
local prev_qualifier = nil
while true do
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if canon == nil then
break
end
local new_qualifier = qualifier
if type(canon) == "table" then
canon = canon.link
end
if not no_canon_qualifiers and canon ~= false then
if canon == true then
new_qualifier = "[[" .. qualifier .. "]]"
else
new_qualifier = canon
end
end
insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)})
prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier
placetype = reduced_placetype
else
break
end
end
return splits
end
--[==[
Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the
placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list
of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a
placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the
words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off
qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words
not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used
to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is
an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first
entry if it exists in `placetype_data`.
'''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c)
"type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of
directives, which act somewhat similarly to `former`, and allows interaction between more than one of these
simultaneously (e.g. official names of former places, which have their own categorization).
If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be
getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of
`iterate_matching_holonym_location()`.
For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn:
```
{qualifier = nil, placetype="left tributary"}
{qualifier = "left", placetype="tributary"}
{qualifier = "left", placetype="river"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="river"},
}}
The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized
placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it
would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the
''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because
it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next.
Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality,
often specifically an outlying hamlet). the placetype/qualifier combinations checked are:
```
{qualifier = nil, placetype="small rural fraziones"}
{qualifier = nil, placetype="small rural frazione"}
{qualifier = "small", placetype="rural fraziones"}
{qualifier = "small", placetype="rural frazione"}
{qualifier = "small [[rural]]", placetype="fraziones"}
{qualifier = "small [[rural]]", placetype="frazione"}
{qualifier = "small [[rural]]", placetype="hamlet"}
{qualifier = "small [[rural]]", placetype="village"}
```
The return value ends up as
{qualifier = "small [[rural]]", placetype="frazione"},
{qualifier = "small [[rural]]", placetype="hamlet"},
{qualifier = "small [[rural]]", placetype="village"},
}}
Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that
singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers,
they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around
`rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both
fallbacks end up being returned.
`no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is
used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes
such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym.
See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the
placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are
returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example,
`"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When
`no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"`
with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under
[[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].)
As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`,
because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes
rarely occur with exact match category specs anyway.
`no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an
equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in
[[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't
have qualifiers and so it doesn't make sense to try and look for them.
`from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked.
`form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked
placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the
appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a
placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches.
`no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`.
`register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g.
known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It
causes the non-former version of the specified placetype to be included in the returned equivalents along with the
former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now;
fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.]
]==]
function export.get_placetype_equivs(placetype, props)
local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former
local form_of_directive
if props then
no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former =
props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category,
props.register_former_as_non_former
form_of_directive = props.form_of_directive
end
local equivs = {}
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is
-- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If
-- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by
-- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version
-- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as
-- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into
-- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}},
-- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up
-- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]].
local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix)
local function insert_equiv(pt)
if form_of_prefix then
-- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have
-- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end
-- up processing because `island country` falls back to `country`), and that entry in turn is defined
-- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of
-- handling this is by calling ourselves recursively.
insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt)
else
insert(equivs, {qualifier=qualifier, placetype=pt})
end
end
-- Insert the placetype, along with any fallbacks.
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if ptdata then
insert_equiv(canon_placetype)
if no_fallback then
return
end
local first_placetype = #equivs + 1
local prev_placetype = nil
while true do
local pt_value = export.placetype_data[canon_placetype]
if not pt_value then
internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`",
canon_placetype, prev_placetype)
end
if pt_value.fallback then
insert_equiv(pt_value.fallback)
local last_placetype = #equivs
if last_placetype - first_placetype >= 10 then
local fallback_loop = {}
for i = first_placetype, last_placetype do
insert(fallback_loop, equivs[i].placetype)
end
internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> "))
end
prev_placetype = canon_placetype
canon_placetype = pt_value.fallback
else
break
end
end
end
end
-- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a
-- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no
-- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that
-- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for
-- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a
-- `former`-type directive); these backups live outside this function because we want them done once, late, rather
-- than in each invocation of `process_and_insert_placetype()`.
local function process_and_insert_placetype(qualifier, reduced_placetype)
if form_of_directive then
-- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of
-- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by
-- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of
-- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for
-- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.)
insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive)
if not no_fallback then
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype)
local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or
export.get_placetype_prop(pt, "class") end
)
if not directive_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " ..
'located but directive-specific type property %s missing, and so is "class"; ' ..
"placetypes searched are %s", reduced_placetype, form_of_directive,
form_of_directive .. "_type", reduced_placetype_equivs)
else
-- This should be allowed, as we allow unrecognized placetypes in general.
end
elseif directive_type ~= "!" then
insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive)
end
end
else
insert_placetype_and_fallbacks(qualifier, reduced_placetype)
end
end
-- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left
-- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers).
local splits
if no_split_qualifiers then
splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}}
else
splits = export.split_qualifiers_from_placetype(placetype)
end
for _, split in ipairs(splits) do
local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3)
-- If a special "former" qualifier like `former` or `historical` isn't present, and
-- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for
-- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing
-- placetypes, and handle accordingly.
local unlinked_this_qualifier
if this_qualifier and this_qualifier:find("%[") then
unlinked_this_qualifier = export.remove_links_and_html(this_qualifier)
else
unlinked_this_qualifier = this_qualifier
end
local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil
if not former_qualifiers and not no_check_for_inherently_former then
former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype,
function(pt) return export.get_placetype_prop(pt, "inherently_former") end,
{no_check_for_inherently_former = true})
end
-- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal
-- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
-- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped
-- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval`
-- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes
-- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the
-- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a
-- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like
-- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and
-- don't enter anything into `equivs`.
if former_qualifiers then
-- FIXME: Should we respect `no_fallback` here? My instinct says no.
local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, {
no_check_for_inherently_former = true
})
local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.get_placetype_prop(pt, "former_type") or
export.get_placetype_prop(pt, "class") end
)
if not former_type then
local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs,
function(pt) return export.placetype_data[pt] end
)
if pt_data then
internal_error("For placetype %s, placetype data located but `former_type` missing; " ..
"placetypes searched are %s", reduced_placetype, reduced_placetype_equivs)
else
-- Enable error when we've verified there aren't any examples.
track("bad-former-placetype")
track("bad-former-placetype/" .. reduced_placetype)
--process_error("For placetype '%s', unrecognized placetype following 'former'-type " ..
-- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs))
end
elseif former_type ~= "!" then
-- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible
-- for (e.g.) former provinces of the Roman empire to be categorized specially.
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype)
end
for _, former_qualifier in ipairs(former_qualifiers) do
process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type)
end
-- HACK! See explanation above for `register_former_as_non_former`.
if register_former_as_non_former then
process_and_insert_placetype(prev_qualifier, reduced_placetype)
end
-- If we're processing a form-of directive, after doing everything else we do
-- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup.
if form_of_directive and not no_fallback then
for _, former_qualifier in ipairs(former_qualifiers) do
insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier ..
" place")
end
end
-- Don't continue processing equivs. The reason is probably the same as the `break` below for
-- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and
-- non-former equivs will otherwise take precedence.
break
end
end
-- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs
-- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping.
if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then
insert(equivs, {
qualifier=prev_qualifier,
placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier]
})
-- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the
-- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the
-- latter ends up generating the category because the category for 'mythological location' is set as
-- the default value, which is used only when no non-default category can be found.
break
end
-- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined
-- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype.
-- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts
-- the full placetype into `equivs`.
local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier
process_and_insert_placetype(qualifier, reduced_placetype)
-- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced
-- placetypes to avoid the "overseas territory treated as a territory" issue describe above.
if no_fallback then
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category)
if canon_placetype then
break
end
end
end
-- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g.
-- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype
-- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g.
-- [[Category:en:Former names of places]] in an invocation like
-- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}};
-- the `used from 1971–1997` gets treated as a placetype and we're called on it.
if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then
insert_placetype_and_fallbacks(nil, form_of_directive .. " place")
end
return equivs
end
function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only)
for _, equiv in ipairs(equivs) do
local retval = fun(equiv.placetype)
if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then
return retval, equiv
end
end
return nil, nil
end
--[==[
Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent
placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false});
but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value.
FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a
non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the
equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or
non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil},
the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value.
]==]
function export.get_equiv_placetype_prop(placetype, fun, props)
if not placetype then
return fun(nil), nil
end
return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun,
props and props.continue_on_nil_only)
end
--[==[
Return the article that is used with an entry placetype. We proceed as follows:
# See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article).
This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`.
# Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that
`"the"` should be used.
# Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from
the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the`
(principally for use with placetypes like `union territory`).
# Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with
a vowel and `"a"` otherwise.
If `ucfirst` is true, the first letter of the article is made upper-case.
]==]
function export.get_placetype_article(placetype, ucfirst)
local art
local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$")
if qualifier then
local canon = export.placetype_qualifiers[qualifier]
if type(canon) == "table" then
art = canon.article
end
end
if art == false then
return art
end
if art == nil then
local placetype_use_the = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end)
if placetype_use_the then
art = "the"
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = require(en_utilities_module).get_indefinite_article(placetype)
end
end
end
if ucfirst then
art = m_strutils.ucfirst(art)
end
return art
end
--[==[
Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories
(e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"in"` if not specified.
]==]
function export.get_placetype_entry_preposition(placetype)
local pt_prep = export.get_equiv_placetype_prop(placetype,
function(pt) return export.get_placetype_prop(pt, "preposition") end
)
return pt_prep or "in"
end
--[==[
Given a place desc (see top of file) and a holonym object (see top of file), add a key/value into the place desc's
`holonyms_by_placetype` field corresponding to the placetype and placename of the holonym. For example, corresponding
to the holonym "c/Italy", a key "country" with the list value {"Italy"} will be added to the place desc's
`holonyms_by_placetype` field. If there is already a key with that place type, the new placename will be added to the
end of the value's list.
]==]
function export.key_holonym_into_place_desc(place_desc, holonym)
if not holonym.placetype then
return
end
-- Key in equivalent placetypes, so that e.g. `cities/San Francisco` gets keyed under `city`; but don't do
-- fallbacks, as it doesn't seem correct for the "do other holonyms of the same placetype" algorithm to do holonyms
-- of different types just because they have the same fallback.
local equiv_placetypes = export.get_placetype_equivs(holonym.placetype, {no_fallback = true})
local unlinked_placename = holonym.unlinked_placename
for _, equiv in ipairs(equiv_placetypes) do
local placetype = equiv.placetype
if not place_desc.holonyms_by_placetype then
place_desc.holonyms_by_placetype = {}
end
if not place_desc.holonyms_by_placetype[placetype] then
place_desc.holonyms_by_placetype[placetype] = {unlinked_placename}
else
insert(place_desc.holonyms_by_placetype[placetype], unlinked_placename)
end
end
end
--[=[
Construct a formatted link from the raw link spec `link` given the canonical singular placetype `sg_placetype`. If the
placetype was originally plural, `orig_placetype` should contain this plural value; otherwise it should be nil. This
will construct the appropriate type of link that displays as `orig_placetype` (or otherwise `sg_placetype`) but links to
whatever the `link` spec specifies (which may be `sg_placetype`, a Wikipedia article, etc.). `ptdata` is the placetype
data structure for the placetype, and `from_category` indicates that we are generating the description of a category
(otherwise we are generating the display form of an entry placetype).
]=]
local function make_placetype_link(link, sg_placetype, orig_placetype, ptdata, from_category, noerror)
if not from_category and ptdata.disallow_in_entries then
if noerror then
return "[not meant to be specified directly, with warning: " .. ptdata.disallow_in_entries .. "]"
else
process_error("Placetype %s is not meant to be specified directly: " .. ptdata.disallow_in_entries, sg_placetype)
end
end
if link == nil then
internal_error("Placetype data present for placetype %s but no link= setting given", sg_placetype)
elseif link == true then
if orig_placetype then
return ("[[%s|%s]]"):format(sg_placetype, orig_placetype)
else
return ("[[%s]]"):format(sg_placetype)
end
elseif link == false then
process_error("Placetype %s is not meant to be specified directly, but is only for internal use", sg_placetype)
elseif link == "w" then
return ("[[w:%s|%s]]"):format(sg_placetype, orig_placetype or sg_placetype)
elseif link == "separately" then
if orig_placetype then
local sg_words = split(sg_placetype, " ")
local orig_words = split(orig_placetype, " ")
if #sg_words ~= #orig_words then
internal_error("Can't construct 'separately' link for plural placetype %s as original placetype %s " ..
"has different number of words", orig_placetype, sg_placetype)
else
for i = 1, #sg_words do
if sg_words[i] == orig_words[i] then
sg_words[i] = ("[[%s]]"):format(sg_words[i])
else
sg_words[i] = ("[[%s|%s]]"):format(sg_words[i], orig_words[i])
end
end
return concat(sg_words, " ")
end
else
return (sg_placetype:gsub("([^ ]+)", "[[%1]]"))
end
elseif link:find("^%+") then
link = link:sub(2) -- discard initial +
return ("[[%s|%s]]"):format(link, orig_placetype or sg_placetype)
elseif not orig_placetype then
return link
else
return require(en_utilities_module).pluralize(link)
end
end
--[==[
Get the display form of a placetype by looking it up in `placetype_data`. If the placetype is recognized, or is the
plural of a recognized placetype, the corresponding linked display form is returned (with plural placetypes displaying
as plural but linked to the singular form of the placetype). Otherwise, return nil. If we're generating the description
of a category, `category_type` should be set to one of `"top-level"` (for top-level categories like
[[:Category:Neighborhoods]]), `"noncity"` (for non-city categories like [[:Category:Neighborhoods in Illinois, USA]]) or
`"city"` (for city categories like [[:Category:Neighborhoods of Chicago]]). Otherwise, we're generating the description
for use in formatting a {{tl|place}} call, and category-only placetypes ending in `!` will be ignored, along with
special `category_link*` settings. `return_full` is used along with `category_type` and will preferably return the
"full" variant of category link settings, i.e. `full_category_link*`; if they don't exist, the `category_link*` value is
prepended with `"names of"`. `noerror` says to not throw an error when encountering entry placetypes that would be
disallowed.
]==]
function export.get_placetype_display_form(placetype, category_type, return_full, noerror)
local from_category = not not category_type
local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category)
if canon_placetype then
local raw_link
local function is_linked_string(str)
return type(str) == "string" and str:find("%[%[")
end
if category_type then
local fetched_full
local function fetch_maybe_full(prop)
local retval = ptdata["full_" .. prop]
if retval ~= nil then
if return_full then
return retval, true
else
internal_error("Saw full_" .. prop .. "=%s but `return_full` not set, can't handle", retval)
end
end
return ptdata[prop], false
end
local function maybe_prefix(str)
if return_full and not fetched_full then
return "names of " .. str
else
return str
end
end
-- Careful with `false` as possible value.
if category_type == "top-level" then
raw_link, fetched_full = fetch_maybe_full("category_link_top_level")
elseif category_type == "noncity" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_noncity")
elseif category_type == "city" then
raw_link, fetched_full = fetch_maybe_full("category_link_before_city")
else
internal_error('Unrecognized value for `category_type` %s, should be "top-level", "noncity" or "city"',
category_type)
end
if type(raw_link) == "string" then
return maybe_prefix(raw_link), ptdata
elseif raw_link ~= nil then
return raw_link, ptdata
end
raw_link, fetched_full = fetch_maybe_full("category_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
if ptmatch == "plural" then
raw_link, fetched_full = fetch_maybe_full("plural_link")
if raw_link == false then
return raw_link, ptdata
end
if is_linked_string(raw_link) then
return maybe_prefix(raw_link), ptdata
end
end
if raw_link == nil then
raw_link, fetched_full = fetch_maybe_full("link")
end
if raw_link == false then
return raw_link, ptdata
end
return maybe_prefix(make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror)), ptdata
else
if ptmatch == "plural" then
raw_link = ptdata.plural_link
if raw_link == false then
process_error("Placetype %s cannot appear plural", placetype)
end
if is_linked_string(raw_link) then
return raw_link, ptdata
end
end
if raw_link == nil then
raw_link = ptdata.link
end
return make_placetype_link(raw_link, canon_placetype,
placetype ~= canon_placetype and placetype or nil, ptdata, from_category, noerror), ptdata
end
end
return nil
end
local function resolve_unlinked_placename_display_aliases(placetype, placename)
local equiv_placetypes = export.get_placetype_equivs(placetype)
for i, equiv in ipairs(equiv_placetypes) do
equiv_placetypes[i] = equiv.placetype
end
local all_display_aliases_found = {}
local all_others_found = {}
for group, key, spec in m_locations.iterate_matching_location {
placetypes = equiv_placetypes,
placename = placename,
alias_resolution = "display",
} do
if spec.alias_of and spec.display then
insert(all_display_aliases_found, {group, key, spec, spec.display_as_full})
else
insert(all_others_found, {group, key, spec})
end
end
if not all_display_aliases_found[1] then
return placename
elseif all_display_aliases_found[2] then
internal_error("Found multiple matching display aliases for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
elseif all_others_found[1] then
internal_error("Found a display alias along with other possible meanings for placename %s, placetype %s: " ..
"all_display_aliases_found=%s, all_others_found=%s", placename, placetype, all_display_aliases_found,
all_others_found)
else
local group, key, spec, as_full = unpack(all_display_aliases_found[1])
local full, elliptical = m_locations.key_to_placename(group, key)
return as_full and full or elliptical
end
end
--[==[
If `placename` of type `placetype` is a display alias, convert it to its canonical form; otherwise, return unchanged.
Display aliases transform certain placenames into canonical displayed forms. For example, if any of `country/US`,
`country/USA` or `country/United States of America` (or `c/US`, etc.) are given, the result will be displayed as
`United States`.
'''NOTE''': Display aliases change what is displayed from what the editor wrote in the Wikitext. As a result, they
should (a) be non-political in nature, and (b) not involve a change where the word `the` needs to be added or removed.
For example, normalizing `US` and `USA` to `United States` for display purposes is OK but normalizing `Burma` to
`Myanmar` is not (instead a cat alias should be used) because the terms `Burma` and `Myanmar` have clear political
connotations. Similarly, we have a display alias that maps the old name of `Macedonia` as a country (but not a region!)
to `North Macedonia`, but `Republic of Macedonia` is mapped to `North Macedonia` only as a cat alias because the two
terms differ in their use of `the`. (For example, if we had a display alias mapping `Republic of Macedonia` to
`North Macedonia`, the call {{tl|place|en|the <<capital city>> of the <<c/Republic of Macedonia>>}} would wrongly
display as `the [[capital city]] of the [[North Macedonia]]`.) Generally, display normalizations tend to involve
alternative forms (e.g. abbreviations, ellipses, foreign spellings) where the normalization improves clarity and
consistency.
]==]
function export.resolve_placename_display_aliases(placetype, placename)
-- If the placename is a link, apply the alias inside the link.
-- This pattern matches both piped and unpiped links. If the link is not piped, the second capture (linktext) will
-- be empty.
local link, linktext = rmatch(placename, "^%[%[([^|%[%]]+)|?([^|%[%]]-)%]%]$")
if link then
if linktext ~= "" then
local alias = resolve_unlinked_placename_display_aliases(placetype, linktext)
return "[[" .. link .. "|" .. alias .. "]]"
else
local alias = resolve_unlinked_placename_display_aliases(placetype, link)
return "[[" .. alias .. "]]"
end
else
return resolve_unlinked_placename_display_aliases(placetype, placename)
end
end
--[==[
Generate the "prefixed" version of a bare key, i.e. prefix it with `the` if correct for this key.
]==]
function export.get_prefixed_key(key, spec)
if spec.the then
return "the " .. key
else
return key
end
end
-- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary.
export.iterate_matching_location = m_locations.iterate_matching_location
--[=[
Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the
specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If
`first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is
specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified
by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the
holonym index and holonym structure, similar to `ipairs()`.
]=]
function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms)
local stop_at_also = not not first_holonym_index
return function(place_desc, index)
while true do
index = index + 1
local this_holonym = place_desc.holonyms[index]
-- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also`
-- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym
-- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with
-- `:also`.
if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then
return nil
end
-- If not placetype, we're processing raw text, which we normally want to skip.
if include_raw_text_holonyms or this_holonym.placetype then
return index, this_holonym
end
end
end, place_desc, first_holonym_index and first_holonym_index - 1 or 0
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all
such known locations, returning for each location the corresponding key, spec and group as well as the trail of
ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between
the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data`
are:
* `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with
`iterate_matching_location()`.
* `holonym_placename`: The placename of the holonym.
* `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the
holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms
following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none
exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.)
* `place_desc`: Description of the place; used for the holonyms, to check for container mismatches.
Returns four values: the location group, the canonical key by which the location is known, the spec object describing
the location and the trail of ancestral containers for the location. The first three values are the same as for
`iterate_matching_location`.
]==]
function export.iterate_matching_holonym_location(data)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
local matching_location_iterator = m_locations.iterate_matching_location {
placetypes = holonym_placetype,
placename = holonym_placename,
}
return function()
while true do
local group, key, spec = matching_location_iterator()
if not group then
return nil
end
local container_trail = {}
-- For each level of container, check that there are no mismatches (i.e. other location of the same
-- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container
-- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city
-- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of
-- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark,
-- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New
-- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough,
-- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If
-- there are no mismatches at any level we assume we're dealing with the right known location.
--
-- If at a given level there are multiple containing locations, we count a match if any holonym matches any
-- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any
-- containing location.
local containers_mismatch = false
for containers in m_locations.iterate_containers(group, key, spec) do
insert(container_trail, containers)
local match_at_level = false
local mismatch_at_level = false
for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc,
holonym_index and holonym_index + 1 or nil) do
local other_source_holonym = other_holonym.augmented_from_holonym
if other_source_holonym and other_source_holonym.placetype == holonym_placetype and
other_source_holonym.unlinked_placename ~= holonym_placename then
-- Ignore holonyms added during the augmentation process for other holonyms of the same
-- placetype as the placetype of the holonym we're considering. See comment in
-- augment_holonyms_with_container() for why we do this.
-- continue; grrr, no 'continue' in Lua
else
local holonym_matches_at_level = false
local holonym_exists_with_same_placetype = false
for _, container in ipairs(containers) do
if not container.spec.no_check_holonym_mismatch then
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
local placetypes = container.spec.placetype
if type(placetypes) ~= "table" then
placetypes = {placetypes}
end
local placetype_equivs = {}
for _, pt in ipairs(placetypes) do
m_table.extend(placetype_equivs, export.get_placetype_equivs(pt))
end
local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype and
(other_holonym.unlinked_placename == full_container_placename or
other_holonym.unlinked_placename == elliptical_container_placename)
end
)
if this_holonym_matches then
holonym_matches_at_level = true
break
end
local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs(
placetype_equivs, function(placetype)
return other_holonym.placetype == placetype
end
)
if this_holonym_exists_with_same_placetype then
-- We seem to have a mismatch at this level. But before we decide conclusively that this
-- is the case, check to see whether the putative mismatch is an alias and matches when
-- we resolve the alias.
for oh_group, oh_key, oh_spec, oh_container_trail in
export.iterate_matching_holonym_location {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = place_desc,
} do
local oh_full_placename, oh_elliptical_placename =
m_locations.key_to_placename(oh_group, oh_key)
if oh_full_placename == full_container_placename or
oh_elliptical_placename == elliptical_container_placename then
-- Alias matched when resolved.
this_holonym_matches = true
break
end
end
if this_holonym_matches then
-- Alias matched above when resolved.
holonym_matches_at_level = true
break
else
-- Not an alias, or doesn't match when resolved. We have a true mismatch.
holonym_exists_with_same_placetype = true
end
end
end
end
if holonym_matches_at_level then
match_at_level = true
break
end
if holonym_exists_with_same_placetype then
mismatch_at_level = true
end
end
end
if not match_at_level and mismatch_at_level then
containers_mismatch = true
break
end
end
if not containers_mismatch then
return group, key, spec, container_trail
end
end
end
end
--[==[
If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the
corresponding key, spec and group as well as the trail of ancestral containers. This is like
`iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this
would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To
fix this, specify additional following disambiguating holonyms, e.g.
{{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}.
]==]
function export.find_matching_holonym_location(data)
local all_found = {}
for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do
insert(all_found, {group, key, spec, container_trail})
end
if not all_found[1] then
return nil
elseif all_found[2] then
local holonym_placetype = data.holonym_placetype
if type(holonym_placetype) == "table" then
holonym_placetype = concat(holonym_placetype, ",")
end
local found_keys = {}
for _, found in ipairs(all_found) do
local _, key, _, _ = unpack(found)
insert(found_keys, key)
end
error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " ..
"containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys)))
else
return unpack(all_found[1])
end
end
------------------------------------------------------------------------------------------
-- Placename and placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their
canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which
applies to categorization and other processes but not to display.
The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state",
"province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g.
"census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype.
Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be
interpreted as "department", "district" or "division").
]==]
export.placetype_aliases = {
["acomm"] = "autonomous community",
["adr"] = "administrative region",
["adterr"] = "administrative territory", -- Pakistan
["aobl"] = "autonomous oblast",
["aokr"] = "autonomous okrug",
["ap"] = "autonomous province",
["apref"] = "autonomous prefecture",
["aprov"] = "autonomous province",
["ar"] = "autonomous region",
["arch"] = "archipelago",
["arep"] = "autonomous republic",
["aterr"] = "autonomous territory",
["atu"] = "autonomous territorial unit",
["bor"] = "borough",
["c"] = "country",
["can"] = "canton",
["carea"] = "council area",
["cc"] = "constituent country",
["cdblock"] = "community development block",
["cdep"] = "Crown dependency",
["CDP"] = "census-designated place",
["cdp"] = "census-designated place",
["clcity"] = "county-level city",
["co"] = "county",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "continent",
["contr"] = "continental region",
["contregion"] = "continental region",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "district",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "empire",
["fpref"] = "French prefecture",
["gov"] = "governorate",
["govnat"] = "governorate",
["home-rule city"] = "home rule city",
["home-rule municipality"] = "home rule municipality",
["inner-city area"] = "inner city area",
["ires"] = "Indian reservation",
["isl"] = "island",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "metropolitan city",
["metmun"] = "metropolitan municipality",
["mtn"] = "mountain",
["mun"] = "municipality",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "province",
["par"] = "parish",
["parmun"] = "parish municipality",
["pen"] = "peninsula",
["plcity"] = "prefecture-level city",
["plcolony"] = "Polish colony",
["pref"] = "prefecture",
["prefcity"] = "prefecture-level city",
["preflcity"] = "prefecture-level city",
["prov"] = "province",
["r"] = "region",
["range"] = "mountain range",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "river",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "state",
["sar"] = "special administrative region",
["shrom"] = "settlement hromada",
["spref"] = "subprefecture",
["sprefcity"] = "sub-prefectural city",
["sprovcity"] = "subprovincial city",
["submet city"] = "sub-metropolitan city",
["submetropolitan city"] = "sub-metropolitan city",
["sub-prefecture-level city"] = "sub-prefectural city",
["sub-provincial city"] = "subprovincial city",
["sub-provincial district"] = "subprovincial district",
["terr"] = "territory",
["terrauth"] = "territorial authority",
["twp"] = "township",
["twpmun"] = "township municipality",
["uauth"] = "unitary authority",
["ucomm"] = "unincorporated community",
["udist"] = "unitary district",
["uhrom"] = "urban hromada",
["uterr"] = "union territory",
["utwpmun"] = "united township municipality",
["val"] = "valley",
["vdc"] = "village development committee",
["vil"] = "village",
["voi"] = "voivodeship",
["wcomm"] = "Welsh community",
-- Chinese capital/seat types
["首都"] = "capital",
["省會"] = "provincial capital",
["首府"] = "regional capital",
["縣治"] = "county seat",
-- Chinese placetype name aliases (map to English equivalents so they inherit preposition, display handler, etc.)
["國家"] = "country",
["構成國"] = "constituent country",
["大洲"] = "continent",
["洲"] = "continent",
["大陸"] = "continent",
["帝國"] = "empire",
["共和國"] = "republic",
["邦"] = "state",
["州"] = "state",
["省"] = "province",
["郡"] = "county",
["縣"] = "county",
["城市"] = "city",
["市"] = "city",
["區"] = "district",
["鄉"] = "township",
["鎮"] = "town",
["村"] = "village",
["社區"] = "community",
["島"] = "island",
["島嶼"] = "island",
["群島"] = "archipelago",
["半島"] = "peninsula",
["山"] = "mountain",
["山脈"] = "mountain range",
["河"] = "river",
["河流"] = "river",
["谷"] = "valley",
["山谷"] = "valley",
["特別行政區"] = "special administrative region",
["直轄市"] = "direct-administered municipality",
["地級市"] = "prefecture-level city",
["縣級市"] = "county-level city",
["副省級市"] = "subprovincial city",
["副地級市"] = "sub-prefectural city",
["市轄區"] = "municipal district",
["自治區"] = "autonomous region",
["自治省"] = "autonomous province",
["自治州"] = "autonomous prefecture",
["自治共和國"] = "autonomous republic",
["自治市"] = "borough",
["屬地"] = "dependent territory",
["海外領地"] = "dependent territory",
["領地"] = "territory",
["聯邦屬地"] = "union territory",
["皇家屬地"] = "Crown dependency",
["教區"] = "parish",
["堂區"] = "parish",
["民政教區"] = "civil parish",
["廣域市"] = "metropolitan city",
["非建制地區"] = "unincorporated community",
["人口普查指定地區"] = "census-designated place",
["印第安保留地"] = "Indian reservation",
["羅馬行省"] = "Roman province",
["單一管理區"] = "unitary authority",
["地方行政區"] = "local government area",
}
local no_link_def_article = {link = false, article = "the"}
local no_link_no_article = {link = false, article = false}
--[==[ var:
These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype
`large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the
value in the following table is a string, the qualifier will display according to the string. If the value is `true`,
the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be
linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain
those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating
`inland sea` as equivalent to `sea`.
]==]
export.placetype_qualifiers = {
-- generic qualifiers
["huge"] = false,
["tiny"] = false,
["large"] = false,
["big"] = false,
["mid-size"] = false,
["mid-sized"] = false,
["small"] = false,
["sizable"] = false,
["important"] = false,
["long"] = false,
["short"] = false,
["major"] = false,
["minor"] = false,
["high"] = false,
["tall"] = false,
["low"] = false,
["left"] = false, -- left tributary
["right"] = false, -- right tributary
["modern"] = false, -- for use in opposition to "ancient" in another definition
-- "former" qualifiers
["abandoned"] = true,
["ancient"] = true,
["deserted"] = true,
["extinct"] = true,
["former"] = false,
["historic"] = "historical",
["historical"] = true,
["medieval"] = true,
["mediaeval"] = true,
["ruined"] = true,
["traditional"] = true,
-- sea qualifiers
["coastal"] = true,
["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]]
["maritime"] = true,
["overseas"] = true,
["seaside"] = true,
["beachfront"] = true,
["beachside"] = true,
["riverside"] = true,
-- lake qualifiers
["freshwater"] = true,
["saltwater"] = true,
["endorheic"] = true,
["oxbow"] = true,
["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link
["tidal"] = true,
-- land qualifiers
["hilltop"] = true,
["hilly"] = true,
["insular"] = true,
["peninsular"] = true,
["chalk"] = true,
["karst"] = true,
["limestone"] = true,
["mountainous"] = true,
["mountaintop"] = true,
["alpine"] = true,
["volcanic"] = true, -- for an island
-- political status qualifiers
["autonomous"] = true,
["incorporated"] = true,
["special"] = true,
["unincorporated"] = true,
["coterminous"] = true,
-- monetary status/etc. qualifiers
["fashionable"] = true,
["wealthy"] = true,
["affluent"] = true,
["declining"] = true,
-- city vs. rural qualifiers
["urban"] = true,
["suburban"] = true,
["exurban"] = true,
["outlying"] = true,
["remote"] = true,
["rural"] = true,
["outback"] = true,
["inner"] = false,
["inner-city"] = true,
["central"] = false,
["outer"] = false,
-- land use qualifiers
["residential"] = true,
["agricultural"] = true,
["business"] = true,
["commercial"] = true,
["industrial"] = true,
-- business use qualifiers
["railroad"] = true,
["railway"] = true,
["farming"] = true,
["fishing"] = true,
["mining"] = true,
["logging"] = true,
["cattle"] = true,
-- tourism use qualifiers
["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne
["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne
["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne
-- religious qualifiers
["holy"] = true,
["sacred"] = true,
["religious"] = true,
["secular"] = true,
-- qualifiers for nonexistent places
["claimed"] = false,
["fictional"] = true,
["legendary"] = true,
["mythical"] = true,
["mythological"] = true,
-- directional qualifiers
["northern"] = false,
["southern"] = false,
["eastern"] = false,
["western"] = false,
["north"] = false,
["south"] = false,
["east"] = false,
["west"] = false,
["northeastern"] = false,
["southeastern"] = false,
["northwestern"] = false,
["southwestern"] = false,
["northeast"] = false,
["southeast"] = false,
["northwest"] = false,
["southwest"] = false,
-- seasonal qualifiers
["summer"] = true, -- e.g. for 'summer capital'
["winter"] = true,
-- legal status qualifiers
-- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]].
["official"] = true,
["unofficial"] = true,
["de facto"] = true, -- 'de facto capital'
["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link
["de jure"] = true, -- 'de jure capital'
["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link
-- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state'
-- misc. qualifiers
["planned"] = true,
["chartered"] = true,
["landlocked"] = true,
["uninhabited"] = true,
-- superlative qualifiers
["first"] = no_link_def_article,
["second"] = no_link_def_article, -- for "second largest" etc.
["third"] = no_link_def_article,
["fourth"] = no_link_def_article,
["last"] = no_link_def_article,
["only"] = no_link_def_article,
["sole"] = no_link_def_article,
["main"] = no_link_def_article,
["largest"] = no_link_def_article,
["biggest"] = no_link_def_article,
["smallest"] = no_link_def_article,
["shortest"] = no_link_def_article,
["longest"] = no_link_def_article,
["tallest"] = no_link_def_article,
["highest"] = no_link_def_article,
["lowest"] = no_link_def_article,
["leftmost"] = no_link_def_article,
["rightmost"] = no_link_def_article,
["innermost"] = no_link_def_article,
["outermost"] = no_link_def_article,
["northernmost"] = no_link_def_article,
["southernmost"] = no_link_def_article,
["westernmost"] = no_link_def_article,
["easternmost"] = no_link_def_article,
["northwesternmost"] = no_link_def_article,
["southwesternmost"] = no_link_def_article,
["northeasternmost"] = no_link_def_article,
["southeasternmost"] = no_link_def_article,
-- several/various
["several"] = no_link_no_article,
["various"] = no_link_no_article,
["numerous"] = no_link_no_article,
["multiple"] = no_link_no_article,
["many"] = no_link_no_article,
["other"] = no_link_no_article,
}
--[==[ var:
In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This
is overridden by `placetype_data` and `qualifier_to_placetype_equivs`.
]==]
export.former_qualifiers = {
["abandoned"] = {"FORMER"},
["ancient"] = {"ANCIENT", "FORMER"},
["former"] = {"FORMER"},
["extinct"] = {"FORMER"},
["historic"] = {"FORMER"},
["historical"] = {"FORMER"},
["medieval"] = {"ANCIENT", "FORMER"},
["mediaeval"] = {"ANCIENT", "FORMER"},
["ruined"] = {"ANCIENT", "FORMER"},
["traditional"] = {"FORMER"},
}
--[==[ var:
In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the
specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`.
]==]
export.qualifier_to_placetype_equivs = {
["fictional"] = "fictional location",
["legendary"] = "mythological location",
["mythical"] = "mythological location",
["mythological"] = "mythological location",
-- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands
-- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are
-- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital.
["claimed"] = "claimed political division",
}
--[==[ var:
Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse
mapping also exists.
]==]
export.placetype_to_capital_cat = {
["autonomous community"] = "autonomous community capitals",
["canton"] = "cantonal capitals",
["comarca"] = "comarca capitals",
["country"] = "national capitals",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["county"] = "county capitals",
["department"] = "departmental capitals",
["district"] = "district capitals",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["metropolitan city"] = "metropolitan city capitals",
["municipality"] = "municipal capitals",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["province"] = "provincial capitals",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["region"] = "regional capitals",
["regional unit"] = "regional unit capitals",
["republic"] = "republic capitals",
["state"] = "state capitals",
["territory"] = "territorial capitals",
["voivodeship"] = "voivodeship capitals",
}
--[==[ var:
This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple
ways that placenames can come to be preceded by "the":
# Listed here.
# Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code
just below the map.
# The placetype of the placename has `holonym_use_the = true` in its placetype_data.
# A regex in placename_the_re matches the placename.
Note that "the" is added only before the first holonym in a place description.
]==]
export.placename_article = {
-- This should only contain info that can't be inferred from [[Module:place/locations]].
["archipelago"] = {
["Cyclades"] = "the",
["Dodecanese"] = "the",
},
["country"] = {
["Holy Roman Empire"] = "the",
},
["empire"] = {
["Holy Roman Empire"] = "the",
},
["island"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["region"] = {
["Balkans"] = "the",
["Russian Far East"] = "the",
["Caribbean"] = "the",
["Caucasus"] = "the",
["Middle East"] = "the",
["New Territories"] = "the",
["North Caucasus"] = "the",
["South Caucasus"] = "the",
["West Bank"] = "the",
["Gaza Strip"] = "the",
},
["valley"] = {
["San Fernando Valley"] = "the",
},
}
--[==[ var:
Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all
holonyms, otherwise only the regexes for the holonym's placetype apply.
]==]
export.placename_the_re = {
-- We don't need entries for peninsulas, seas, oceans, gulfs or rivers
-- because they have holonym_use_the = true.
["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "},
["bay"] = {"^Bay of "},
["lake"] = {"^Lake of "},
["country"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["region"] = {" [Rr]egion$"},
["river"] = {" River$"},
["local government area"] = {"^Shire of "},
["county"] = {"^Shire of "},
["Indian reservation"] = {" Reservation", " Nation"},
["tribal jurisdictional area"] = {" Reservation", " Nation"},
}
--[==[ var:
If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of
holonyms for categorization (but not display) purposes.
]==]
export.cat_implications = {
["region"] = {
["東歐"] = {"continent/歐洲"},
["中歐"] = {"continent/歐洲"},
["西歐"] = {"continent/歐洲"},
["南歐"] = {"continent/歐洲"},
["北歐"] = {"continent/歐洲"},
["東北歐"] = {"continent/歐洲"},
["東南歐"] = {"continent/歐洲"},
["北高加索"] = {"continent/歐洲"},
["南高加索"] = {"continent/亞洲"},
["南亞"] = {"continent/亞洲"},
["東亞"] = {"continent/亞洲"},
["中亞"] = {"continent/亞洲"},
["西亞"] = {"continent/亞洲"},
["東南亞"] = {"continent/亞洲"},
["北亞"] = {"continent/亞洲"},
["安納托利亞"] = {"continent/亞洲"},
["小亞細亞"] = {"continent/亞洲"},
["美索不達米亞"] = {"continent/亞洲"},
["北非"] = {"continent/非洲"},
["中非"] = {"continent/非洲"},
["西非"] = {"continent/非洲"},
["東非"] = {"continent/非洲"},
["南非"] = {"continent/非洲"},
["中美洲"] = {"continent/中美洲"},
["加勒比地區"] = {"continent/北美洲"},
["玻里尼西亞"] = {"continent/大洋洲"},
["密克羅尼西亞"] = {"continent/大洋洲"},
["美拉尼西亞"] = {"continent/大洋洲"},
["西伯利亞"] = {"country/俄羅斯", "continent/亞洲"},
["俄羅斯遠東地區"] = {"country/俄羅斯", "continent/亞洲"},
["南威爾斯"] = {"constituent country/威爾斯", "continent/歐洲"},
["巴爾幹半島"] = {"continent/歐洲"},
["約旦河西岸"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩"] = {"country/巴勒斯坦", "continent/亞洲"},
["加薩走廊"] = {"country/巴勒斯坦", "continent/亞洲"},
}
}
------------------------------------------------------------------------------------------
-- Category and display handlers --
------------------------------------------------------------------------------------------
local function city_type_cat_handler(data)
local entry_placetype = data.entry_placetype
local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities")
if not generic_before_non_cities then
internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" ..
" setting", entry_placetype)
end
local plural_entry_placetype = export.pluralize_placetype(entry_placetype)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and not spec.is_city then
-- ZH: "法國的城市" (location_key + 的 + zh_placetype_name)
local zh_name_raw = export.get_zh_placetype_name(entry_placetype)
local zh_entry_name = zh_name_raw and export.format_zh_name(zh_name_raw) or plural_entry_placetype
local de = export.zh_strings.de_particle
local retcats = {export.get_prefixed_key(key, spec) .. de .. zh_entry_name}
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_entry_name)
end
end
return retcats
end
end
local function capital_city_cat_handler(data, non_city)
local holonym_placetype, holonym_placename, holonym_index, place_desc =
data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc
-- The first time we're called we want to return something; otherwise we will be called for later-mentioned
-- holonyms, which can result in wrongly classifying into e.g. `National capitals`. Simulate the loop in
-- find_placetype_cat_specs() over holonyms so we get the proper `Cities in ...` categories as well as the capital
-- category/categories we add below.
local retcats
if not non_city and place_desc.holonyms then
for h_index, holonym in export.get_holonyms_to_check(place_desc, holonym_index) do
local h_placetype, h_placename = holonym.placetype, holonym.unlinked_placename
retcats = city_type_cat_handler {
entry_placetype = "city",
holonym_placetype = h_placetype,
holonym_placename = h_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if retcats then
break
end
end
end
if not retcats then
retcats = {}
end
-- Now find the appropriate capital-type category for the placetype of the holonym, e.g. 'State capitals'. If we
-- recognize the holonym among the known holonyms in [[Module:place/locations]], also add a category like 'State
-- capitals of the United States'. Truncate e.g. 'autonomous region' to 'region', 'union territory' to 'territory'
-- when looking up the type of capital category, if we can't find an entry for the holonym placetype itself (there's
-- an entry for 'autonomous community').
-- ZH: look up Chinese capital label by holonym placetype ("首都", "省會", "首府", etc.)
local zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype]
if not zh_capital_name then
zh_capital_name = export.zh_capital_label_by_holonym_type[holonym_placetype:gsub("^.* ", "")]
end
local de = export.zh_strings.de_particle
if zh_capital_name then
local inserted_specific_variant_cat = false
if holonym_index then
-- Now find the first recognized holonym location. We don't stop when :also is seen because of the common pattern
-- where we use :also to specify that a given city is the capital at multiple surrounding levels.
local matching_group, matching_key, matching_spec, matching_container_trail, matching_holonym_index
for h_index = holonym_index, #place_desc.holonyms do
if place_desc.holonyms[h_index].placetype then
matching_group, matching_key, matching_spec, matching_container_trail = export.find_matching_holonym_location {
holonym_placetype = place_desc.holonyms[h_index].placetype,
holonym_placename = place_desc.holonyms[h_index].unlinked_placename,
holonym_index = h_index,
place_desc = place_desc,
}
if matching_group then
matching_holonym_index = h_index
break
end
end
end
if matching_holonym_index == holonym_index then
if matching_container_trail[1] and not matching_spec.no_container_cat then
for _, container in ipairs(matching_container_trail[1]) do
-- ZH: "美國的首都" (location_key + 的 + zh_capital_name)
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
elseif matching_holonym_index then
-- Check to make sure that the holonym placetype we were called on is listed among the
-- divtypes of the location we found.
local function insert_specific_variant_if_possible(key, spec)
return export.get_equiv_placetype_prop(holonym_placetype, function(pt)
local plural_holonym_placetype = export.pluralize_placetype(pt)
local saw_matching_div
if spec.divs then
local divs = spec.divs
if type(divs) ~= "table" then
divs = {divs}
end
for _, div in ipairs(divs) do
if type(div) ~= "table" then
div = {type = div}
end
if plural_holonym_placetype == div.type then
saw_matching_div = true
break
end
end
end
if saw_matching_div then
insert(retcats, export.get_prefixed_key(key, spec) .. de .. zh_capital_name)
return true
end
return false
end)
end
if insert_specific_variant_if_possible(matching_key, matching_spec) then
inserted_specific_variant_cat = true
elseif not matching_spec.no_container_cat then
for _, containers in ipairs(matching_container_trail) do
local saw_no_container_cat = false
for _, container in ipairs(containers) do
if insert_specific_variant_if_possible(container.key, container.spec) then
inserted_specific_variant_cat = true
break
end
saw_no_container_cat = saw_no_container_cat or container.spec.no_container_cat
end
if inserted_specific_variant_cat or saw_no_container_cat then
break
end
end
end
end
else
-- This happens when in an invocation like {{place|en|capital city|s/Haryana,Punjab}} for
-- [[Chandigarh]]. We fall back to older code that doesn't depend on the holonym index existing.
-- FIXME: This may not be necessary. In the example just given, when processing Haryana we add to
-- [[:Category:en:State capitals of India]], and nothing extra gets added when processing Punjab.
-- Possibly we can just skip this case entirely.
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, export.get_prefixed_key(container.key, container.spec) .. de .. zh_capital_name)
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, zh_capital_name)
end
else
-- We didn't recognize the holonym placetype; fall back to generic capital label.
insert(retcats, "首都")
end
return retcats
end
--[=[
This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used
in two ways:
# To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and
[[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym.
# To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym
description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this
case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments,
administrative regions, and for the entire country, and for example we only want to categorize a demonym into
[[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym
invocation only adds the most specific holonym category and not the category of any containing polity (hence if we
add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]).
This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston`
as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and
[[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities
having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]],
[[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing
polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`).
Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the
mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions
Ohio and a holonym for a Columbus in a different country is encountered, because of the function
`augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered.
The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding
language code).
]=]
local function generic_place_cat_handler(data)
local from_demonym = data.from_demonym
local retcats = {}
local function insert_retkey(key, spec)
if from_demonym then
insert(retcats, key)
else
-- ZH: "法國地點" (location_key + 地點)
insert(retcats, export.get_prefixed_key(key, spec) .. "地點")
end
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
if not spec.no_generic_place_cat then
-- This applies to continents and continental regions.
insert_retkey(key, spec)
end
-- Categorize both in key, and in the larger location(s) that the key is part of, e.g. [[Hirakata]] goes in
-- both [[Category:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when
-- no_container_cat is set (e.g. for 'United Kingdom').
if not spec.no_container_cat then
for _, container_set in ipairs(container_trail) do
local stop_adding_containers = false
for _, container in ipairs(container_set) do
if not container.spec.no_generic_place_cat then
insert_retkey(container.key, container.spec)
end
if container.spec.no_container_cat then
stop_adding_containers = true
end
end
if stop_adding_containers then
break
end
end
end
return retcats
end
end
--[==[
Special category handler run for all placetypes that checks for specified division placetypes of known locations and
categorizes appropriately.
]==]
function export.political_division_cat_handler(data)
if data.from_demonym then
return
end
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group then
local divlists = {}
if spec.divs then
insert(divlists, spec.divs)
end
if spec.addl_divs then
insert(divlists, spec.addl_divs)
end
for _, divlist in ipairs(divlists) do
if type(divlist) ~= "table" then
divlist = {divlist}
end
for _, div in ipairs(divlist) do
if type(div) == "string" then
div = {type = div}
end
local sgdiv = export.maybe_singularize_placetype(div.type) or div.type
local prep = div.prep or "of"
local cat_as = div.cat_as or div.type
if type(cat_as) ~= "table" then
cat_as = {cat_as}
end
if not export.placetype_data[sgdiv] then
internal_error("Placetype %s associated with known location key %s and data %s not found in " ..
"`placetype_data`", sgdiv, key, spec)
end
if sgdiv == data.entry_placetype then
-- ZH: "臺灣的縣" format (location_key + 的 + zh_name); ignore cat_as grouping
local zh_n_raw = export.get_zh_placetype_name(data.entry_placetype)
local zh_n = zh_n_raw and export.format_zh_name(zh_n_raw) or ucfirst(data.entry_placetype)
return {export.get_prefixed_key(key, spec) .. export.zh_strings.de_particle .. zh_n}
end
end
end
end
end
--[==[
This is used to add pages to "bare" categories like [[:Category:en:Georgia, USA]] for `[[Georgia]]` and any
foreign-language terms that are translations of the state of Georgia. We look at the page title (or its overridden value
in {{para|pagename}}) as well as the glosses in {{para|t}}/{{para|t2}} etc., various extra-info values such as the
modern names in {{para|modern}}, and any values specified using a form-of directive. We need to pay attention to the
entry placetypes specified so we don't overcategorize; e.g. the US state of Georgia is `[[Джорджия]]` in Russian but the
country of Georgia is `[[Грузия]]`, and if we just looked for matching names, we'd get both Russian terms categorized
into both [[:Category:ru:Georgia, USA]] and [[:Category:ru:Georgia]]. We also need to check the containing holonyms to
make sure there isn't a mismatch (so we don't e.g. categorize Newark, Delaware in [[:Category:en:Newark]], which is
intended for Newark, New Jersey).
]==]
function export.get_bare_categories(args, overall_place_spec)
local bare_cats = {}
local place_descs = overall_place_spec.descs
local possible_placetypes_by_place_desc = {}
for i, place_desc in ipairs(place_descs) do
possible_placetypes_by_place_desc[i] = {}
for _, placetype in ipairs(place_desc.placetypes) do
if not export.placetype_is_ignorable(placetype) then
local equivs = export.get_placetype_equivs(placetype, {register_former_as_non_former = true})
for _, equiv in ipairs(equivs) do
insert(possible_placetypes_by_place_desc[i], equiv.placetype)
end
end
end
end
local function check_term(term)
-- Treat Wikipedia links like local ones.
term = term:gsub("%[%[w:", "[["):gsub("%[%[wikipedia:", "[[")
term = export.remove_links_and_html(term)
term = term:gsub("^the ", "")
for i, place_desc in ipairs(place_descs) do
-- Iterate over all matching locations in case there are multiple, as with Delhi defined as
-- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}.
for group, key, spec, container_trail in export.iterate_matching_holonym_location {
holonym_placetype = possible_placetypes_by_place_desc[i],
holonym_placename = term,
place_desc = place_desc,
} do
insert(bare_cats, key)
end
end
end
-- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)?
-- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There
-- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the
-- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The
-- advantage of checking when the language isn't English is we catch those places that fail to give an English
-- translation but where the translation happens to be the same as the other-language spelling. However, I don't
-- know how often this situation occurs.
check_term(args.pagename or mw.loadData("Module:headword/data").pagename)
for _, t in ipairs(args.t) do
check_term(t)
end
local function check_termobj_list(terms)
for _, term in ipairs(terms) do
if term.eq then
check_term(term.eq)
end
if term.alt or term.term then
check_term(term.alt or term.term)
end
end
end
for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do
local arg = extra_info_terms.arg
if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then
check_termobj_list(extra_info_terms.terms)
end
end
for _, directive in ipairs(overall_place_spec.directives) do
check_termobj_list(directive.terms)
end
return bare_cats
end
--[==[
This is used to augment the holonyms associated with a place description with the containing polities. For example,
given the following:
`# {{tl|place|en|subprefecture|pref/Hokkaido}}.`
We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]].
To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms.
]==]
function export.augment_holonyms_with_container(place_descs)
for _, place_desc in ipairs(place_descs) do
if place_desc.holonyms then
-- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their
-- appropriate position. We don't just put them at the end because some holonyms have use the `:also`
-- modifier, which causes category processing to restart at that point after generating categories for a
-- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with
-- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy
-- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's
-- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g.
-- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the
-- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If
-- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude
-- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`),
-- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar
-- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration
-- rather than modifying the place description once at athe end.
for i = #place_desc.holonyms, 1, -1 do
local holonym = place_desc.holonyms[i]
if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then
local group, key, spec, container_trail = export.find_matching_holonym_location {
holonym_placetype = holonym.placetype,
holonym_placename = holonym.unlinked_placename,
holonym_index = i,
place_desc = place_desc,
}
if group and container_trail[1] and not spec.no_auto_augment_container then
local augmented_holonyms = {}
for j = 1, i do
insert(augmented_holonyms, place_desc.holonyms[j])
end
for _, containers in ipairs(container_trail) do
local any_no_auto_augment_container = false
for _, container in ipairs(containers) do
any_no_auto_augment_container = any_no_auto_augment_container or
container.spec.no_auto_augment_container
local containing_type = container.spec.placetype
if type(containing_type) == "table" then
-- If the containing type is a list, use the first element as the canonical variant.
containing_type = containing_type[1]
end
local full_container_placename, elliptical_container_placename =
m_locations.key_to_placename(container.group, container.key)
-- Don't side-effect holonyms while processing them.
local new_holonym = {
-- By the time we run, the display has already been generated so we don't need to
-- set display_placename.
placetype = containing_type,
-- placename_to_key() for the group should correctly handle both full and elliptical
-- placenames, but the full placename seems less likely to be ambiguous. FIXME: We
-- should just store the key directly and use it when available to avoid having to
-- convert key to placename and back to key.
unlinked_placename = full_container_placename,
-- Indicate that this is an augmented holonym, and was derived from the specified
-- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms
-- derived from holonyms that are different from the holonym we're searching for but
-- of the same placetype. This is to correctly handle a situation like
-- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here,
-- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and
-- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from
-- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to
-- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match
-- in find_matching_holonym_location() because of the mismatch between augmented
-- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later
-- calls to find_matching_holonym_location() fail to match `Gard` (and likewise
-- `Ardèche`) against any known location. To deal with this, we mark augmented
-- holoynms as being augmented due to a source holonym, and when processing a given
-- holonym, ignore augmented holonyms from other holonyms of the same placetype.
-- The restriction to the same placetype is so that `Birmingham` still gets
-- correctly disambiguated to Birmingham, England in the example given above near
-- the top of this function, using the augmented holonym `c/United Kingdom` added by
-- the specified `cc/England` (whose placetype `constituent country` differs from
-- the placetype `city` of Birmingham).
augmented_from_holonym = holonym,
}
insert(augmented_holonyms, new_holonym)
-- But it is safe to modify other parts of the place_desc.
export.key_holonym_into_place_desc(place_desc, new_holonym)
end
if any_no_auto_augment_container then
break
end
end
for j = i + 1, #place_desc.holonyms do
insert(augmented_holonyms, place_desc.holonyms[j])
end
place_desc.holonyms = augmented_holonyms
end
end
end
end
end
end
-- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political
-- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city
-- neighborhoods or larger geographical areas/regions. We handle this as follows:
-- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if
-- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that
-- categorizes into [[:Category|Districts of Maharashtra, India]].
-- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called
-- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g.
-- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.)
-- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set.
-- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if
-- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize
-- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "of", and
-- note the spelling "neighborhoods" because we're in the US.)
-- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're
-- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or
-- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no
-- categorization.
local function district_neighborhood_cat_handler(data)
local function get_plural_entry_placetype(location_spec, container_trail)
if data.entry_placetype == "suburb" then
return "Suburbs"
else
-- Check for `british_spelling` setting on the spec itself or any container.
local uses_british_spelling = location_spec.british_spelling
if uses_british_spelling == nil and container_trail then
for _, container_set in ipairs(container_trail) do
local must_outer_break = false
for _, container in ipairs(container_set) do
if container.spec.british_spelling ~= nil then
uses_british_spelling = container.spec.british_spelling
must_outer_break = true
break
end
end
if must_outer_break then
break
end
end
end
return uses_british_spelling and "Neighbourhoods" or "Neighborhoods"
end
end
-- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire,
-- etc.)
local group, key, spec, container_trail = export.find_matching_holonym_location(data)
if group and not spec.is_former_place and spec.is_city then
return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)}
end
-- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like
-- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.)
local has_neighborhoods
local entry_placetype = data.entry_placetype
if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then
has_neighborhoods = true
else
-- Otherwise, make sure the current holonym is city-like.
has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt)
return export.get_placetype_prop(pt, "has_neighborhoods")
end, {continue_on_nil_only = true})
end
if has_neighborhoods then
-- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written
-- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}}
-- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need
-- to start with the current holonym, which is especially important for neighborhoods and suburbs that
-- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously
-- we skipped the first/current holonym.)
for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc,
data.holonym_index) do
local other_holonym_data = {
holonym_placetype = other_holonym.placetype,
holonym_placename = other_holonym.unlinked_placename,
holonym_index = other_holonym_index,
place_desc = data.place_desc,
}
local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data)
if group and not spec.is_former_place then
return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") ..
export.get_prefixed_key(key, spec)}
end
end
end
end
function export.check_already_seen_string(holonym_placename, already_seen_strings)
local canon_placename = ulower(m_links.remove_links(holonym_placename))
if type(already_seen_strings) ~= "table" then
already_seen_strings = {already_seen_strings}
end
for _, already_seen_string in ipairs(already_seen_strings) do
if canon_placename:find(already_seen_string) then
return true
end
end
return false
end
-- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display
-- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already.
-- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or
-- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym
-- placename, ignoring case and links. If the prefix isn't already present, we create a link that
-- uses the raw form as the link destination but the prefixed form as the display form, unless the
-- holonym already has a link in it, in which case we just add the prefix.
local function prefix_display_handler(prefix, holonym_placename, already_seen_strings)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return prefix .. " " .. holonym_placename
end
return prefix .. " [[" .. holonym_placename .. "]]"
end
-- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms.
-- Works identically to prefix_display_handler but for suffixes instead of prefixes.
local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link)
if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then
return holonym_placename
end
if holonym_placename:find("%[%[") then
return holonym_placename .. " " .. suffix
end
if include_suffix_in_link then
return "[[" .. holonym_placename .. " " .. suffix .. "]]"
else
return "[[" .. holonym_placename .. "]] " .. suffix
end
end
-- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed
-- with "borough".
local function borough_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.new_york_boroughs[unlinked_placename] then
-- Hack: don't display "borough" after the names of NYC boroughs
return holonym_placename
end
return suffix_display_handler("borough", holonym_placename)
end
local function county_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
-- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]".
if m_locations.ireland_counties["County " .. unlinked_placename .. ", Ireland"] or
m_locations.northern_ireland_counties["County " .. unlinked_placename .. ", Northern Ireland"] then
return prefix_display_handler("County", holonym_placename)
end
-- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County".
if m_locations.taiwan_counties[unlinked_placename .. " County, Taiwan"] then
return suffix_display_handler("County", holonym_placename)
end
-- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County".
if m_locations.romania_counties[unlinked_placename .. " County, Romania"] then
return suffix_display_handler("County", holonym_placename)
end
-- FIXME, we need the same for US counties but need to key off the country, not the specific county.
-- Others are displayed as-is.
return holonym_placename
end
-- Display handler for prefectures. Japanese prefectures are displayed as e.g. "[[Fukushima]] Prefecture".
-- Others are displayed as e.g. "[[Fthiotida]] prefecture".
local function prefecture_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
local suffix = m_locations.japan_prefectures[unlinked_placename .. " Prefecture, Japan"] and "Prefecture" or "prefecture"
return suffix_display_handler(suffix, holonym_placename)
end
-- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized
-- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is.
local function province_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if
m_locations.bulgaria_provinces[unlinked_placename .. "Province, Bulgaria"] or
m_locations.iran_provinces[unlinked_placename .. " Province, Iran"] or
m_locations.laos_provinces[unlinked_placename .. " Province, Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. " Province, North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. " Province, South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. " Province, Thailand"] or
m_locations.turkey_provinces[unlinked_placename .. " Province, Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. " Province, Vietnam"] then
return suffix_display_handler("Province", holonym_placename)
end
return holonym_placename
end
-- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is.
local function state_display_handler(holonym_placetype, holonym_placename)
local unlinked_placename = m_links.remove_links(holonym_placename)
if m_locations.nigeria_states[unlinked_placename .. " State, Nigeria"] then
return suffix_display_handler("State", holonym_placename)
end
return holonym_placename
end
-- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]].
local function voivodesip_display_handler(holonym_placetype, holonym_placename)
return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link")
end
------------------------------------------------------------------------------------------
-- Placetype data --
------------------------------------------------------------------------------------------
--[==[ var:
Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are
placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value
is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form
`Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are
used only in [[Module:category tree/topic cat/data/Places]] for specifying the properties of categories containing the
specified placetype, esp. bare categories like [[:Category:States and territories]] (rather than qualified categories
like [[:Category:States and territories of Australia]]).
Keys under the value table for a given placetype of are two types: ''property keys'' (which specify the value of
specific properties) and ''categorization keys'' (which tell how to categorize certain sorts of holonyms if the
placetype in question occurs as an entry placetype). Categorization keys are either the special value `default` or are
wildcard strings with a slash in them, such as `"country/*"`. Note that only wildcard strings are currently allowed
directly in the placetype data; everything else is handled through category handlers, either per-placetype or special
(such as `political_division_cat_handler`). The algorithm for how category keys and handlers are used to generate
categories is described at the top of [[Module:place]].
There are several recognized property keys, of various types:
1. The following link-related property keys are recognized:
* `link`: '''Required''' except in category-only placetypes ending in `!`. Describes how to link and display the
placetype in the formatted description when occurring as an entry placetype. Also used for formatting pluralized
placetypes (which may occur in entry placetypes, esp. new-format ones, such as `two <<islands>>`) and may occur in
categories). The possible values are:
*# `true`: Link to the same-named Wiktionary entry. This creates a raw link, e.g. `<nowiki>[[city]]</nowiki>`, which is
converted to an English-specific link by JavaScript postprocessing. If the placetype is plural, this creates a
two-part raw link e.g. `<nowiki>[[city|cities]]</nowiki>`.
*# `"w"`: Link to the same-named Wikipedia entry. This creates a two-part link, e.g.
`<nowiki>[[w:census town|census town]]</nowiki>`, or `<nowiki>[[w:census town|census towns]]</nowiki>` if the
placetype is given plural.
*# `"+..."`: Create a two-part link to the entry following the `+` sign. For example, if `cercle` specifies
`"+w:cercles of Mali"`, a two-part link `<nowiki>[[w:cercles of Mali|cercle]]</nowiki>` will be generated, or
`<nowiki>[[w:cercles of Mali|cercles]]</nowiki>` if plural `cercles` is specified.
*# `"separately"`: Link each word separately. For example, if `administrative territory` specifies `"separately"`, it
will be linked as `<nowiki>[[administrative]] [[territory]]</nowiki>`, or as
`<nowiki>[[administrative]] [[territory|territories]]</nowiki>` if plural `administrative territories` is given.
*# another string: Use that string directly. If the placetype is plural, `pluralize()` in [[Module:en-utilities]] is
called on the string, which will correctly pluralize most strings, including those with links in them. (If there
are multiple links, the display form of the last link is pluralized.)
*# `false`: This placetype is not allowed as an entry placetype. An error will be thrown if this placetype is given as
an entry placetype. This is specified for internal-use placetypes, especially placetypes used in conjunction with
the qualifiers `former`, `ancient`, `historical` and such.
* `plural_link`: If specified and the placetype is plural, use the value in place of generating a pluralized version of
the link spec in `link`. Most commonly, this is either a string with links in it (which is used directly) or the
value `false`, indicating that the placetype cannot occur plural. (This is used for example by `caplc`, which displays
as `<nowiki>[[capital]] and [[large]]st [[city]]</nowiki>`, where a plural version doesn't make sense.) Generally if
this is specified, `plural` also needs to be specified to give a special placetype plural; this situation occurs
especially with multiword placetypes where something other than the last word is pluralized. An example is
`town with bystatus`, whose plural is `towns with bystatus`, which needs to be explicitly given. This example uses
`link = <nowiki>"[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>` ({{m|nb|bystatus}}) is a Norwegian
Bokmål word, and template calls aren't currently permitted in link strings), along with
`plural_link = <nowiki>"[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]"</nowiki>`.
* `category_link`: Spec indicating how to display the placetype when occurring in category descriptions. Defaults to
the value of `link`, and in turn is overridden by more specific `category_link_*` keys; see below. Category-only
placetypes (which are plural and end in `!`) usually use `category_link` in preference to `link`. The value of
`category_link` can be any of the types of specs given above, but most commonly is a plural string with links in it,
spelling out the description; in this case it is used directly. When both `category_link` and `link` are given, the
value in `category_link` is typically longer and more descriptive. For example, `polity` uses `link = true`, which
just generates a link `<nowiki>[[polity]]</nowiki>` or plural `<nowiki>[[polity|polities]]</nowiki>`, but specifies a
separate `category_link = <nowiki>"[[independent]] or [[semi-]][[independent]] [[polity|polities]]"</nowiki>`, which
clarifies in the category description what a polity is.
* `category_link_top_level`: Spec indicating how to display top-level (bare/unqualified) categories, i.e. categories
where the placetype is not followed by `in ``location`` ` or `of ``location`` `. If given, this overrides
`category_link` for this type of category.
* `category_link_before_noncity`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` does not refer to a city. If given, this overrides
`category_link` for this type of category.
* `category_link_before_city`: Spec indicating how to display qualified categories of the form
` ``placetypes`` in/of ``location`` ` where ``location`` refer to a city. If given, this overrides `category_link` for
this type of category. An example where this is given is `neighborhood`, which uses the following specs:<ol>
<li>`link = true`</li>
<li>`category_link = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]"</nowiki>`</li>
<li>`category_link_before_city = <nowiki>"[[neighborhood]]s, [[district]]s and other subportions"</nowiki>`</li>
</ol> This has the effect of making the entry placetype `neighborhood` display as just
`<nowiki>[[neighborhood]]</nowiki>`, while e.g. a category like `Neighborhoods of Chicago` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[Chicago]], ...</nowiki>` and a category like
`Neighborhoods in Illinois, USA` displays as
`<nowiki>[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]] in [[Illinois]], ...</nowiki>`.
* `disallow_in_entries`: If specified, this placetype cannot occur as an entry placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
* `disallow_in_holonyms`: If specified, this placetype cannot occur as a holonym placetype, and the specified value
(a message indicating what to use instead) is displayed in the error message.
2. There is currently one fallback-related property key recognized:
* `fallback`: If specified, its value is a placetype which will be used for categorization purposes if no categories
get added using the placetype itself. As an example, `branch` sets a fallback of `river` but also sets
`preposition = "of"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi`
(whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex
example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that
checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under
[[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for
the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if
`c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these
categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be
categorized as e.g. [[:Category:Geographic and cultural areas of England]].
3. There is currently one property to control irregular plurals of placetypes:
* `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in
[[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`,
`-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent;
for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized
as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value
even when the default pluralization algorithm works correctly, if the default singularization algorithm won't
correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`).
4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those
categories:
* `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by
a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated
alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype
`village`); (c) to determine whether to add a parent category `political divisions of specific countries` to
qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are:
*# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire.
*# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement.
*# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a
settlement, such as wards and barangays.
*# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an
unincorporated community, farm or neighborhood.
*# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital
any more.
*# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc.
*# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university,
metro station, park or the like.
*# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary
greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`,
etc. qualifier has no effect on the category of these placetypes.
*# `generic place`: a place that isn't further qualified into any specific subtype.
* `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`,
`ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of
`dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc.
qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class`
is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those
in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers
(one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified
qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are
looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map
`medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes
`ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by
`get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default
category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where
`kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data`
for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is
used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data`
but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal
error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have
an entry for `greenhouse`), we just track the occurrence and end up not categorizing.
* `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the
placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for
placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`,
using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]].
* `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent`
just above).
* `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of
`bare_category_parent` if it is a string.
* `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or
`ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that
always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is
a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the
implementation is the same.
* `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the
placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which
category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`,
`neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like
`Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like
`Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized
city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers
iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or
more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a
political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but
by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the
resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The
return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the
holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype
with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields:
** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an
entry in `placetype_data` but may not be the original placetype given by the user);
** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed;
** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME:
we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms);
** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]];
** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or
{{tl|demonym-noun}}, instead of being triggered by {{tl|place}}.
* `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the
`district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `;
see the section just above on `cat_handler`.
5. The following preposition-related property keys are recognized:
* `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`.
* `generic_before_non_cities`: If specified, the appropriate category description handler in
[[Module:category tree/topic cat/data/Places]] will recognize categories of the form
` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This
is used to generate descriptions for categories added by category handlers and by explicit category specs in the
placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify
a value for `class` so that the category tree code can determine whether it's a political or non-political division.
* `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities.
6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype:
* `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values
are:
*# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly
follows an entry placetype);
*# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple);
*# `"suf"` (the holonym will display as `Holonym placetype`);
*# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized).
* `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym.
Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly
using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype
`administrative region` specifies `suffix = "region"`.
* `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym.
* `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the
holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take
precedence.
* `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix
requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies
`affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies
`no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified,
without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word.
* `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym).
Its return value is a string specifying the display form of the holonym.
7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms
of the specified placetype.
* `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype.
* `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry
placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article
`"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins
with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent
placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype
specified.
* `holonym_use_the`: Use `"the"` before holonyms of this placetype.
'''NOTE:'''
# The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which
must have either `link` or `category_link` specified.
# Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a
fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the
fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either
directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this
placetype.
# It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back
to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in
`placetype_data` or an internal error occurs.
]==]
export.placetype_data = {
--[=[
If you need to sort the following, do this (using Vim):
1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line
entries.
2. Make sure the table uses tabs everywhere for indent, and not spaces.
3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence:
:'a,.s/\n/\\n/g
:s/\\n\(\t\[\)/\r\1/g
The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while
the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to
a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one
command.)
4. Execute the following to sort:
:'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //'
Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station"
before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the
quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by
` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern).
5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing
:'a,.s/\\n/\r/g
Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but
to insert a newline in the right sode of a replacement you must use \r.
]=]
["*"] = {
link = false,
cat_handler = generic_place_cat_handler,
},
["administrative atoll"] = {
-- Maldives
link = "+w:administrative divisions of the Maldives",
preposition = "of",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "capital city",
},
["administrative center"] = {
link = "w",
fallback = "non-city capital",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "county",
},
["administrative district"] = {
link = "w",
fallback = "district",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "of",
suffix = "region", -- but prefix is still "administrative region (of)"
fallback = "region",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "of",
suffix = "territory", -- but prefix is still "administrative territory (of)"
fallback = "territory",
class = "subpolity",
},
["administrative unit"] = {
-- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an
-- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term
-- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types
-- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad
-- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need
-- to include this so that it can be used as a placetype for Albania, categorizing as communes.
link = "w",
class = "subpolity",
},
["administrative village"] = {
link = "w",
preposition = "of",
has_neighborhoods = true,
class = "settlement",
},
["aimag"] = {
-- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province;
-- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district.
link = "w",
fallback = "prefecture",
},
["airport"] = {
link = true,
class = "man-made structure",
default = {true},
},
["alliance"] = {
link = true,
fallback = "confederation",
},
["archipelago"] = {
link = true,
fallback = "island",
},
["area"] = {
link = true,
preposition = "of",
fallback = "geographic and cultural area",
-- Areas can either be administrative divisions (specifically of Kuwait) or geographic areas. Assume the former
-- when categorizing 'Areas' but the latter when handling e.g. 'historical area'.
class = "subpolity",
former_type = "geographic region",
cat_handler = district_neighborhood_cat_handler,
},
["arm"] = {
link = true,
preposition = "of",
class = "natural feature",
default = {"海"},
},
["arrondissement"] = {
link = true,
preposition = "of",
-- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions
-- of departments or provinces. Need to conditionalize on the country for both of the following.
class = "subpolity",
has_neighborhoods = true,
},
["associated province"] = {
link = "separately",
fallback = "province",
},
["atoll"] = {
-- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to
-- conditionalize `class` on the country. See also `administrative atoll`.
link = true,
class = "natural feature",
bare_category_parent = "islands",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "of",
fallback = "city",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "of",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "of",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "province",
},
["autonomous region"] = {
link = "w",
preposition = "of",
fallback = "administrative region",
-- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "of",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "polity",
},
["barangay"] = {
-- Philippines
link = true,
class = "settlement",
-- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use
-- some of the properties of a neighborhood.
fallback = "neighborhood",
},
["barrio"] = {
-- Spanish-speaking countries; Philippines
link = true,
-- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city.
-- `class` will need to conditionalize on the country to be completely correct.
fallback = "neighborhood",
},
["basin"] = {
link = true,
fallback = "lake",
},
["bay"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["beach"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"water"},
default = {true},
},
["beach resort"] = {
link = "w",
fallback = "resort town",
},
["bishopric"] = {
link = true,
fallback = "polity",
},
["bodies of water!"] = {
-- FIXME: This is (maybe?) a type category not a name category. There should be an option for this. We need to
-- straighten out the type vs. name vs. related-to issue.
category_link = "[[body of water|bodies of water]]",
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "of",
display_handler = borough_display_handler,
has_neighborhoods = true,
-- "former borough" could be a former settlement or a former part of a city but seems more likely to
-- be a former subpolity, particularly in England. FIXME, we really need a handler to take care of this
-- properly.
class = "subpolity",
-- Grr, some boroughs are city-like but some (e.g. in Britain) may be larger.
},
["borough seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "of",
fallback = "river",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"具名橋樑"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"具名建築物"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "polity",
},
["canton"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "capital city",
},
["capital city"] = {
link = true,
category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "cities",
cat_handler = capital_city_cat_handler,
default = {true},
-- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}}
-- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't
-- match against the placetype 'city' of Melbourne.
fallback = "city",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "capital city",
},
["captaincy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "city",
},
["cattle station"] = {
-- Australia
link = true,
fallback = "farm",
},
["census area"] = {
link = true,
affix_type = "Suf",
has_neighborhoods = true,
class = "non-admin settlement",
},
["census-designated place"] = {
-- United States
link = true,
class = "non-admin settlement",
},
["census division"] = {
-- Canada
link = "w",
preposition = "of",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "town",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "of",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "county",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "island",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["city"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["city-state"] = {
link = true,
category_link = "[[sovereign]] [[microstate]]s consisting of a single [[city]] and [[w:dependent territory|dependent territories]]",
has_neighborhoods = true,
class = "settlement",
["continent/*"] = {"城邦", "+++的市", "+++國家", "首都"},
default = {"城邦", "城市", "國家", "首都"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "of",
affix_type = "suf",
has_neighborhoods = true,
class = "subpolity",
},
["claimed political division"] = {
link = "[[claim]]ed [[political]] [[division]]",
class = "subpolity",
default = {true},
},
["co-capital"] = {
link = "[[co-]][[capital]]",
fallback = "capital city",
},
["coal city"] = {
link = "+w:coal town",
fallback = "city",
},
["coal town"] = {
link = "w",
fallback = "town",
},
["collectivity"] = {
link = "w",
preposition = "of",
-- No default; these are weird one-off governmental divisions in France (esp. for overseas collectivities)
class = "subpolity",
},
["colony"] = {
link = true,
fallback = "dependent territory",
},
["comarca"] = {
-- per Wikipedia: traditional region or local administrative division found in Portugal, Spain, and some of
-- their former colonies, like Brazil, Nicaragua, and Panama. In the Valencian Community, for example, it
-- sits between municipalities and provinces, something like a county or district.
link = true,
preposition = "of",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "of",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "municipality",
},
["community"] = {
link = true,
category_link = "[[community|communities]] of all sizes",
fallback = "village",
},
["community development block"] = {
-- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be
-- neighborhoods so I'm not setting `has_neighborhoods` for now
link = "w",
affix_type = "suf",
no_affix_strings = "block",
class = "subpolity",
},
["comune"] = {
-- Italy, Switzerland
link = true,
fallback = "municipality",
},
["condominium"] = {
link = true,
fallback = "polity",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "polity",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "of",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "of",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "of",
class = "subpolity",
},
["counties and county-level cities!"] = {
-- This is used when grouping counties and county-level cities under prefecture-level cities in China.
category_link = "[[county|counties]] and [[county-level city|county-level cities]]",
class = "subpolity",
},
["continent"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"大洲及大陸地區"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "continent",
},
["continents and continental regions!"] = {
category_link = "[[大洲]]以及大洲等級的[[地區]](如[[玻里尼西亞]])",
class = "geographic region",
},
["council area"] = {
link = true,
-- in Scotland; similar to a county
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["country"] = {
link = true,
class = "polity",
["continent/*"] = {"+++國家", "國家"},
default = {true},
},
["country-like entities!"] = {
category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]",
class = "polity",
},
["county"] = {
link = true,
preposition = "of",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "of",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
fallback = "town",
has_neighborhoods = true,
class = "capital",
},
["county-administered city"] = {
-- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city.
-- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city.
link = "w",
fallback = "city",
has_neighborhoods = true,
class = "settlement",
},
["county-controlled city"] = {
-- Taiwan
link = "w",
fallback = "county-administered city",
},
["county-level city"] = {
-- PR China
link = "w",
fallback = "prefecture-level city",
},
["crater lake"] = {
link = true,
fallback = "lake",
},
["creek"] = {
link = true,
fallback = "stream",
},
["Crown colony"] = {
link = "+crown colony",
fallback = "crown colony",
},
["crown colony"] = {
link = true,
fallback = "colony",
},
["Crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["crown dependency"] = {
link = true,
fallback = "dependent territory",
},
["cultural area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["cultural region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["delegation"] = {
-- Tunisia
link = "+w:delegations of Tunisia",
preposition = "of",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "capital city",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "of",
class = "subpolity",
former_type = "dependent territory",
bare_category_parent = "political divisions",
["country/*"] = {true},
default = {true},
},
["desert"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems"},
default = {true},
},
["deserted mediaeval village"] = {
link = "w",
fallback = "deserted medieval village",
},
["deserted medieval village"] = {
link = "w",
fallback = "ANCIENT settlement",
},
["direct-administered municipality"] = {
-- China
link = "+w:direct-administered municipalities of China",
fallback = "municipality",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "municipality",
},
["distributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["district"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to
-- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class
-- is "settlement" or "subpolity".
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
-- No default. Countries for which districts are political divisions will get entries.
},
["districts and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Portugal.
category_link = "[[district]]s and [[autonomous region]]s",
class = "subpolity",
},
["districts and autonomous territorial units!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Moldova.
category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s",
class = "subpolity",
},
["district capital"] = {
link = "separately",
fallback = "capital city",
},
["district headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["district municipality"] = {
-- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in
-- South Africa, district municipalities group local municipalities and hence won't have neighborhoods.
link = "w",
preposition = "of",
affix_type = "suf",
no_affix_strings = {"district", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "capital city",
},
["dome"] = {
link = true,
fallback = "mountain",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "polity",
},
["emirate"] = {
link = true,
preposition = "of",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "polity",
},
["empire"] = {
link = true,
fallback = "polity",
},
["enclave"] = {
link = true,
preposition = "of",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "of",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "mountain",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "of",
-- exclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["external territory"] = {
link = "separately",
fallback = "dependent territory",
},
["farm"] = {
link = true,
class = "non-admin settlement",
default = {"農牧場"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "of",
fallback = "city",
},
["federal district"] = {
link = true,
preposition = "of",
-- Might have neighborhoods as federal districts are often cities (e.g. Mexico City)
has_neighborhoods = true,
class = "settlement",
},
["federal subject"] = {
-- In Russia; a generic term for first-level administrative divisions (republics, oblasts, okrugs, krais,
-- autonomous okrugs and autonomous oblasts).
link = "w",
preposition = "of",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "territory",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["First Nations reserve"] = {
-- Canada
link = "[[First Nations]] [[w:Indian reserve|reserve]]",
-- Wikipedia uses "Indian reserve"; presumably that is the legal term
fallback = "Indian reserve",
class = "subpolity",
},
["fjord"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["footpath"] = {
link = true,
fallback = "road",
},
["forest"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ecosystems", "forestry"},
default = {true},
},
["fort"] = {
link = true,
fallback = "building",
},
["fortress"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- fortresses -> fortresse, so put an entry here to ensure we singularize correctly.
plural = "fortresses",
fallback = "building",
},
["frazione"] = {
link = "w",
fallback = "hamlet",
},
["freeway"] = {
link = true,
fallback = "road",
},
["French prefecture"] = {
link = "[[w:prefectures in France|prefecture]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
},
["geographic and cultural area"] = {
link = "+w:cultural area",
-- `generic_before_non_cities` is used when generating the category description of categories of the format
-- `Geographic and cultural areas of PLACE`. `preposition` is used when generating {{place}} description and
-- categories for any placetype that falls back to `geographic and cultural area`.
generic_before_non_cities = "of",
preposition = "of",
class = "geographic region",
bare_category_parent = "places",
["country/*"] = {true},
["constituent country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["geographic area"] = {
link = "+w:geographic region",
fallback = "geographic and cultural area",
},
["geographic region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical area"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geographical region"] = {
link = "w",
fallback = "geographic and cultural area",
},
["geopolitical zone"] = {
-- Nigeria
link = true,
preposition = "of",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "of",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
bare_category_parent = "former settlements",
cat_handler = city_type_cat_handler,
default = {true},
},
["glen"] = {
link = true,
fallback = "valley",
},
["governorate"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "of",
affix_type = "Pref",
class = "subpolity",
inherently_former = {"FORMER"},
},
["group of islands"] = {
link = "[[group]] of [[island]]s",
plural = "groups of islands",
plural_link = "[[group]]s of [[island]]s",
fallback = "island group",
},
["gulf"] = {
link = true,
preposition = "of",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["hamlet"] = {
link = true,
fallback = "village",
},
["harbor city"] = {
link = "separately",
fallback = "city",
},
["harbor town"] = {
link = "separately",
fallback = "town",
},
["harbour city"] = {
link = "separately",
fallback = "city",
},
["harbour town"] = {
link = "separately",
fallback = "town",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "continental region",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "town",
},
["hill town"] = {
link = "w",
fallback = "town",
},
["historic region"] = {
-- provided only for the link
link = "+w:historical region",
fallback = "FORMER geographic region",
},
["historical county"] = {
-- needed for historical counties of England/etc.
link = "+w:historic county",
fallback = "FORMER subpolity",
},
["historical region"] = {
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["home rule city"] = {
link = "w",
fallback = "city",
},
["home rule municipality"] = {
link = "w",
fallback = "municipality",
},
["hot spring"] = {
link = true,
fallback = "spring",
},
["house"] = {
link = true,
fallback = "building",
},
["housing estate"] = {
-- not the same as a housing project (i.e. public housing)
link = true,
-- not exactly the case but approximately
fallback = "neighborhood",
},
["hromada"] = {
-- Ukraine
link = "w",
disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'",
disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "city",
},
["independent town"] = {
link = "+independent city",
fallback = "town",
},
["Indian reservation"] = {
link = "w",
-- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations
-- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts
-- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is,
-- so this must still be the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["Indian reserve"] = {
link = "w",
-- In Canada. "First Nations reserve" sounds more modern/PC but Wikipedia uses "Indian reserve"; presumably that
-- is still the legal term.
preposition = "of",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "sea",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["island"] = {
link = true,
preposition = "of",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "country",
},
["island group"] = {
link = "separately",
fallback = "island",
},
["island municipality"] = {
link = "w",
fallback = "municipality",
},
["islet"] = {
link = "w",
fallback = "island",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "capital city",
},
["khanate"] = {
link = true,
fallback = "polity",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["lake"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["landforms!"] = {
category_link = "[[landform]]s",
bare_category_parent = "places",
addl_bare_category_parents = {"地球"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "city",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "capital city",
},
["library"] = {
link = true,
fallback = "building",
},
["lieutenancy area"] = {
-- used in the United Kingdom; per Wikipedia:
-- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does
-- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of
-- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate
-- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on
-- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern
-- Ireland correspond to the six counties and two former county boroughs.[3]
link = "w",
fallback = "ceremonial county",
},
["local authority district"] = {
link = "w",
fallback = "local government district",
},
["local government area"] = {
-- Australia
link = "w",
preposition = "of",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "of",
fallback = "municipality",
},
["local government district"] = {
link = "w",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local government district with borough status"] = {
link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]",
plural = "local government districts with borough status",
plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]",
preposition = "of",
affix_type = "suf",
affix = "district",
class = "subpolity",
},
["local urban district"] = {
link = "w",
fallback = "unincorporated community",
},
["locality"] = {
link = "+w:locality (settlement)",
-- not necessarily true, but usually is the case
fallback = "village",
},
["London borough"] = {
link = "w",
preposition = "of",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "region",
},
["man-made structures!"] = {
category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s",
bare_category_parent = "places",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "of",
fallback = "sea",
},
["market city"] = {
link = "+market town",
fallback = "city",
},
["market town"] = {
link = true,
fallback = "town",
},
["massif"] = {
link = true,
fallback = "mountain",
},
["megacity"] = {
link = true,
fallback = "city",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"borough", "city"},
fallback = "local government district",
has_neighborhoods = true,
},
["metropolitan city"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"metropolitan", "city"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "county",
},
["metropolitan municipality"] = {
-- In South Africa, metropolitan municipalities group local municipalities and are like districts, between
-- provinces and municipalities.
-- In Turkey, metropolitan municipalities are provinces-level.
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "municipality"},
fallback = "municipality",
class = "subpolity",
},
["microdistrict"] = {
-- residential complex in post-Soviet states
link = true,
fallback = "neighborhood",
},
["micronations!"] = {
-- FIXME, merge with microstate
category_link = "[[micronation]]s",
bare_category_parent = "countries",
},
["microstate"] = {
link = true,
fallback = "country",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "town",
},
["monarchy"] = {
link = true,
fallback = "polity",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["mountain"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "district",
},
["mountain indigenous township"] = {
-- Taiwan
link = "+w:township (Taiwan)",
fallback = "township",
},
["mountain pass"] = {
link = true,
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "mountain passes",
class = "natural feature",
addl_bare_category_parents = {"mountains"},
default = {true},
},
["mountain range"] = {
link = true,
fallback = "mountain",
},
["mountainous region"] = {
link = "separately",
fallback = "region",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "of",
class = "subpolity",
},
["municipal district"] = {
link = "w",
-- meaning varies depending on the country; for now, assume no neighborhoods.
-- FIXME: has_neighborhoods might have to be a function that looks at the containing holonyms.
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "municipality",
},
["municipality"] = {
link = true,
preposition = "of",
has_neighborhoods = true,
class = "subpolity",
},
["municipality with city status"] = {
link = "[[municipality]] with [[w:city status|city status]]",
plural = "municipalities with city status",
plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]",
fallback = "municipality",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "places",
default = {true},
},
["named bridges!"] = {
category_link = "notable [[bridge]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"bridges"},
},
["named buildings!"] = {
category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"buildings"},
},
["named roads!"] = {
category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures",
bare_category_parent = "man-made structures",
addl_bare_category_parents = {"roads"},
},
["national capital"] = {
link = "w",
fallback = "capital city",
},
["national park"] = {
link = true,
fallback = "park",
},
["natural features!"] = {
category_link = "[[w:geographical feature#Natural features|natural features]] such as [[lake]]s, [[mountain]]s, [[island]]s and [[ocean]]s",
bare_category_parent = "places",
},
["neighborhood"] = {
-- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which
-- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the
-- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the
-- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods".
-- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also
-- categorize as neighbo(u)rhoods.)
link = true,
-- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]].
generic_before_non_cities = "in",
generic_before_cities = "of",
-- The following text is suitable for the top-level description of a neighborhood as well as categories of the
-- form `Neighborhoods in POLDIV` e.g. `Neighborhoods in Illinois, USA` but not for categories of the form
-- `Neighborhoods of Chicago`, where we'd get "... and other subportions of [[city|cities]] of [[Chicago]]".
category_link = "[[neighborhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighborhood]]s, [[district]]s and other subportions",
-- NOTE: This setting is needed for administrative divisions like barangays that fall back to `neighborhood`,
-- when set in [[Module:place/locations]] for a specific country (e.g. the Philippines). The above settings
-- for `generic_before_non_cities` and `generic_before_cities` are used by category handlers in
-- [[Module:category tree/topic cat/data/Places]] for `Neighborhoods in POLDIV` and `Neighborhoods of CITY`
-- categories. In fact, district_neighborhood_cat_handler() does not currently pay attention to them, but
-- generates "of" before cities and "in" before non-cities regardless. (FIXME: We should change that.)
preposition = "of",
class = "non-admin settlement",
cat_handler = district_neighborhood_cat_handler,
},
["neighbourhood"] = {
link = true,
category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]",
category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions",
fallback = "neighborhood",
},
["new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
preposition = "in",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "town",
},
["non-city capital"] = {
link = "[[capital]]",
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
cat_handler = function(data)
return capital_city_cat_handler(data, "non-city")
end,
-- FIXME, do we need the following?
default = {true},
},
["non-metropolitan county"] = {
link = "w",
fallback = "county",
},
["non-metropolitan district"] = {
link = "w",
fallback = "local government district",
},
["non-sovereign kingdom"] = {
-- especially in Africa and Asia
link = "+w:non-sovereign monarchy",
generic_before_non_cities = "in",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["oblasts and autonomous republics!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Ukraine.
category_link = "[[oblast]]s and [[w:autonomous republic|autonomous republic]]s",
class = "subpolity",
},
["ocean"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"seas", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["overseas collectivity"] = {
link = "w",
fallback = "collectivity",
},
["overseas department"] = {
link = "w",
fallback = "department",
},
["overseas territory"] = {
link = "w",
fallback = "dependent territory",
},
["parish"] = {
link = true,
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["parish municipality"] = {
-- in Quebec, often similar to a rural village; the famous [[Saint-Louis-du-Ha! Ha!]] is one of them.
link = "+w:parish municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "of",
class = "capital",
has_neighborhoods = true,
},
["park"] = {
link = true,
class = "man-made structure",
default = {true},
},
["pass"] = {
link = "+mountain pass",
-- The default plural algorithm gets this right but the singularization algorithm incorrectly converts
-- passes -> passe, so put an entry here to ensure we singularize correctly.
plural = "passes",
fallback = "mountain pass",
},
["path"] = {
link = true,
fallback = "road",
},
["peak"] = {
link = true,
fallback = "mountain",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["places!"] = {
generic_before_non_cities = "in",
generic_before_cities = "in",
class = "generic place",
category_link = "[[place]]s of all sorts",
-- `category_link_top_level` control the description used in the top-level [[Category:Places]] and
-- language-specific variants such as [[Category:en:Places]]. The actual text for a language-spefic variant is
-- "{{{langname}}} names of [[geographical]] [[place]]s of all sorts; [[toponym]]s." where the "names of"
-- portion is automatically generated by the appropriate handler in
-- [[Module:category tree/topic cat/data/Places]].
category_link_top_level = "[[geographical]] [[place]]s of all sorts; [[toponym]]s",
bare_category_parent = "names",
},
["planned community"] = {
-- Include this so we don't categorize 'planned community' into villages, as 'community' does.
link = true,
class = "settlement",
has_neighborhoods = true,
},
["plateau"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true},
-- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category
},
["Polish colony"] = {
link = "[[w:colony (Poland)|colony]]",
affix_type = "suf",
affix = "colony",
fallback = "village",
has_neighborhoods = true,
},
["political divisions!"] = {
category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s",
bare_category_parent = "places",
},
["polity"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity",
bare_category_parent = "places",
default = {true},
},
["populated place"] = {
link = "+w:populated place",
-- not necessarily true, but usually is the case
fallback = "village",
},
["port"] = {
link = true,
class = "man-made structure",
default = {true},
},
["port city"] = {
-- FIXME: should categorize into "Ports" as well as "Cities"
link = true,
fallback = "city",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "Towns"
link = "w",
fallback = "town",
},
["prefecture"] = {
-- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France.
-- May need `has_neighborhoods` to be a function.
link = true,
preposition = "of",
display_handler = prefecture_display_handler,
class = "subpolity",
},
["prefecture-level city"] = {
-- China; they are huge entities with a central city; not cities themselves.
link = "w",
preposition = "of",
class = "subpolity",
},
["preserved county"] = {
-- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more
-- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22.
link = "w",
preposition = "of",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden
link = "+w:sv:primärområde",
fallback = "neighborhood",
},
["principality"] = {
link = true,
fallback = "monarchy",
},
["promontory"] = {
link = true,
fallback = "headland",
},
["protectorate"] = {
link = true,
fallback = "dependent territory",
},
["province"] = {
link = true,
preposition = "of",
display_handler = province_display_handler,
class = "subpolity",
},
["provinces and autonomous regions!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case China.
category_link = "[[province]]s and [[autonomous region]]s",
class = "subpolity",
},
["provinces and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Canada and Pakistan.
category_link = "[[province]]s and [[territory|territories]]",
class = "subpolity",
},
["provincial capital"] = {
link = "separately",
fallback = "capital city",
},
["raion"] = {
link = true,
preposition = "of",
affix_type = "Suf",
class = "subpolity",
},
["ranch"] = {
link = true,
fallback = "farm",
},
["range"] = {
-- FIXME: Where is this used? Is it a mountain range?
link = true,
holonym_use_the = true,
class = "natural feature",
},
["regency"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["region"] = {
link = true,
preposition = "of",
-- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area'
fallback = "geographic and cultural area",
-- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region
class = "geographic region",
},
["regional capital"] = {
link = "separately",
fallback = "capital city",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "of",
affix_type = "Suf",
no_affix_strings = {"municipality", "county"},
fallback = "municipality",
},
["regional district"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "district",
fallback = "district",
},
["regional municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
},
["regional unit"] = {
link = "w",
preposition = "of",
affix_type = "suf",
class = "subpolity",
},
["registration county"] = {
-- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical
-- purposes (registration of births, deaths and marriages, and for the output of census information).
link = "w",
fallback = "county",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case.
link = true,
fallback = "constituent republic",
},
["research base"] = {
link = "+w:research station",
fallback = "research station",
},
["research station"] = {
link = "w",
class = "non-admin settlement", -- or "man-made structure"?
default = {true},
},
["reservoir"] = {
link = true,
fallback = "lake",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "city",
},
["resort town"] = {
link = "w",
fallback = "town",
},
["river"] = {
link = true,
generic_before_non_cities = "in",
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
cat_handler = city_type_cat_handler,
["continent/*"] = {true},
default = {true},
},
["river island"] = {
link = "w",
fallback = "island",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"具名道路"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"羅馬帝國行省"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = {"royal", "borough"},
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["royal burgh"] = {
link = true,
fallback = "borough",
},
["royal capital"] = {
link = "w",
fallback = "capital city",
},
["rural committee"] = {
-- Hong Kong; a group of villages
link = "w",
affix_type = "Suf",
has_neighborhoods = true,
class = "settlement",
},
["rural community"] = {
-- New Brunswick
link = "+w:list of municipalities in New_Brunswick#Rural communities",
fallback = "municipality",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "of",
affix_type = "Pref",
no_affix_strings = "municipality",
fallback = "municipality",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "of",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["sea"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["seaport"] = {
link = true,
fallback = "port",
},
["seat"] = {
link = true,
fallback = "administrative centre",
},
["self-administered area"] = {
-- Myanmar (groups self-administered divisions and zones)
link = "+w:self-administered zone",
preposition = "of",
class = "subpolity",
},
["self-administered division"] = {
-- Myanmar (only one of them: Wa Self-Administered Division)
link = "w",
fallback = "self-administered area",
},
["self-administered zone"] = {
-- Myanmar (five of them)
link = "w",
fallback = "self-administered area",
},
["separatist state"] = {
link = "separately",
fallback = "unrecognized country",
},
["settlement"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "places",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "district",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "county",
},
["shire county"] = {
link = "w",
fallback = "county",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "city",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "town",
},
["spa city"] = {
link = "+w:spa town",
fallback = "city",
},
["spa town"] = {
link = "w",
fallback = "town",
},
["space station"] = {
link = true,
fallback = "research station",
},
["special administrative region"] = {
-- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a
-- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia
-- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special
-- administrative areas"
link = "+w:special administrative regions of China",
preposition = "of",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves
-- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing
suffix = "",
},
["special collectivity"] = {
link = "w",
fallback = "collectivity",
},
["special municipality"] = {
-- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands
link = "w",
fallback = "municipality",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "municipality",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["state"] = {
link = true,
preposition = "of",
class = "subpolity",
-- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign
-- entity. The latter appears more common (e.g. in various "ancient states" of East Asia).
former_type = "polity",
},
["states and territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case Australia.
category_link = "[[state]]s and [[territory|territories]]",
class = "subpolity",
},
["states and union territories!"] = {
-- This and other similar "combined placetypes" are for use in the plural when grouping first-level
-- administrative regions of certain countries, in this case India.
category_link = "[[state]]s and [[union territory|union territories]]",
class = "subpolity",
},
["state capital"] = {
link = true,
fallback = "capital city",
},
["state park"] = {
link = true,
fallback = "park",
},
["state-level new area"] = {
-- China (type of economic development zone, varying greatly in size)
link = "w",
fallback = "new area",
},
["statistical region"] = {
-- Slovenia
link = true,
fallback = "administrative region",
},
["statutory city"] = {
link = "w",
fallback = "city",
},
["statutory town"] = {
link = "w",
fallback = "town",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "river",
},
["street"] = {
link = true,
fallback = "road",
},
["strip"] = {
link = true,
fallback = "geographic region",
},
["strip of land"] = {
link = "[[strip]] of [[land]]",
plural = "strips of land",
plural_link = "[[strip]]s of [[land]]",
fallback = "geographic region",
},
["sub-metropolitan city"] = {
link = "+w:List of cities in Nepal#Sub-metropolitan cities",
fallback = "city",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["subdistrict"] = {
link = true,
preposition = "of",
has_neighborhoods = true, --?
-- FIXME: subdistricts can be neighborhood-like (of Jakarta) or larger (in China); need a handler
class = "subpolity",
default = {true},
},
["subdivision"] = {
link = true,
preposition = "of",
affix_type = "suf",
-- FIXME: subdivisions can be neighborhood-like or larger; need a handler
class = "subpolity",
cat_handler = district_neighborhood_cat_handler,
},
["submerged ghost town"] = {
-- FIXME: Consider just having "submerged" as a qualifier.
link = "[[submerged]] [[ghost town]]",
fallback = "ghost town",
},
["subnational kingdom"] = {
link = "+w:subnational monarchy",
fallback = "non-sovereign kingdom",
},
["subnational monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["subprefecture"] = {
link = true,
affix_type = "suf",
preposition = "of",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["subprovincial city"] = {
link = "w",
-- China; special status given to certain prefecture-level cities
fallback = "prefecture-level city",
},
["subprovincial district"] = {
link = "w",
-- China; special status given to Binhai New Area and Pudong New Area, which are county-level districts
preposition = "of",
class = "subpolity",
},
["subregion"] = {
link = true,
fallback = "geographic region",
},
["suburb"] = {
link = true,
-- The following text is suitable for the top-level description of a suburb as well as categories of the form
-- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago',
-- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]".
category_link = "[[suburb]]s of [[city|cities]]",
category_link_before_city = "[[suburb]]s",
-- See comments under "neighborhood" for the following three settings. They are used by
-- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories
-- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a
-- given page), which hardcodes "in" for non-cities and "of" for cities. (FIXME: Change this.)
generic_before_non_cities = "in",
generic_before_cities = "of",
preposition = "of",
has_neighborhoods = true, --?
class = "non-admin settlement", --?
cat_handler = district_neighborhood_cat_handler,
},
["suburban area"] = {
link = "w",
fallback = "suburb",
},
["subway station"] = {
link = "w",
fallback = "metro station",
},
["sum"] = {
-- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia),
-- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion).
link = "+w:sum (administrative division)",
-- This fallback is somewha arbitrary. We could use "county" but that has a display handler
-- which we don't want to be active (FIXME: If the display handler would be active, that's a bug).
fallback = "division",
},
["supercontinent"] = {
link = true,
fallback = "continent",
},
["tehsil"] = {
link = true,
affix_type = "suf",
no_affix_strings = {"tehsil", "tahsil"},
class = "subpolity",
},
["temple"] = {
link = true,
fallback = "building",
},
["territorial authority"] = {
link = "w",
fallback = "district",
},
["territory"] = {
link = true,
preposition = "of",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "of",
class = "subpolity",
},
["town"] = {
link = true,
generic_before_non_cities = "in",
has_neighborhoods = true,
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["town with bystatus"] = {
-- can't use templates in links currently
link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]",
plural = "towns with bystatus",
plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]",
fallback = "town",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "county",
},
["traditional region"] = {
-- FIXME: Verify this works. Same for 'historic(al) region'.
-- provided only for the link
link = "w",
fallback = "FORMER geographic region",
},
["trail"] = {
link = true,
fallback = "road",
},
["treaty port"] = {
link = "w",
fallback = "city",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "of",
fallback = "river",
},
["underground station"] = {
link = "w",
fallback = "metro station",
},
["unincorporated area"] = {
link = "w",
-- I don't know if this fallback makes sense everywhere.
fallback = "unincorporated community",
},
["unincorporated community"] = {
link = true,
generic_before_non_cities = "in",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "territory",
},
["union territory"] = {
-- India
link = true,
preposition = "of",
entry_placetype_indefinite_article = "a",
class = "subpolity",
},
["unitary authority"] = {
-- UK, New Zealand
link = true,
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["unitary district"] = {
link = "w",
entry_placetype_indefinite_article = "a",
fallback = "local government district",
},
["united township municipality"] = {
-- Quebec
link = "+w:united township municipality (Quebec)",
entry_placetype_indefinite_article = "a",
fallback = "township municipality",
has_neighborhoods = true, --?
},
["university"] = {
link = true,
entry_placetype_indefinite_article = "a",
class = "man-made structure",
default = {true},
},
["unrecognised country"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized and nearly unrecognized countries!"] = {
category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}",
bare_category_parent = "country-like entities",
},
["unrecognized country"] = {
link = "w",
class = "polity",
default = {"未受國際普遍承認國家"},
},
["unrecognised state"] = {
link = "w",
fallback = "unrecognized country",
},
["unrecognized state"] = {
link = "w",
fallback = "unrecognized country",
},
["urban area"] = {
link = "separately",
fallback = "neighborhood",
},
["urban hromada"] = {
link = "[[urban]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["urban service area"] = {
-- A strange beast existing in Alberta; technically a type of hamlet but in practice used for much larger
-- cities and treated equivalent to a city. (There are only two of them, [[Fort McMurray]] and [[Sherwood Park]]).
link = "w",
fallback = "city",
},
["urban township"] = {
link = "w",
fallback = "township",
},
["urban-type settlement"] = {
-- appears to be a particular type of small urban settlement in post-Soviet states,
-- had an administrative function.
link = "w",
fallback = "town",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"landforms", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "in",
category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s",
class = "settlement",
cat_handler = city_type_cat_handler,
default = {true},
},
["village development committee"] = {
-- former administrative structure in Nepal; also exists in India but not as a formal unit
link = "+w:village development committee (Nepal)",
inherently_former = {"FORMER"},
fallback = "village",
},
["village municipality"] = {
-- Quebec
link = "+w:village municipality (Quebec)",
preposition = "of",
fallback = "municipality",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "of",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"landforms"},
default = {true, "山"},
},
["ward"] = {
link = true,
class = "settlement",
-- Wards are formal administrative divisions of a city but have some properties of neighborhoods.
fallback = "neighborhood",
},
["watercourse"] = {
link = true,
fallback = "channel",
},
["Welsh community"] = {
-- Wales
link = "[[w:community (Wales)|community]]",
preposition = "of",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "of",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
-- FIXME: Consider removing 'ancient settlements' here. Ancient capitals, like former capitals, often still
-- exist but just aren't the capital any more. Maybe we should have an 'Ancient capitals' category.
default = {"古代定居點", "歷史首府"},
},
["ANCIENT non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "ANCIENT settlement",
},
["ANCIENT settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"古代定居點"},
},
["ancient settlements!"] = {
category_link = "former [[city|cities]], [[town]]s and [[village]]s that existed in [[antiquity]]",
bare_category_parent = "former settlements",
},
["FORMER capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "of",
has_neighborhoods = true,
class = "capital",
default = {"歷史首府"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "settlements",
},
["former counties and county-level cities!"] = {
-- For categorizing former counties and county-level cities of China
category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]",
bare_category_breadcrumb = "counties and county-level cities",
bare_category_parent = "former political divisions",
},
["FORMER county"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER county-level city"] = {
-- For categorizing former counties and county-level cities of China
link = false,
fallback = "FORMER subpolity",
},
["former countries and country-like entities!"] = {
category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist",
bare_category_breadcrumb = "countries and country-like entities",
bare_category_parent = "former polities",
},
["FORMER country"] = {
link = false,
class = "polity",
default = {"Former countries and country-like entities"},
},
["former dependent territories!"] = {
category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist",
bare_category_breadcrumb = "dependent territories",
bare_category_parent = "former political divisions",
},
["FORMER dependent territory"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "former political divisions",
},
["FORMER district"] = {
-- For categorizing former districts of China
link = false,
fallback = "FORMER subpolity",
},
["FORMER geographic region"] = {
link = false,
fallback = "geographic and cultural area",
},
["FORMER man-made structure"] = {
link = false,
class = "man-made structure",
default = {"Former man-made structures"},
},
["former man-made structures!"] = {
category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist",
bare_category_breadcrumb = "man-made structures",
bare_category_parent = "former places",
},
["former municipalities!"] = {
-- For categorizing former municipalities of the Netherlands
category_link = "no-longer-existing [[municipality|municipalities]]",
bare_category_breadcrumb = "municipalities",
bare_category_parent = "former political divisions",
},
["FORMER municipality"] = {
-- For categorizing former municipalities of the Netherlands
link = false,
fallback = "FORMER subpolity",
},
["FORMER natural feature"] = {
link = false,
class = "natural feature",
default = {"Former natural features"},
},
["former natural features!"] = {
category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist",
bare_category_breadcrumb = "natural features",
bare_category_parent = "former places",
},
["FORMER non-admin settlement"] = {
link = false,
class = "non-admin settlement",
fallback = "FORMER settlement",
},
["former places!"] = {
category_link = "[[place]]s of all sorts that no longer exist",
bare_category_breadcrumb = "former",
bare_category_parent = "places",
},
["former political divisions!"] = {
category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former places",
},
["former polities!"] = {
category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist",
bare_category_breadcrumb = "polities",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity",
default = {"Former polities"},
},
["former prefectures!"] = {
-- For categorizing former prefectures of China
category_link = "no-longer-existing [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "former political divisions",
},
["FORMER prefecture"] = {
-- For categorizing former prefectures of China
link = false,
fallback = "FORMER subpolity",
},
["former provinces!"] = {
-- For categorizing former provinces of China, etc.
category_link = "no-longer-existing [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "former political divisions",
},
["FORMER province"] = {
-- For categorizing ancient/historical/former provinces of the Roman Empire
link = false,
fallback = "FORMER subpolity",
},
["former region"] = {
-- A former region is considered a former political division, but not a 'historical/traditional/etc.' region.
link = "separately",
preposition = "of",
inherently_former = {"FORMER"},
class = "subpolity",
},
["FORMER settlement"] = {
link = false,
has_neighborhoods = true,
class = "settlement",
default = {"Former settlements"},
},
["former settlements!"] = {
category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "of",
class = "subpolity",
default = {"Former political divisions"},
},
----------------------------------------------------------------------------------------------
-- form-of categories --
----------------------------------------------------------------------------------------------
---------- Abbreviations ----------
["abbreviations of counties!"] = {
-- For categorizing abbreviations of counties of e.g. England
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]",
bare_category_breadcrumb = "counties",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of places",
},
["abbreviations of departments!"] = {
-- For categorizing abbreviations of departments of e.g. France
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s",
bare_category_breadcrumb = "departments",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of districts!"] = {
-- For categorizing abbreviations of districts of e.g. ???
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s",
bare_category_breadcrumb = "districts",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of divisions!"] = {
-- For categorizing abbreviations of divisions of e.g. Bangladesh
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s",
bare_category_breadcrumb = "divisions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of former countries!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "abbreviations of former places",
},
["abbreviations of former places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}},
},
["abbreviations of places!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "abbreviations",
bare_category_parent = "places",
},
["abbreviations of political divisions!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "abbreviations of places",
},
["abbreviations of prefectures!"] = {
-- For categorizing abbreviations of prefectures of e.g. Japan
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s",
bare_category_breadcrumb = "prefectures",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces!"] = {
-- For categorizing abbreviations of provinces of e.g. Canada
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s",
bare_category_breadcrumb = "provinces",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of provinces and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]",
bare_category_breadcrumb = "provinces and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of regions!"] = {
-- For categorizing abbreviations of regions of e.g. Italy
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s",
bare_category_breadcrumb = "regions",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states!"] = {
-- For categorizing abbreviations of states of e.g. the United States
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]",
bare_category_breadcrumb = "states and territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of states and union territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]",
bare_category_breadcrumb = "states and union territories",
bare_category_parent = "abbreviations of political divisions",
},
["abbreviations of territories!"] = {
full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]",
bare_category_breadcrumb = "territories",
bare_category_parent = "abbreviations of political divisions",
},
["ABBREVIATION_OF country"] = {
link = false,
default = {"Abbreviations of countries"},
},
["ABBREVIATION_OF county"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF department"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF district"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF division"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF FORMER country"] = {
link = false,
default = {"Abbreviations of former countries"},
},
["ABBREVIATION_OF FORMER place"] = {
link = false,
default = {"Abbreviations of former places"},
},
["ABBREVIATION_OF place"] = {
link = false,
default = {"Abbreviations of places"},
},
["ABBREVIATION_OF prefecture"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF province"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF region"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF state"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF subpolity"] = {
link = false,
default = {"Abbreviations of political divisions"},
},
["ABBREVIATION_OF territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
["ABBREVIATION_OF union territory"] = {
link = false,
fallback = "ABBREVIATION_OF subpolity",
},
---------- Archaic forms ----------
["archaic forms of places!"] = {
full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "archaic forms",
bare_category_parent = "places",
},
["ARCHAIC_FORM_OF place"] = {
link = false,
default = {"Archaic forms of places"},
},
---------- Clippings ----------
["clippings of places!"] = {
full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "clippings",
bare_category_parent = "places",
},
["CLIPPING_OF place"] = {
link = false,
default = {"Clippings of places"},
},
---------- Dated forms ----------
["dated forms of places!"] = {
full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "dated forms",
bare_category_parent = "places",
},
["DATED_FORM_OF place"] = {
link = false,
default = {"Dated forms of places"},
},
---------- Derogatory names ----------
["derogatory names for cities!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["derogatory names for continents!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for continents"},
},
["derogatory names for countries!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for countries"},
},
["derogatory names for places!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s",
bare_category_breadcrumb = "derogatory names",
bare_category_parent = "nicknames for places",
},
["derogatory names for states!"] = {
full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "derogatory names for places",
addl_bare_category_parents = {"nicknames for states"},
},
["DEROGATORY_NAME_FOR capital"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR city"] = {
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR continent"] = {
link = false,
default = {"Derogatory names for continents"},
},
["DEROGATORY_NAME_FOR country"] = {
link = false,
default = {"Derogatory names for countries"},
},
["DEROGATORY_NAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR place"] = {
link = false,
default = {"Derogatory names for places"},
},
["DEROGATORY_NAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Derogatory names for cities"},
},
["DEROGATORY_NAME_FOR state"] = {
link = false,
default = {"Derogatory names for states"},
},
["DEROGATORY_NAME_FOR town"] = {
link = false,
default = {"Derogatory names for cities"},
},
---------- Ellipses ----------
["ellipses of places!"] = {
full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s",
bare_category_breadcrumb = "ellipses",
bare_category_parent = "places",
},
["ELLIPSIS_OF place"] = {
link = false,
default = {"Ellipses of places"},
},
---------- Former long-form names ----------
["former long-form names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former long-form names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}},
},
["former long-form names of places!"] = {
full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form",
bare_category_parent = "former names of places",
},
["FORMER_LONG_FORM_OF country"] = {
link = false,
default = {"Former long-form names of countries"},
},
["FORMER_LONG_FORM_OF place"] = {
link = false,
default = {"Former long-form names of places"},
},
---------- Former names ----------
["former names of capitals!"] = {
full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name",
bare_category_breadcrumb = "capitals",
bare_category_parent = "former names of settlements",
},
["former names of countries!"] = {
full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name",
bare_category_breadcrumb = "countries",
bare_category_parent = "former names of places",
},
["former names of places!"] = {
full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name",
bare_category_breadcrumb = "former names",
bare_category_parent = "places",
},
["former names of political divisions!"] = {
full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name",
bare_category_breadcrumb = "political divisions",
bare_category_parent = "former names of places",
},
["former names of polities!"] = {
full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name",
bare_category_breadcrumb = "polities",
bare_category_parent = "former names of places",
},
["former names of settlements!"] = {
full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name",
bare_category_breadcrumb = "settlements",
bare_category_parent = "former names of political divisions",
},
["FORMER_NAME_OF capital"] = {
link = false,
default = {"Former names of capitals"},
},
["FORMER_NAME_OF country"] = {
link = false,
default = {"Former names of countries"},
},
["FORMER_NAME_OF place"] = {
link = false,
default = {"Former names of places"},
},
["FORMER_NAME_OF polity"] = {
link = false,
default = {"Former names of polities"},
},
["FORMER_NAME_OF region"] = {
link = false,
fallback = "FORMER_NAME_OF subpolity",
},
["FORMER_NAME_OF settlement"] = {
link = false,
default = {"Former names of settlements"},
},
["FORMER_NAME_OF subpolity"] = {
link = false,
default = {"Former names of political divisions"},
},
---------- Former nicknames ----------
["former nicknames for cities!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})",
bare_category_breadcrumb = "cities",
bare_category_parent = "former nicknames for places",
addl_bare_category_parents = {"nicknames for cities"},
},
["former nicknames for places!"] = {
full_category_link = "no-longer-used [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "former",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}},
},
["FORMER_NICKNAME_FOR capital"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR city"] = {
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR place"] = {
link = false,
default = {"Former nicknames for places"},
},
["FORMER_NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Former nicknames for cities"},
},
["FORMER_NICKNAME_FOR town"] = {
link = false,
default = {"Former nicknames for cities"},
},
---------- Former official names ----------
["former official names of countries!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "former official names of places",
addl_bare_category_parents = {{name = "former names of countries", sort = "official"}},
},
["former official names of places!"] = {
full_category_link = "no-longer-[[use]]d [[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "former names of places",
},
["FORMER_OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Former official names of countries"},
},
["FORMER_OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Former official names of places"},
},
---------- Long-form names ----------
["long-form names of countries!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "long-form names of places",
},
["long-form names of places!"] = {
full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s",
bare_category_breadcrumb = "long-form names",
bare_category_parent = "places",
},
["LONG_FORM_OF country"] = {
link = false,
default = {"Long-form names of countries"},
},
["LONG_FORM_OF place"] = {
link = false,
default = {"Long-form names of places"},
},
---------- Nicknames ----------
["nicknames for cities!"] = {
full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]",
bare_category_breadcrumb = "cities",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"cities"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "continents",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"continents"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"countries"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "places",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"places"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "states",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"states"},
},
["NICKNAME_FOR capital"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR city"] = {
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR continent"] = {
link = false,
default = {"Nicknames for continents"},
},
["NICKNAME_FOR country"] = {
link = false,
default = {"Nicknames for countries"},
},
["NICKNAME_FOR metropolitan city"] = {
-- "metropolitan city" doesn't fall back to "city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR place"] = {
link = false,
default = {"Nicknames for places"},
},
["NICKNAME_FOR prefecture-level city"] = {
-- "prefecture-level city" doesn't fall back to "city" but things like "county-level city" and
-- "subprovincial city" fall back to "prefecture-level city"
link = false,
default = {"Nicknames for cities"},
},
["NICKNAME_FOR state"] = {
link = false,
default = {"Nicknames for states"},
},
["NICKNAME_FOR town"] = {
link = false,
default = {"Nicknames for cities"},
},
---------- Obsolete forms ----------
["obsolete forms of places!"] = {
full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s",
bare_category_breadcrumb = "obsolete forms",
bare_category_parent = "places",
},
["OBSOLETE_FORM_OF place"] = {
link = false,
default = {"Obsolete forms of places"},
},
---------- Official names ----------
["official names of countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of places",
},
["official names of former countries!"] = {
full_category_link = "[[official]] [[name]]s of [[country|countries]] that no longer [[exist]]",
bare_category_breadcrumb = "countries",
bare_category_parent = "official names of former places",
},
["official names of former places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]",
bare_category_breadcrumb = "official names",
bare_category_parent = "former places",
addl_bare_category_parents = {{name = "official names of places", sort = "former"}},
},
["official names of places!"] = {
full_category_link = "[[official]] [[name]]s of [[place]]s",
bare_category_breadcrumb = "official names",
bare_category_parent = "places",
},
["OFFICIAL_NAME_OF country"] = {
link = false,
default = {"Official names of countries"},
},
["OFFICIAL_NAME_OF FORMER country"] = {
link = false,
default = {"Official names of former countries"},
},
["OFFICIAL_NAME_OF FORMER place"] = {
link = false,
default = {"Official names of former places"},
},
["OFFICIAL_NAME_OF place"] = {
link = false,
default = {"Official names of places"},
},
---------- Official nicknames ----------
["official nicknames for places!"] = {
full_category_link = "[[official]] [[nickname]]s for [[place]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for places",
},
["official nicknames for states!"] = {
-- For categorizing official nicknames for states of e.g. the United States
full_category_link = "[[official]] [[nicknames]] for [[state]]s",
bare_category_breadcrumb = "official",
bare_category_parent = "nicknames for states",
addl_bare_category_parents = {"states"},
},
["OFFICIAL_NICKNAME_FOR place"] = {
link = false,
default = {"Official nicknames for places"},
},
["OFFICIAL_NICKNAME_FOR state"] = {
link = false,
default = {"Official nicknames for states"},
},
}
export.plural_placetype_to_singular = {}
for sg_placetype, spec in pairs(export.placetype_data) do
if spec.plural then
export.plural_placetype_to_singular[spec.plural] = sg_placetype
end
end
------------------------------------------------------------------------------------------
-- ZH: Chinese localization functions --
------------------------------------------------------------------------------------------
--[==[
Get the Chinese display name for a placetype, resolving through the enwikt fallback chain.
`holonym_placetype` (optional string) provides context for placetypes like `capital city`
whose Chinese term depends on the containing administrative level (country → 首都,
province → 省會, state → 首府, etc.).
Returns two values: zh_name (string or array of regional variants), zh_suffix (string,
array, or nil). Returns nil, nil if no Chinese data is available for the placetype or
any of its fallbacks.
]==]
function export.get_zh_placetype_name(placetype, holonym_placetype)
placetype = export.resolve_placetype_aliases(placetype)
local zh_name, zh_suffix, zh_by_holonym = m_zh_data.get_zh_placetype_props(placetype, export)
if zh_name then
local resolved = m_zh_data.resolve_zh_name(zh_name, zh_by_holonym, holonym_placetype)
return resolved, zh_suffix
end
return nil, nil
end
--[==[
Get only the Chinese suffix for a placetype.
Used when rendering holonym `:pref`/`:suf` modifiers in Chinese: the suffix is appended
directly to the holonym name (e.g. `s:suf/New York` → 紐約州; `c:pref/Georgia` → 格魯吉亞國).
Returns a string, an array of regional variants, or nil if no suffix is defined.
]==]
function export.get_zh_placetype_suffix(placetype)
placetype = export.resolve_placetype_aliases(placetype)
local _, zh_suffix = m_zh_data.get_zh_placetype_props(placetype, export)
return zh_suffix
end
--[==[
Chinese placetype "pluralization" — a no-op, since Chinese has no grammatical plural.
Accepts and returns a string or an array (for multi-variant names) unchanged.
Provided so that call sites shared with the English path can call a uniform function.
]==]
function export.pluralize_zh_placetype(zh_name)
return zh_name
end
--[==[
Get the entry preposition for Chinese display: "in" or "of".
Identical to `get_placetype_entry_preposition` in semantics; the Chinese rendering
maps these to different constructions:
"in" → 位於 [holonyms] 的 [placetype]
"of" → [holonyms] 的 [placetype] (no 位於 prefix)
]==]
export.get_zh_entry_preposition = export.get_placetype_entry_preposition
-- Re-export Chinese data tables so that [[Module:place]] only needs to require
-- this module rather than both this module and [[Module:place/zh-data]] separately.
export.zh_strings = m_zh_data.zh_strings
export.zh_qualifiers = m_zh_data.zh_qualifiers
export.zh_extra_info_labels = m_zh_data.zh_extra_info_labels
export.zh_capital_label_by_holonym_type = m_zh_data.zh_capital_label_by_holonym_type
export.format_zh_name = m_zh_data.format_zh_name
return export
1oe9nhd0lj0667dlkp5lvycfq3zned3
Module:Transclude
828
3438213
9759389
9759364
2026-05-14T12:30:41Z
TongcyDai
53191
9759389
Scribunto
text/plain
local export = {}
local anchors_module = "Module:anchors"
local debug_track_module = "Module:debug/track"
local headword_data_module = "Module:headword/data"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local links_module = "Module:links"
local pages_module = "Module:pages"
local parameters_module = "Module:parameters"
local parse_interface_module = "Module:parse interface"
local place_module = "Module:place"
local string_char_module = "Module:string/char"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_remove_comments_module = "Module:string/removeComments"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local m_place = require(place_module)
local zhlang = require(languages_module).getByCode("zh")
local concat = table.concat
local find = string.find
local insert = table.insert
local ipairs = ipairs
local lower = string.lower
local match = string.match
local pairs = pairs
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local function codepoint(...)
codepoint = require(string_utilities_module).codepoint
return codepoint(...)
end
local function contains(...)
contains = require(table_module).contains
return contains(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function find_templates(...)
find_templates = require(template_parser_module).find_templates
return find_templates(...)
end
local function full_link(...)
full_link = require(links_module).full_link
return full_link(...)
end
local function is_preview(...)
is_preview = require(pages_module).is_preview
return is_preview(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_comments(...)
remove_comments = require(string_remove_comments_module)
return remove_comments(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function senseid(...)
senseid = require(anchors_module).senseid
return senseid(...)
end
local function show_labels(...)
show_labels = require(labels_module).show_labels
return show_labels(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function u(...)
u = require(string_char_module)
return u(...)
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/transclude/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("transclude/" .. page)
return true
end
-- Split an argument on comma, but not comma followed by whitespace.
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
-- Split list of labels. For compatibility, we allow splitting on semicolon, but will convert to splitting on
-- comma not followed by space, for compatibility with other modules/params.
local function split_labels(val)
if val:find(";") then
track("label-with-semicolon")
return split(val, ";")
else
return split_on_comma(val)
end
end
-- From [[Template:gloss]]
-- local gloss_left = '<span class="mention-gloss-paren">(</span><span class="mention-gloss">'
-- local gloss_right = '</span><span class="mention-gloss-paren">)</span>'
local gloss_left = '<span class="mention-gloss-paren">(</span><span class="mention-gloss">'
local gloss_right = '</span><span class="mention-gloss-paren">)</span>'
-- Ensure that Wikicode (template calls, bracketed links, HTML, bold/italics, etc.) displays literally in error messages
-- by inserting a Unicode word-joiner symbol after all characters that may trigger Wikicode interpretation. Replacing
-- with equivalent HTML escapes doesn't work because they are displayed literally. I could not get this to work using
-- <nowiki>...</nowiki> (those tags display literally), using using {{#tag:nowiki|...}} (same thing) or using
-- mw.getCurrentFrame():extensionTag("nowiki", ...) (everything gets converted to a strip marker
-- `UNIQ--nowiki-00000000-QINU` or similar). FIXME: This is a massive hack; there must be a better way.
local function escape_wikicode(text)
text = text:gsub("([%[<'{])", "%1" .. u(0x2060))
return text
end
local function preprocess(frame, text)
if text:find("{") or text:find("<math>") then
return frame:preprocess(text)
else
return text
end
end
local function ine(arg)
return arg ~= "" and arg or nil
end
local function discard(offset, iter, obj, index)
return iter, obj, index + offset
end
local function remove_templates_if(haystack, predicate)
local remaining = {}
local last_start = 1
for template in find_templates(haystack) do
local name = template:get_name()
if name ~= nil and predicate(name, template:get_arguments(), next(remaining) == nil) then
local index = template.index
if last_start < index then
local chunk = haystack:sub(last_start, index - 1)
if chunk:find("%S") then
insert(remaining, chunk)
end
end
last_start = index + template.raw:len()
end
end
if last_start == 1 then
return haystack
else
insert(remaining, haystack:sub(last_start))
return concat(remaining)
end
end
local function copy_unnamed_args_maybe_except_code(to, from, deny_list, first_argument)
first_argument = first_argument or 2
for _, value in discard(first_argument - 1, ipairs(from)) do
if not deny_list or not contains(deny_list, value) then
insert(to, value)
end
end
end
local function parse_form_of_directive(value, param)
local new_directive, new_value = value:match("^@([a-z -]+):(.*)$")
if not new_directive then
if param then
error(("Misformatted value %s=%s; should be e.g. 'place_acronym_of=" ..
"@init of:ehemalige jugoslawische Republik Mazedonien' to replace " ..
"'@acronym of:...' with '@init of:...'"):format(
param, value))
else
error(("Misformatted form-of directive '%s'; should be e.g. '@ellip of:Santiago del Estero'"):format(
value))
end
end
if not m_place.all_form_of_directives[new_directive] then
local known_directives = {}
for k, _ in pairs(m_place.all_form_of_directives) do
insert(known_directives, '"' .. k .. '"')
end
table.sort(known_directives)
known_directives = concat(known_directives, ", ")
if param then
error(("Unrecognized form-of directive '%s' in replacement @-directive %s=%s; " ..
"recognized directives are %s"):format(new_directive, param, value, known_directives))
else
error(("Unrecognized form-of directive '%s' in '%s'; recognized directives are %s"):format(
new_directive, value, known_directives))
end
else
-- canonicalize replacement directive aliases
new_directive = m_place.all_form_of_directives[new_directive].alias_of or new_directive
end
return new_directive, new_value
end
local function handle_definition_template(data)
local name, args, transclude_args = data.name, data.template_args, data.transclude_args
if name == "place" or name == "Place" then
local place_form_of_directives = data.place_form_of_directives
return {
should_remove = true,
must_be_first = true,
generate = function(data)
if data.formatted_to and data.formatted_to ~= "" then
error("{{place}} cannot be used in conjunction with |to=")
end
local place_args = {}
local langcode = data.lang:getCode()
local place_translation_follows = transclude_args.place_translation_follows
local include_place_extra_info = transclude_args.include_place_extra_info
local drop_extra = not include_place_extra_info -- false or unspecified
local extra_info_overridden_set = {}
for _, extra_info_spec in pairs(m_place.extra_info_args) do
local overriding_arg = transclude_args["place_" .. extra_info_spec.arg]
if overriding_arg and overriding_arg[1] then
extra_info_overridden_set[extra_info_spec.arg] = true
end
end
local form_of_overridden_args = {}
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
if not directive_spec.alias_of then
local transclude_key = "place_" .. (form_of_directive:gsub(" ", "_"))
local transclude_value = transclude_args[transclude_key]
if transclude_value then
local new_directive, new_value
if transclude_value:find("^@") then
new_directive, new_value = parse_form_of_directive(transclude_value, transclude_key)
else
new_directive = form_of_directive
new_value = transclude_value
end
form_of_overridden_args[form_of_directive] = {
new_directive = new_directive,
new_value = new_value,
}
if directive_spec.default_foreign and place_translation_follows == nil then
place_translation_follows = true
end
end
end
end
place_args[1] = langcode
place_args.pagename = data.source
-- If form-of directives specified in the numeric args to {{tcl}}, they get inserted before any
-- numeric args taken from {{place}}.
local next_numarg = 2
for _, form_of_directive in ipairs(place_form_of_directives) do
place_args[next_numarg] = ("@%s:%s"):format(form_of_directive.directive, form_of_directive.value)
next_numarg = next_numarg + 1
end
local saw_tcl_t
local saw_t
-- Copy the arguments but drop translations, maybe the "extra info", and maybe the numbered args
-- (if tcl= given)
local tcl_arg = ine(args.tcl)
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" or base == "tcl_tid" then
saw_tcl_t = true -- otherwise ignore
elseif base == "tcl_nolb" then
data.nolb = val -- otherwise ignore
elseif base == "t" or base == "tid" then
if transclude_args.t[1] then
-- ignore it if the user specified t= in {{tcl}}, otherwise keep it unless tcl_t is given
else
saw_t = true
end
elseif m_place.extra_info_arg_map[base] and extra_info_overridden_set[base] then
-- don't copy any extra info arguments that we will be overriding, in case there are more
-- original values than overrides for this particular argument
elseif base == "" then
if not tcl_arg and key > 1 then
-- We want keys starting at 2 to go into positions starting at `next_numarg`.
place_args[next_numarg + key - 2] = val
end
else
place_args[key] = val
end
end
local function sub_plus(t)
if t:find("+") then
t = t:gsub("+", replacement_escape(data.source))
end
return t
end
-- If tcl= given, copy its value into the numeric args.
if tcl_arg then
place_args[next_numarg] = tcl_arg
next_numarg = next_numarg + 1
place_args.a = nil
end
if transclude_args.t[1] then
local argno = 1
for _, t in ipairs(transclude_args.t) do
if t ~= "-" then
place_args["t" .. (argno == 1 and "" or argno)] = sub_plus(t)
argno = argno + 1
end
end
elseif langcode ~= "zh" then
if saw_tcl_t then
for key, val in pairs(args) do
local base, num = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" then
place_args["t" .. num] = sub_plus(val)
elseif base == "tcl_tid" then
place_args["tid" .. num] = val
end
end
elseif saw_t then
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "t" or base == "tid" then
place_args[key] = val
end
end
else
place_args["t"] = data.source
place_args["tid"] = data.id
end
end
place_args["sort"] = data.sort
if data.nocat then
place_args["nocat"] = "1"
end
if transclude_args.place_addl then
place_args.addl = transclude_args.place_addl
end
if data.no_gloss then
place_args["def"] = "-"
else
local gloss = data.gloss
-- Copy overriding extra info values. They are in the term language rather than Chinese,
-- which we signal through `extra_info_overridden_set`.
for _, extra_info_spec in pairs(m_place.extra_info_args) do
for i, v in ipairs(transclude_args["place_" .. extra_info_spec.arg]) do
place_args[extra_info_spec.arg .. (i == 1 and "" or i)] = v
end
end
if not args.tcl_noextratext and not tcl_arg and gloss ~= "" then
-- Copy text after {{place}} into {{place}}, unless tcl= or tcl_noextratext= is given.
local first_free = 2
while place_args[first_free] ~= nil do first_free = first_free + 1 end
if place_args[first_free - 1]:find("<<") then
-- new-style argument; concatenate to end of argument
if not gloss:find("^[,;.]") then
gloss = " " .. gloss
end
place_args[first_free - 1] = place_args[first_free - 1] .. gloss
else
-- old-style argument; add as separate argument
if gloss:find("^,") then
place_args[first_free] = gloss:gsub("^, *", "")
elseif gloss:find("^;") then
place_args[first_free] = ";"
place_args[first_free + 1] = gloss:gsub("^; *", "")
else
-- the "*" ensures no extra comma
place_args[first_free] = "*" .. gloss:gsub("^ *", "")
end
end
end
end
return m_place.format {
template_args = place_args,
from_tcl = true,
drop_extra_info = drop_extra,
extra_info_overridden_set = extra_info_overridden_set,
form_of_overridden_args = form_of_overridden_args,
translation_follows = place_translation_follows,
}
end,
}
elseif name == "abbreviation of" or name == "abbr of" or name == "abbrev of"
or name == "acronym of" or name == "ellipsis of"
or name == "contraction of" or name == "contr of"
or name == "initialism of" or name == "init of"
or name == "short for" or name == "synonym of" then
return {
should_remove = true,
must_be_first = true,
generate = function(data)
local formatted_gloss = ""
if not data.no_gloss then
local formatted_link = full_link{
term = args[2], alt = args[3], lang = data.source_lang, id = args["id"]
}
local after_link = ""
if data.gloss ~= "" then
local separator = (args["nodot"] and "") or ((args["dot"] or ";") .. " ")
after_link = separator .. data.gloss
end
-- formatted_gloss = " " .. gloss_left .. formatted_link .. after_link .. gloss_right
formatted_gloss = gloss_left .. formatted_link .. after_link .. gloss_right
end
return data.formatted_to .. full_link{
term = data.source, lang = data.source_lang, id = data.id
} .. formatted_gloss
end,
}
end
return nil
end
function export.show(frame)
local boolean = {type = "boolean"}
local list = {list = true}
local required = {required = true}
local params = {
[1] = {required = true, type = "language"}, -- langcode of target language (the current entry's language)
[2] = {list = true, required = true}, -- source Chinese term to transclude from and/or form-or directives
id = true, -- can have multiple comma-separated IDs
sort = true,
nogloss = {default = false, type = "boolean"},
no_truncate_gloss = boolean,
-- Normally, we ignore most of the extra info (capital, largest city, official name, etc.) when transcluding
-- {{place}} because the given terms are in Chinese and will likely differ from language to language.
include_place_extra_info = boolean,
-- Normally the translation (the transcluded page or overriding value in t=) comes first with the definition
-- following in parens, but that may not produce sensible results in some cases.
place_translation_follows = boolean,
place_addl = true,
lb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nolb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nocat = boolean,
to = boolean,
t = list,
indent = true,
dot = boolean,
pagename = true,
}
for _, extra_arg_spec in ipairs(m_place.extra_info_args) do
params["place_" .. extra_arg_spec.arg] = list
end
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
params["place_" .. (form_of_directive:gsub(" ", "_"))] = directive_spec.alias_of and
{alias_of = "place_" .. (directive_spec.alias_of:gsub(" ", "_"))} or true
end
local args = process_params(frame:getParent().args, params)
local pagename = args.pagename or mw.loadData(headword_data_module).pagename
local language = args[1]
local language_code = language:getCode()
local source
local place_form_of_directives = {}
if args[2][1]:find("^@") then
-- form-of directives in place of source
for i, arg in ipairs(args[2]) do
if arg:find("^@") then
local directive, value = parse_form_of_directive(arg)
insert(place_form_of_directives, {
directive = directive,
value = value,
})
elseif i ~= #args[2] then
error(("When form-of directives are specified, the source must come last, but saw source %s=%s " ..
"when higher-numbered arguments exist"):format(i + 1, arg))
else
source = arg
end
end
if not source then
source = place_form_of_directives[#place_form_of_directives].value:gsub("<.*", "")
end
elseif args[2][2] then
error(("Extraneous argument 3=%s"):format(args[2][2]))
else
source = args[2][1]
end
local source_lang = zhlang
local source_langcode = source_lang:getCode()
local source_langname = source_lang:getFullName()
local ids = args.id and split(args.id, ",") or {""}
local sort = args.sort
if source == "+" then
source = pagename
end
local source_is_current_page = source == pagename
local copy_sortkey = (sort == nil) and source_is_current_page
local no_gloss = args.nogloss
local labels = args.lb and split_labels(args.lb) or {}
local to = args.to
local function issue_error(msg)
if source_is_current_page and is_preview() then
msg = msg .. ". NOTE: You are in preview mode. If you're previewing only part of the page, try previewing the full page, as the error may go away."
end
error(msg)
end
local content = mw.title.new(source):getContent()
if content == nil then
issue_error("Couldn't find the entry [[" .. source .. "]]")
end
-- Remove HTML comments.
content = remove_comments(content)
-- Remove <ref></ref> with nothing inside the first <ref>.
content = content:gsub("< *[rR][eE][fF] *>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref ...></ref> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref/> with nothing inside the <ref>.
content = content:gsub("< *[rR][eE][fF] */ *>", "")
-- Remove <ref .../> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*/ *>", "")
-- TODO: Handle <nowiki> (it's more complex than just cutting it out too).
local retlines = {}
for _, id in ipairs(ids) do
local nolb
local found_labels = {}
local line_start, line
if id == "" then
id = nil
end
if id ~= nil then
local senseid_start, senseid_end = content:find("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
if senseid_start == nil then
senseid_start, senseid_end = content:find("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
end
if senseid_start == nil then
local alternatives = nil
for id in content:gmatch("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
for id in content:gmatch("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
if alternatives then
alternatives = ": Alternatives for |id= are: " .. alternatives
else
alternatives = ""
end
issue_error("Couldn't find the template {{[[Template:senseid|senseid]]|" .. source_langcode .. "|" .. id .. "}} within entry [[" .. source .. "]]" .. alternatives)
end
-- Do the following manually instead of using regex or iterators in hopes of saving memory.
local newline, pound = 10, 35
line_start = senseid_start
while line_start > 0 and content:byte(line_start - 1) ~= newline do line_start = line_start - 1 end
local def_start = line_start
while content:byte(def_start) == pound do def_start = def_start + 1 end
local line_end = senseid_end
while line_end < content:len() and content:byte(line_end + 1) ~= newline do line_end = line_end + 1 end
line = content:sub(def_start, senseid_start - 1) .. content:sub(senseid_end + 1, line_end)
else -- id == nil
--l10n: 更改為匹配「漢語」或「汉语」,並相容簡繁轉換
-- local _, start_source = find(content, "==[ \t]*" .. pattern_escape(source_langname) .. "[ \t]*==")
local _, start_source = find(content, "==[ \t]*[漢汉][語语][ \t]*==")
if not start_source then
issue_error(("Couldn't find L2 header for source language '%s' on page [[%s]]"):format(source_langname,
source))
end
-- Find index of start of next language; may be nil if no language follows.
local _, start_next_lang = find(content, "\n==[^=\n]+==", start_source, false)
content = content:sub(start_source, start_next_lang)
while true do
local next_line_start
_, next_line_start = find(content, "\n#+[^:*]", line_start, false)
if not next_line_start then
break
end
if line_start then
local first_line = match(content, "(.-)%f[\n%z]", line_start)
local next_line = match(content, "(.-)%f[\n%z]", next_line_start + 1)
issue_error(("No id specified and saw two definition lines '%s' and '%s' for source language '%s' on page [[%s]]"):format(
escape_wikicode(first_line), escape_wikicode(next_line), source_langname, source))
end
line_start = next_line_start + 1
end
if not line_start then
issue_error(("Couldn't find any definition lines for source language '%s' on page [[%s]]"):format(
source_langname, source))
end
line = match(content, "(.-)%f[\n%z]", line_start)
end
--[[
if to == nil then
local i = line_start
while i > 1 do
i = i - 1 -- i is now the index of the newline
while i > 1 and content:byte(i - 1) ~= 0xA do i = i - 1 end
local header = content:match("^===+([^=\n]+)===+ *\n", i)
if header then
to = (header:match("Verb") ~= nil)
break
end
end
end
]]--
-- TODO: Remove this error once <nowiki> is handled correctly (see above TODO).
if line:find("< *nowiki%W") or line:find("< */ *nowiki%W") then
error("Cannot handle <nowiki>")
end
-- Quick'n'dirty templatization of manual cats so that the below code also works for them.
for _, v in ipairs({{source_langcode .. ":", "c"}, {source_lang:getCanonicalName() .. " ", "cln"}, {"", "cat"}}) do
line = line:gsub("%[%[ *Category *: *" .. v[1] .. "([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1}}")
line = line:gsub("%[%[ *Category *%: *" .. v[1] .. "([^%]|]*)%|([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1|sort=%2}}")
end
-- Extract template information.
local cats = {}
local cats_cln = {}
local cats_top = {}
local encountered_label = false
local generator = nil
local sortkeys = {}
local sortkey_most_frequent = nil
local sortkey_most_frequent_n = 0
local function process_template(name, tempargs, is_at_the_start)
-- Expand any nested templates in template arguments.
local name = name and name:lower() or "" -- l10n
for k, v in pairs(tempargs) do
tempargs[k] = preprocess(frame, v)
end
local supports_sortkey = false
local should_remove = true -- If set, removes the template from the line after processing.
local must_be_first = false -- If set, ensures that nothing (except for removed templates) preceeds this template.
local definition_template_handler = handle_definition_template {
name = name,
template_args = tempargs,
transclude_args = args,
place_form_of_directives = place_form_of_directives,
}
if definition_template_handler ~= nil then
if generator ~= nil then
error("Encountered {{[[Template:" .. name .. "|" .. name .. "]]}} even though a full definition template has already been processed")
end
should_remove = definition_template_handler.should_remove
must_be_first = definition_template_handler.must_be_first
generator = definition_template_handler.generate
elseif name == "categorize" or name == "cat" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangname" or name == "cln" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangcode" or name == "topics" or name == "top" or name == "C" or name == "c" then
copy_unnamed_args_maybe_except_code(cats_top, tempargs)
supports_sortkey = true
elseif name == "label" or name == "lbl" or name == "lb" then
if encountered_label then
error("Encountered multiple {{[[Template:label|label]]}} templates in the definition line")
end
encountered_label = true
copy_unnamed_args_maybe_except_code(found_labels, tempargs)
supports_sortkey = true
must_be_first = true
elseif name == "defdate" or name == "defdt" or name == "century" or name == "ref" or name == "refn" or name == "rfd-sense" or name == "rfv-sense" or name == "senseid" or name == "sid" or name == "zh-div" then
-- Remove and do nothing.
else
-- We are dealing with a template other than the above hard-coded ones.
-- If it contains the language code, we cannot handle it.
if tempargs[1] == source_langcode then
error("Cannot handle template {{[[Template:" .. name .. "|" .. name .. "]]}}")
end
supports_sortkey = tempargs["sort"] or tempargs["sort1"] -- TODO: This doesn't handle the case where there is only sortn but not sort1/sort.
should_remove = false -- Leave the template in and just copy it, e.g. [[Template:,]], [[Template:gloss]], [[Template:qualifier]], [[Template:w]] etc.
end
if supports_sortkey then
if tempargs["sort1"] ~= nil then
error("Cannot handle multiple sort keys")
end
local sortkey = tempargs["sort"]
if sortkey ~= nil then
if sortkeys[sortkey] == nil then
sortkeys[sortkey] = 1
else
sortkeys[sortkey] = sortkeys[sortkey] + 1
end
if sortkeys[sortkey] > sortkey_most_frequent_n then
sortkey_most_frequent = sortkey
sortkey_most_frequent_n = sortkeys[sortkey]
end
end
end
if must_be_first and not is_at_the_start then
error("The template {{[[Template:" .. name .. "|" .. name .. "]]}} should occur to the front of the definition line")
end
return should_remove
end
line = remove_templates_if(line, process_template)
line = line:gsub("^%s+", ""):gsub("%s+$", "") -- Prune ends.
-- Tidy up the remaining definition (to be used as a gloss).
-- Truncate full sentences after a period, as they won't be formatted well as a gloss. Require a space after
-- the period as a possible way of reducing false positives with abbreviations.
local gloss = line
if not args.no_truncate_gloss then
-- l10n: 中文使用全形句號截斷,不需要英文縮寫防誤判邏輯
--[[
-- Substitute a list of known abbreviations that shouldn't mark the end-point of the gloss, which will be reinserted after truncation.
local abbrevs = {"A.D.", "B.C.", "B.C.E.", "c[af]?.", "C.E.", "e.g.", "fl.", "i.[ae].", "r.", "sc.", "scil.", "viz.", "vs?."}
local substitutes, i = {}, 0
local function insert_substitute(m)
i = i + 1
insert(substitutes, m)
return u(0x80000 + i)
end
for j, abbrev in ipairs(abbrevs) do
abbrev = abbrev:gsub("%.", "%%.")
:gsub("%f[^.].", " *%0")
abbrevs[j] = abbrev
gloss = gloss:gsub("%f[%S]" .. abbrev .. "%f[%s]", insert_substitute)
end
gloss = gloss:gsub("%s*%. .*$", "")
:gsub("\242[\128-\191]*", function(m)
return substitutes[codepoint(m) - 0x80000]
end)
]]--
gloss = gloss:gsub("。.*$", "")
end
-- l10n: 註解掉英文首字母小寫邏輯,將句尾半形句號改為去除全形句號
-- gloss = gloss:gsub("^%u", lower):gsub("%.$", "")
gloss = gloss:gsub("。$", "")
gloss = gloss:gsub("^{{1|([^}|]*)}}", "%1") -- Remove [[Template:1]]
local _, link_end, link_dest_head, link_dest_tail, link_face_head, link_face_tail = gloss:find("^%[%[(.)([^|%]]*)|(.)([^%]]*)%]%]") -- Remove [[foo|Foo]]
if link_end ~= nil and link_dest_tail == link_face_tail and link_face_head:lower() == link_dest_head then
gloss = "[[" .. link_dest_head .. link_dest_tail .. gloss:sub(link_end - 1)
end
gloss = preprocess(frame, gloss)
if copy_sortkey then
sort = sortkey_most_frequent
end
local formatted_senseid = ""
local formatted_senseid_close = ""
if id ~= nil then
formatted_senseid = senseid(language, id, "span")
if formatted_senseid:find("<span") then
formatted_senseid_close = "</span>"
end
end
local formatted_categories = args.nocat and "" or (
((next(cats ) == nil) and "" or frame:expandTemplate({title = "cat", args = {language_code, unpack(cats )}})) ..
((next(cats_cln) == nil) and "" or frame:expandTemplate({title = "cln", args = {language_code, unpack(cats_cln)}})) ..
((next(cats_top) == nil) and "" or frame:expandTemplate({title = "top", args = {language_code, unpack(cats_top)}}))
)
-- l10n: 中文動詞不加 to
-- local formatted_to = to and "to " or ""
local formatted_to = ""
local formatted_definition
if generator ~= nil then
local data = {
frame = frame, lang = language, source = source, source_lang = source_lang, id = id,
sort = sort, nocat = args.nocat, no_gloss = no_gloss, gloss = gloss, formatted_to = formatted_to,
}
formatted_definition = generator(data)
nolb = data.nolb or nolb
else
local formatted_link = full_link{term = source, lang = source_lang, id = id}
-- l10n: 移除全形括號前的空格
-- local formatted_gloss = no_gloss and "" or (" " .. gloss_left .. gloss .. gloss_right)
local formatted_gloss = no_gloss and "" or (gloss_left .. gloss .. gloss_right)
formatted_definition = formatted_to .. formatted_link .. formatted_gloss
end
nolb = args.nolb or nolb
local labels_to_ignore = nil
local ignore_all_labels = false
if nolb then
if nolb == "+" or nolb == "1" or nolb == "*" then
ignore_all_labels = true
else
labels_to_ignore = split_labels(nolb)
end
end
local this_labels = deep_copy(labels)
if not ignore_all_labels then
copy_unnamed_args_maybe_except_code(this_labels, found_labels, labels_to_ignore, 1)
end
local formatted_labels = (next(this_labels) == nil) and "" or (show_labels{labels = this_labels, lang = language, sort = sort} .. " ")
insert(retlines, formatted_senseid .. formatted_categories .. formatted_labels .. formatted_definition ..
formatted_senseid_close .. (args.dot and "。" or ""))
end
return concat(retlines, "\n" .. (args.indent or "#") .. " ")
end
return export
7k9zij5wlmlk29s5oyzjgf9c3zmpnjs
welkne
0
3438650
9759390
2026-05-14T12:39:15Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==中古英語== {{was fwotd|enm|2026|5月|18日}} ===其他形式=== * {{alter|enm|welken|welkene|welcon|welkyn}} * {{alter|enm|walcne|walken|walkene|walkne|walkon|walkyn|walkyne||EA|ES|WM}} * {{alter|enm|weolcne|weolkene|weolkne|weolkyn|wolcne|wolken|wolkene|wolkne|wolkon|wolkyn||S|WM}} ===詞源=== {{etymid|enm|天空}} {{inh+|enm|ang|wolcnu}},{{m|ang|wolcen}}、{{m|ang|wolcn}} 的複數,{{inh+|enm|gmw-pro|*wolkn}}。 帶有 {{IPAch…」的新頁面
9759390
wikitext
text/x-wiki
==中古英語==
{{was fwotd|enm|2026|5月|18日}}
===其他形式===
* {{alter|enm|welken|welkene|welcon|welkyn}}
* {{alter|enm|walcne|walken|walkene|walkne|walkon|walkyn|walkyne||EA|ES|WM}}
* {{alter|enm|weolcne|weolkene|weolkne|weolkyn|wolcne|wolken|wolkene|wolkne|wolkon|wolkyn||S|WM}}
===詞源===
{{etymid|enm|天空}}
{{inh+|enm|ang|wolcnu}},{{m|ang|wolcen}}、{{m|ang|wolcn}} 的複數,{{inh+|enm|gmw-pro|*wolkn}}。
帶有 {{IPAchar|/ɛ/}} 的形式反映了古英語旁系形式 {{m|ang||*welcn}}、{{m|ang||*welcne}},或者是從 {{IPAchar|/wɔ/}} 到 {{IPAchar|/wɛ/}} 的異化變化(西密德蘭方言為 {{IPAchar|/wœ/}};對比 {{m|enm|dwele}}、{{m|enm|Wednesday}});帶有 {{IPAchar|/ɔ/}} 的中古英語形式可能反映了這種變化的進一步發展,而不是{{m+|ang|wolcn}} 元音的直接延續。在西密德蘭,帶有 {{IPAchar|/a/}} 的形式反映了麥西亞古英語在唇音與 {{IPAchar|/l/}}、{{IPAchar|/r/}} 之間從 {{IPAchar|/o/}} 到 {{IPAchar|/ɑ/}} 的發展(參見 {{m|enm|morwe}}),而在東盎格利亞和埃塞克斯,它們大概反映了後來更為局限的從 {{IPAchar|/wɔl/}} 到 {{IPAchar|/wal/}} 的發展。
===發音===
* {{IPA|enm|/ˈwɛlkən/|/ˈwɛlk(ə)nə/}}
* {{IPA|enm|/ˈwalkən/|/ˈwalk(ə)nə/|aa=<<EA>>, <<ES>>, <<WM>>}}
* {{IPA|enm|/ˈwœlkən/|/ˈwœlk(ə)nə/|/ˈwɔlkən/|/ˈwɔlk(ə)nə/|aa=<<S>>, <<WM>>}}
===名詞===
{{enm-noun|-}}
# [[高空]],[[大氣層]]{{gloss|[[天氣]]現象發生的地方}}
# 從[[地球]]上[[可見]]的[[外太空]];[[蒼穹]],[[天空]]
#* {{RQ:Chaucer Canterbury Tales|title=Clerk's Tale|section=part 6|folio=liiii|verso=1|passage=Thus hath this pytous day a blyſful ende / For euery man & woman doth hys myght / Thys daye in myrth and reuel to dyſpende / Tyl on the '''welken''' ſhone the ſterres bryght / For more ſolempne in euery mannes ſyght / Thys feeſt was, and greater of coſtage / Then was the reuel of her mariage|t=因此這令人憐憫的一日迎來了幸福的終結 / 因為所有男女皆竭盡全力 / 在歡笑與狂歡中度過此日 / 直到'''蒼穹'''中閃耀著明亮的群星 / 因為在眾人眼中,這場筵席 / 顯得更加莊重,花費亦更為巨大 / 甚至勝過她出嫁時的狂歡}}
# {{lb|enm|中世紀|_|宇宙學|nocat=1}} 其中一個[[天球]]
# {{tlb|enm|Early ME}} [[雲]]{{gloss|[[水滴]]的[[聚集體]]}}
====派生語彙====
* {{desc|en|welkin|qq=文學}}
====參考資料====
* {{R:MED Online|welken|n|MED52126}}
{{C|enm|天文學|大氣|天氣}}
18gjdktclvxc84ll4bdob5k3g53c4kk
9759391
9759390
2026-05-14T12:39:41Z
TongcyDai
53191
9759391
wikitext
text/x-wiki
==中古英語==
{{was fwotd|enm|2026|5月|18日}}
===其他形式===
* {{alter|enm|welken|welkene|welcon|welkyn}}
* {{alter|enm|walcne|walken|walkene|walkne|walkon|walkyn|walkyne||EA|ES|WM}}
* {{alter|enm|weolcne|weolkene|weolkne|weolkyn|wolcne|wolken|wolkene|wolkne|wolkon|wolkyn||S|WM}}
===詞源===
{{etymid|enm|天空}}
{{inh+|enm|ang|wolcnu}},{{m|ang|wolcen}}、{{m|ang|wolcn}} 的複數,{{inh+|enm|gmw-pro|*wolkn}}。
帶有 {{IPAchar|/ɛ/}} 的形式反映了古英語旁系形式 {{m|ang||*welcn}}、{{m|ang||*welcne}},或者是從 {{IPAchar|/wɔ/}} 到 {{IPAchar|/wɛ/}} 的異化變化(西密德蘭方言為 {{IPAchar|/wœ/}};對比 {{m|enm|dwele}}、{{m|enm|Wednesday}});帶有 {{IPAchar|/ɔ/}} 的中古英語形式可能反映了這種變化的進一步發展,而不是{{m+|ang|wolcn}} 元音的直接延續。在西密德蘭,帶有 {{IPAchar|/a/}} 的形式反映了麥西亞古英語在唇音與 {{IPAchar|/l/}}、{{IPAchar|/r/}} 之間從 {{IPAchar|/o/}} 到 {{IPAchar|/ɑ/}} 的發展(參見 {{m|enm|morwe}}),而在東盎格利亞和埃塞克斯,它們大概反映了後來更為局限的從 {{IPAchar|/wɔl/}} 到 {{IPAchar|/wal/}} 的發展。
===發音===
* {{IPA|enm|/ˈwɛlkən/|/ˈwɛlk(ə)nə/}}
* {{IPA|enm|/ˈwalkən/|/ˈwalk(ə)nə/|aa=<<EA>>, <<ES>>, <<WM>>}}
* {{IPA|enm|/ˈwœlkən/|/ˈwœlk(ə)nə/|/ˈwɔlkən/|/ˈwɔlk(ə)nə/|aa=<<S>>, <<WM>>}}
===名詞===
{{enm-noun|-}}
# [[高空]],[[大氣層]]{{gloss|[[天氣]]現象發生的地方}}
# 從[[地球]]上[[可見]]的[[外太空]];[[蒼穹]],[[天空]]
#* {{RQ:Chaucer Canterbury Tales|title=Clerk's Tale|section=part 6|folio=liiii|verso=1|passage=Thus hath this pytous day a blyſful ende / For euery man & woman doth hys myght / Thys daye in myrth and reuel to dyſpende / Tyl on the '''welken''' ſhone the ſterres bryght / For more ſolempne in euery mannes ſyght / Thys feeſt was, and greater of coſtage / Then was the reuel of her mariage|t=因此這令人憐憫的一日迎來了幸福的終結 / 因為所有男女皆竭盡全力 / 在歡笑與狂歡中度過此日 / 直到'''蒼穹'''中閃耀著明亮的群星 / 因為在眾人眼中,這場筵席 / 顯得更加莊重,花費亦更為巨大 / 甚至勝過她出嫁時的狂歡}}
# {{lb|enm|中世紀|_|宇宙學|nocat=1}} [[天球]]
# {{tlb|enm|Early ME}} [[雲]]{{gloss|[[水滴]]的[[聚集體]]}}
====派生語彙====
* {{desc|en|welkin|qq=文學}}
====參考資料====
* {{R:MED Online|welken|n|MED52126}}
{{C|enm|天文學|大氣|天氣}}
0vw72oihfot05ei2olj4g69epbwyygc
Wiktionary:外語每日一詞/2026年/5月18日
4
3438651
9759392
2026-05-14T12:40:20Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|enm|welkne|名詞|2026|5月|18日| # [[高空]],[[大氣層]]{{gloss|[[天氣]]現象發生的地方}} # 從[[地球]]上[[可見]]的[[外太空]];[[蒼穹]],[[天空]] # {{lb|enm|中世紀|_|宇宙學|nocat=1}} [[天球]] # {{tlb|enm|Early ME}} [[雲]]{{gloss|[[水滴]]的[[聚集體]]}} }}」的新頁面
9759392
wikitext
text/x-wiki
{{FWOTD|enm|welkne|名詞|2026|5月|18日|
# [[高空]],[[大氣層]]{{gloss|[[天氣]]現象發生的地方}}
# 從[[地球]]上[[可見]]的[[外太空]];[[蒼穹]],[[天空]]
# {{lb|enm|中世紀|_|宇宙學|nocat=1}} [[天球]]
# {{tlb|enm|Early ME}} [[雲]]{{gloss|[[水滴]]的[[聚集體]]}}
}}
gpkpp9zixt19aprrjywjv9d4schs4p7
filandón
0
3438652
9759393
2026-05-14T12:46:28Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==阿斯圖里亞斯語== {{was fwotd|ast|2026|5月|19日}} [[File:Filandón, por Luis Álvarez Catalá.jpg|thumb|路易斯·阿爾瓦雷斯·卡塔拉所作的《Filandón》(1872)]] ===詞源=== 源自 {{af|ast|filar|-ón}}。 ===發音=== {{ast-pr}} ===名詞=== {{ast-noun|m|filandones}} (或 '''{{l|ast|filandonos}}''') # {{lb|ast|historical|尤指女性}} [[紡紗]]與[[交際]]的[[晚間]][[聚會]] #: {{syn|ast|filaderu|fil…」的新頁面
9759393
wikitext
text/x-wiki
==阿斯圖里亞斯語==
{{was fwotd|ast|2026|5月|19日}}
[[File:Filandón, por Luis Álvarez Catalá.jpg|thumb|路易斯·阿爾瓦雷斯·卡塔拉所作的《Filandón》(1872)]]
===詞源===
源自 {{af|ast|filar|-ón}}。
===發音===
{{ast-pr}}
===名詞===
{{ast-noun|m|filandones}} (或 '''{{l|ast|filandonos}}''')
# {{lb|ast|historical|尤指女性}} [[紡紗]]與[[交際]]的[[晚間]][[聚會]]
#: {{syn|ast|filaderu|fila|filadoriu|q3=西部}}
#* {{quote-book|ast|title=Tiempos de Nublina|year=2004|author=Xosé María Rodríguez|location=(Patsuezu)|passage=Aiquí dientro faíase la mayor parte la vida porque’l cuartón yera too: ḷḷariega ya comedor; ḷḷugar d’esfoyaza ya matanza, au se curaba l’adobu ya onde s’axuntaba la vecindá al '''filandón''' nas ḷḷargas tardes-nueites de la seronda yal iviernu.|t=這裡發生了生活的大部分,因為主房間就是一切:是廚房和餐廳,是剝葉子和屠宰的地方,醃肉在這裡醃製,在秋冬的漫漫長夜裡,鄰居們聚集在這裡參加'''晚間聚會 '''。}}
# 於家中舉辦的[[晚間]][[聚會]]或[[社交]][[活動]],尤見於冬季
# 一種大眾參與的[[舞蹈]],常見於[[婚禮]]等大型活動
===延伸閱讀===
* {{R:ast:DGLA}}
* {{R:ast:DALLA}}
kfekraism3l7ajfirdwdyphn7ko574m
Wiktionary:外語每日一詞/2026年/5月19日
4
3438653
9759394
2026-05-14T12:47:04Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|ast|filandón|名詞|2026|5月|19日| # {{lb|ast|historical|尤指女性}} [[紡紗]]與[[交際]]的[[晚間]][[聚會]] # 於家中舉辦的[[晚間]][[聚會]]或[[社交]][[活動]],尤見於冬季 # 一種大眾參與的[[舞蹈]],常見於[[婚禮]]等大型活動 }}」的新頁面
9759394
wikitext
text/x-wiki
{{FWOTD|ast|filandón|名詞|2026|5月|19日|
# {{lb|ast|historical|尤指女性}} [[紡紗]]與[[交際]]的[[晚間]][[聚會]]
# 於家中舉辦的[[晚間]][[聚會]]或[[社交]][[活動]],尤見於冬季
# 一種大眾參與的[[舞蹈]],常見於[[婚禮]]等大型活動
}}
6e8bv84lv79zobekwfau9zzua27ts16
filandones
0
3438654
9759395
2026-05-14T12:47:18Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==阿斯圖里亞斯語== ===名詞=== {{head|ast|名詞變格形}} # {{plural of|ast|filandón}}」的新頁面
9759395
wikitext
text/x-wiki
==阿斯圖里亞斯語==
===名詞===
{{head|ast|名詞變格形}}
# {{plural of|ast|filandón}}
s2nx0tzrwgwd0vniyuhzthn6e3pz1pg
Tân Bắc
0
3438655
9759404
2026-05-14T14:00:22Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==越南語== ===詞源=== {{vi-etym-sino|新北}}。 ===發音=== {{vi-IPA}} ===專有名詞=== {{vi-proper noun|head=[[tân|Tân]] [[bắc|Bắc]]}} # {{tcl|vi|新北|id=Q244898}}」的新頁面
9759404
wikitext
text/x-wiki
==越南語==
===詞源===
{{vi-etym-sino|新北}}。
===發音===
{{vi-IPA}}
===專有名詞===
{{vi-proper noun|head=[[tân|Tân]] [[bắc|Bắc]]}}
# {{tcl|vi|新北|id=Q244898}}
l72h9lakeaibiunvvsansczmk3hlk4b
Category:漢語 臺灣地名
14
3438656
9759410
2026-05-14T14:21:01Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat}}」的新頁面
9759410
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
노란색
0
3438657
9759420
2026-05-14T14:57:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==朝鮮語== ===詞源=== 源自 {{compound|ko|노란|t1=黄色|pos1={{m|ko|노랗다}}的現在時限定詞形式|색(色)|t2=颜色}}。 ===發音=== {{ko-IPA}} ===名詞=== {{ko-noun}} # [[黃色]] #: {{color panel|FFFF00}} ===參見=== {{table:colors/ko}} {{C|ko|彩虹顏色|黃色}}」的新頁面
9759420
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{compound|ko|노란|t1=黄色|pos1={{m|ko|노랗다}}的現在時限定詞形式|색(色)|t2=颜色}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# [[黃色]]
#: {{color panel|FFFF00}}
===參見===
{{table:colors/ko}}
{{C|ko|彩虹顏色|黃色}}
5ohbwvj2rbsvge18ot51xy166k8lye3
Category:漢語 阿爾及利亞
14
3438658
9759446
2026-05-14T16:56:42Z
TongcyBot
83009
養貓
9759446
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Mexico City
0
3438659
9759448
2026-05-14T17:13:13Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==英語== {{wp}} {{commonscat}} ===詞源=== {{cal|en|es-MX|Ciudad de México}}。 ===發音=== * {{IPA|en|/ˈmɛk.sɪ.kəʊ sɪti/|a=UK}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-Mexico City.wav|a=Southern England}} * {{IPA|en|/ˈmɛk.sɪ.koʊ sɪɾi/|a=US}} ===專有名詞=== {{en-prop|head=[[Mexico]] {{U|city}}}} # {{tcl|en|墨西哥城|id=Q1489}} #: {{syn|en|Mexico<q:罕用>}} #* {{quote-book |en |year=1971 |author=w:Lyndon Johnson |chap…」的新頁面
9759448
wikitext
text/x-wiki
==英語==
{{wp}}
{{commonscat}}
===詞源===
{{cal|en|es-MX|Ciudad de México}}。
===發音===
* {{IPA|en|/ˈmɛk.sɪ.kəʊ sɪti/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Mexico City.wav|a=Southern England}}
* {{IPA|en|/ˈmɛk.sɪ.koʊ sɪɾi/|a=US}}
===專有名詞===
{{en-prop|head=[[Mexico]] {{U|city}}}}
# {{tcl|en|墨西哥城|id=Q1489}}
#: {{syn|en|Mexico<q:罕用>}}
#* {{quote-book
|en
|year=1971
|author=w:Lyndon Johnson
|chapter=The New Age of Regionalism
|title=w:The Vantage Point
|url=https://archive.org/details/vantagepointpers00john/
|publisher=w:Holt, Reinhart & Winston
|ISBN=0-03-084492-4
|LCCN=74-102146
|OCLC=1067880747
|page=348
|pageurl=https://archive.org/details/vantagepointpers00john/page/348/
|text=I went to '''Mexico City''' on April 15, 1966, to unveil a statue of Abraham Lincoln, who had been a contemporary of Mexican leader Benito Juarez and was revered in Mexico, as in so many other nations.}}
#* {{quote-journal|en|author=Michael Snyder|title=A Guide to Guadalajara, Mexico’s City of Makers|magazine=w:The New York Times Style Magazine|url=https://www.nytimes.com/2023/11/17/t-magazine/locals-guide-guadalajara-mexico.html|date=2023-11-17|passage=The writer Juan Rulfo, whose 1955 novel, “Pedro Páramo,” still stands as the central monument of modern Mexican literature, grew up in Jalisco and vividly depicted its arid, sun-blasted landscapes in his writing, while the architect Luis Barragán, who moved from Guadalajara to '''Mexico City''' in the 1930s, carried with him an appreciation for his home state’s cloisters, haciendas and humble country buildings, which he translated in his own work as austere, inscrutable volumes of stucco.|archiveurl=https://archive.ph/Zam8s|archivedate=2023-11-17}}
====派生詞彙====
* {{l|en|Mexico City policy}}
====派生語彙====
* {{desc|he|מֶקְסִיקוֹ סִיטִי|tr=meksiko siti|bor=1}}
* {{desc|ja|メキシコシティ|tr=Mekishiko Shiti|bor=1}}
* {{desc|ko|멕시코시티|bor=1}}
* {{desc|th|เม็กซิโกซิตี้|tr=mék-sí-goo-sí-dtii|bor=1}}
===參見===
* {{l|en|chilango}}
{{table:Mexico/en}}
==丹麥語==
===專有名詞===
{{head|da|專有名詞|head=Mexico City}}
# {{tcl|da|墨西哥城|id=Q1489}}
==瑞典語==
===專有名詞===
{{sv-proper noun|n|head=Mexico City}}
# {{tcl|da|墨西哥城|id=Q1489}}
k429mudw8xmo0obnss41jtx1tpicl40
Category:源自墨西哥西班牙語的英語仿譯詞
14
3438660
9759450
2026-05-14T17:13:29Z
TongcyBot
83009
養貓
9759450
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自墨西哥西班牙語的葡萄牙語詞
14
3438661
9759452
2026-05-14T17:14:08Z
TongcyBot
83009
養貓
9759452
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:源自墨西哥西班牙語的葡萄牙語仿譯詞
14
3438662
9759453
2026-05-14T17:14:13Z
TongcyBot
83009
養貓
9759453
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Ciudad de México
0
3438663
9759455
2026-05-14T17:14:42Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Ciudad de Mexico}} ==塞爾維亞-克羅地亞語== {{wp|sh:}} ===詞源=== {{bor+|sh|es|Ciudad de México}}。 ===專有名詞=== {{sh-propn||m|tr=Сјудад де Мехико}} # {{tcl|sh|墨西哥城|id=Q1489}} #: {{syn|sh|Meksiko Siti|Sjudad de Mehiko|Ciudad de Mexico}} ====相關詞彙==== * {{l|sh|Meksiko}} ==西班牙語== {{wp|es:}} ===發音=== {{es-pr|Ciudad de Méjico}} ===專有名詞=== {{es-prop|f|head=ciudad|C…」的新頁面
9759455
wikitext
text/x-wiki
{{also|Ciudad de Mexico}}
==塞爾維亞-克羅地亞語==
{{wp|sh:}}
===詞源===
{{bor+|sh|es|Ciudad de México}}。
===專有名詞===
{{sh-propn||m|tr=Сјудад де Мехико}}
# {{tcl|sh|墨西哥城|id=Q1489}}
#: {{syn|sh|Meksiko Siti|Sjudad de Mehiko|Ciudad de Mexico}}
====相關詞彙====
* {{l|sh|Meksiko}}
==西班牙語==
{{wp|es:}}
===發音===
{{es-pr|Ciudad de Méjico}}
===專有名詞===
{{es-prop|f|head=[[ciudad|Ciudad]] [[de]] [[México]]}}
# {{tcl|es|墨西哥城|id=Q1489}}
#: {{syn|es|México D.F.|CDMX<q:abbreviation>}}
#* {{quote-journal|es|author=Sean Lyngaas|title=El cártel de Sinaloa rastreó con un hacker a un funcionario del FBI y mató a posibles informantes, según Gobierno de EE.UU.|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2025/06/28/eeuu/cartel-sinaloa-hacker-fbi-informantes-trax|date=2025-06-28|passage=Un cártel de droga mexicano contrató a un hacker para vigilar los movimientos de un alto funcionario del FBI en '''Ciudad de México''' en 2018 o incluso antes, recopilando información del sistema de cámaras de la ciudad que permitió al cártel matar a posibles informantes del FBI, según dijo en un nuevo informe el inspector general del Departamento de Justicia.|translation=}}
===參見===
{{table:Mexico/es}}
4lnawsfmy7wy7iqv1r5crwx3xhdq0v2
9759457
9759455
2026-05-14T17:14:59Z
TongcyDai
53191
9759457
wikitext
text/x-wiki
{{also|Ciudad de Mexico}}
==塞爾維亞-克羅地亞語==
{{wp|sh:}}
===詞源===
{{bor+|sh|es|Ciudad de México}}。
===專有名詞===
{{sh-propn||m|tr=Сјудад де Мехико}}
# {{tcl|sh|墨西哥城|id=Q1489}}
#: {{syn|sh|Meksiko Siti|Sjudad de Mehiko|Ciudad de Mexico}}
====相關詞彙====
* {{l|sh|Meksiko}}
==西班牙語==
{{wp|es:}}
===發音===
{{es-pr|Ciudad de Méjico}}
===專有名詞===
{{es-prop|f|head=[[ciudad|Ciudad]] [[de]] [[México]]}}
# {{tcl|es|墨西哥城|id=Q1489}}
#: {{syn|es|México D.F.|CDMX<q:縮寫>}}
#* {{quote-journal|es|author=Sean Lyngaas|title=El cártel de Sinaloa rastreó con un hacker a un funcionario del FBI y mató a posibles informantes, según Gobierno de EE.UU.|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2025/06/28/eeuu/cartel-sinaloa-hacker-fbi-informantes-trax|date=2025-06-28|passage=Un cártel de droga mexicano contrató a un hacker para vigilar los movimientos de un alto funcionario del FBI en '''Ciudad de México''' en 2018 o incluso antes, recopilando información del sistema de cámaras de la ciudad que permitió al cártel matar a posibles informantes del FBI, según dijo en un nuevo informe el inspector general del Departamento de Justicia.|translation=}}
===參見===
{{table:Mexico/es}}
0vfm55000h3xqvyb9q1j5q01u51ufdd
Template:Es-prop
10
3438664
9759456
2026-05-14T17:14:58Z
TongcyDai
53191
重定向页面至[[Template:Es-proper noun]]
9759456
wikitext
text/x-wiki
#REDIRECT [[Template:es-proper noun]]
7tow3mbdyprc7yvumpxybt599vyh5ew
မၚ်္ဂလ
0
3438665
9759460
2026-05-14T17:18:36Z
咽頭べさ
92223
[[w:WP:AES|←]]建立內容為「{{also|မင်္ဂလ}} ==孟語== ===詞源=== {{bor+|mnw|pi|မၚ်္ဂလ}} ===發音=== * {{IPA|mnw|/mɛ̀ɑŋɡɛ̆̀ɬɛ̆̀/}} * {{audio|mnw|LL-Q13349 (mnw)-Intobesa (咽頭べさ)-{{PAGENAME}}.wav}} ===名詞=== {{head|mnw|名词}} # [[仪式]],[[典礼]] # [[曼荼羅]] ==巴利语== ===其他形式=== {{pi-alt|Latn=maṅgala}} ===發音=== {{IPA|pi|/məŋɡələ/}} * {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-…」的新頁面
9759460
wikitext
text/x-wiki
{{also|မင်္ဂလ}}
==孟語==
===詞源===
{{bor+|mnw|pi|မၚ်္ဂလ}}
===發音===
* {{IPA|mnw|/mɛ̀ɑŋɡɛ̆̀ɬɛ̆̀/}}
* {{audio|mnw|LL-Q13349 (mnw)-Intobesa (咽頭べさ)-{{PAGENAME}}.wav}}
===名詞===
{{head|mnw|名词}}
# [[仪式]],[[典礼]]
# [[曼荼羅]]
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
{{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
3j3h6axbzv92nrcfc5a77vlaemv4tcc
9759719
9759460
2026-05-15T02:37:10Z
Sayonzei
40728
9759719
wikitext
text/x-wiki
{{also|မင်္ဂလ}}
==孟語==
===詞源===
{{bor+|mnw|pi|မၚ်္ဂလ}}。
===發音===
* {{IPA|mnw|/mɛ̀ɑŋɡɛ̆̀ɬɛ̆̀/}}
* {{audio|mnw|LL-Q13349 (mnw)-Intobesa (咽頭べさ)-{{PAGENAME}}.wav}}
===名詞===
{{head|mnw|名词}}
# [[仪式]],[[典礼]]
# [[曼荼羅]]
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
* {{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
7ezoviuf9y9fdgjh80jzhbj7xbfzeli
9759720
9759719
2026-05-15T02:42:24Z
Sayonzei
40728
/* 名詞 */
9759720
wikitext
text/x-wiki
{{also|မင်္ဂလ}}
==孟語==
===詞源===
{{bor+|mnw|pi|မၚ်္ဂလ}}。
===發音===
* {{IPA|mnw|/mɛ̀ɑŋɡɛ̆̀ɬɛ̆̀/}}
* {{audio|mnw|LL-Q13349 (mnw)-Intobesa (咽頭べさ)-{{PAGENAME}}.wav}}
===名詞===
{{head|mnw|名词}}
# [[仪式]],[[典礼]]
# [[曼伽羅]]
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
* {{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
p6qudcog1uug90aiot7cqiicgrilqbu
9759722
9759720
2026-05-15T02:45:10Z
Sayonzei
40728
/* 名詞 */
9759722
wikitext
text/x-wiki
{{also|မင်္ဂလ}}
==孟語==
===詞源===
{{bor+|mnw|pi|မၚ်္ဂလ}}。
===發音===
* {{IPA|mnw|/mɛ̀ɑŋɡɛ̆̀ɬɛ̆̀/}}
* {{audio|mnw|LL-Q13349 (mnw)-Intobesa (咽頭べさ)-{{PAGENAME}}.wav}}
===名詞===
{{head|mnw|名词}}
# [[仪式]],[[典礼]]
# {{lb|mnw|佛教}} [[吉祥佛]]
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
* {{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
asqhf9t4bq9ynk3onpevtf6wa1c8lsc
မင်္ဂလ
0
3438666
9759461
2026-05-14T17:20:30Z
咽頭べさ
92223
[[w:WP:AES|←]]建立內容為「{{also|မၚ်္ဂလ}} ==巴利语== ===其他形式=== {{pi-alt|Latn=maṅgala}} ===發音=== {{IPA|pi|/məŋɡələ/}} * {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}} ===形容词=== {{pi-adj}} # {{pi-sc||maṅgala}} ===名詞=== {{pi-noun|n}} # {{pi-sc||maṅgala}}」的新頁面
9759461
wikitext
text/x-wiki
{{also|မၚ်္ဂလ}}
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
{{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
6yk9u5khgn695sj5mvgmbvmc2gjdbkw
9759721
9759461
2026-05-15T02:45:06Z
Sayonzei
40728
9759721
wikitext
text/x-wiki
{{also|မၚ်္ဂလ}}
==緬甸語==
===詞源===
{{bor+|my|pi|Maṅgala}}。{{doublet|my|မင်္ဂလာ}}。
===發音===
{{my-IPA|မင်္ဂ'လ}}
===專有名詞===
{{my-proper noun}}
# {{lb|my|佛教}} [[吉祥佛]]
====近義詞====
*{{l|my|မင်္ဂလဘုရား}}
{{c|my|佛}}
==巴利语==
===其他形式===
{{pi-alt|Latn=maṅgala}}
===發音===
* {{IPA|pi|/məŋɡələ/}}
* {{audio|pi|LL-Q100271134-Intobesa (咽頭べさ)-မၚ်္ဂလ.wav}}
===形容词===
{{pi-adj}}
# {{pi-sc||maṅgala}}
====變格====
{{pi-decl-noun|g=m}}
{{pi-decl-noun|မင်္ဂလာ|ā|f}}
{{pi-decl-noun|g=n}}
===名詞===
{{pi-noun|n}}
# {{pi-sc||maṅgala}}
n92m0t0u7on5n6rhx0ff1pfcxsrnolk
Category:Rhymes:加利西亞語/ambja
14
3438667
9759467
2026-05-14T20:47:20Z
TongcyBot
83009
養貓
9759467
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:加利西亞語/ambja/2音節
14
3438668
9759468
2026-05-14T20:47:26Z
TongcyBot
83009
養貓
9759468
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:斯洛伐克語/ia/3音節
14
3438669
9759469
2026-05-14T20:47:31Z
TongcyBot
83009
養貓
9759469
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 贊比亞
14
3438670
9759470
2026-05-14T20:47:38Z
TongcyBot
83009
養貓
9759470
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 贊比亞
14
3438671
9759471
2026-05-14T20:47:45Z
TongcyBot
83009
養貓
9759471
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 贊比亞
14
3438672
9759472
2026-05-14T20:47:51Z
TongcyBot
83009
養貓
9759472
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 贊比亞
14
3438673
9759473
2026-05-14T20:48:02Z
TongcyBot
83009
養貓
9759473
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 贊比亞
14
3438674
9759474
2026-05-14T20:48:09Z
TongcyBot
83009
養貓
9759474
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印尼語 贊比亞
14
3438675
9759475
2026-05-14T20:48:16Z
TongcyBot
83009
養貓
9759475
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 贊比亞
14
3438676
9759476
2026-05-14T20:48:24Z
TongcyBot
83009
養貓
9759476
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 外名
14
3438677
9759477
2026-05-14T20:48:32Z
TongcyBot
83009
養貓
9759477
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 贊比亞
14
3438678
9759478
2026-05-14T20:48:43Z
TongcyBot
83009
養貓
9759478
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛伐克語 贊比亞
14
3438679
9759479
2026-05-14T20:48:51Z
TongcyBot
83009
養貓
9759479
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯瓦希里語 贊比亞
14
3438680
9759480
2026-05-14T20:48:59Z
TongcyBot
83009
養貓
9759480
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 贊比亞
14
3438681
9759481
2026-05-14T20:49:06Z
TongcyBot
83009
養貓
9759481
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 贊比亞
14
3438682
9759482
2026-05-14T20:49:14Z
TongcyBot
83009
養貓
9759482
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 贊比亞
14
3438683
9759483
2026-05-14T20:49:21Z
TongcyBot
83009
養貓
9759483
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 贊比亞
14
3438684
9759484
2026-05-14T20:49:32Z
TongcyBot
83009
養貓
9759484
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英語 贊比亞
14
3438685
9759485
2026-05-14T20:49:40Z
TongcyBot
83009
養貓
9759485
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 贊比亞
14
3438686
9759486
2026-05-14T20:49:47Z
TongcyBot
83009
養貓
9759486
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西班牙語 贊比亞
14
3438687
9759487
2026-05-14T20:49:55Z
TongcyBot
83009
養貓
9759487
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:齊切瓦語 贊比亞
14
3438688
9759488
2026-05-14T20:50:02Z
TongcyBot
83009
養貓
9759488
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:漢語 津巴布韋
14
3438689
9759492
2026-05-14T20:52:52Z
TongcyBot
83009
養貓
9759492
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:印尼語/abwe
14
3438690
9759498
2026-05-14T20:58:21Z
TongcyBot
83009
養貓
9759498
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:印尼語/abwe/3音節
14
3438691
9759499
2026-05-14T20:58:26Z
TongcyBot
83009
養貓
9759499
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:修納語 津巴布韋
14
3438692
9759500
2026-05-14T20:58:32Z
TongcyBot
83009
養貓
9759500
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 津巴布韋
14
3438693
9759501
2026-05-14T20:58:39Z
TongcyBot
83009
養貓
9759501
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南非語 津巴布韋
14
3438694
9759502
2026-05-14T20:58:45Z
TongcyBot
83009
養貓
9759502
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印尼語 津巴布韋
14
3438695
9759503
2026-05-14T20:58:52Z
TongcyBot
83009
養貓
9759503
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 津巴布韋
14
3438696
9759504
2026-05-14T20:58:58Z
TongcyBot
83009
養貓
9759504
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:捷克語 津巴布韋
14
3438697
9759505
2026-05-14T20:59:05Z
TongcyBot
83009
養貓
9759505
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛伐克語 津巴布韋
14
3438698
9759506
2026-05-14T20:59:12Z
TongcyBot
83009
養貓
9759506
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯瓦希里語 津巴布韋
14
3438699
9759507
2026-05-14T20:59:18Z
TongcyBot
83009
養貓
9759507
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 津巴布韋
14
3438700
9759508
2026-05-14T20:59:24Z
TongcyBot
83009
養貓
9759508
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 津巴布韋
14
3438701
9759509
2026-05-14T20:59:31Z
TongcyBot
83009
養貓
9759509
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 津巴布韋
14
3438702
9759510
2026-05-14T20:59:37Z
TongcyBot
83009
養貓
9759510
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自修納語的印尼語詞
14
3438703
9759511
2026-05-14T20:59:44Z
TongcyBot
83009
養貓
9759511
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 津巴布韋
14
3438704
9759512
2026-05-14T20:59:50Z
TongcyBot
83009
養貓
9759512
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:聰加語 國家
14
3438705
9759514
2026-05-14T20:59:56Z
TongcyBot
83009
養貓
9759514
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:聰加語 名稱分類列表
14
3438706
9759515
2026-05-14T21:00:02Z
TongcyBot
83009
養貓
9759515
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:聰加語 津巴布韋
14
3438707
9759516
2026-05-14T21:00:11Z
TongcyBot
83009
養貓
9759516
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:聰加語專有名詞
14
3438708
9759517
2026-05-14T21:00:18Z
TongcyBot
83009
養貓
9759517
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 津巴布韋
14
3438709
9759518
2026-05-14T21:00:23Z
TongcyBot
83009
養貓
9759518
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英語 津巴布韋
14
3438710
9759519
2026-05-14T21:00:34Z
TongcyBot
83009
養貓
9759519
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 津巴布韋
14
3438711
9759520
2026-05-14T21:00:40Z
TongcyBot
83009
養貓
9759520
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:齊切瓦語 津巴布韋
14
3438712
9759521
2026-05-14T21:00:46Z
TongcyBot
83009
養貓
9759521
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:地理文化區域
14
3438713
9759588
2026-05-14T22:28:52Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat}}」的新頁面
9759588
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印地語 利比亞
14
3438714
9759625
2026-05-14T23:15:33Z
TongcyBot
83009
養貓
9759625
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Antarktikā
0
3438715
9759643
2026-05-14T23:34:12Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Antarktika|Antarktíka}} ==拉脫維亞語== ===專有名詞=== {{head|lv|專有名詞變格形|g=f}} # {{infl of|lv|Antarktika||loc|s}}」的新頁面
9759643
wikitext
text/x-wiki
{{also|Antarktika|Antarktíka}}
==拉脫維亞語==
===專有名詞===
{{head|lv|專有名詞變格形|g=f}}
# {{infl of|lv|Antarktika||loc|s}}
loxfdpqh57sxeaw4gezx59onm8pqyh6
Category:丹麥語 澳大利亞
14
3438716
9759659
2026-05-14T23:54:27Z
TongcyBot
83009
養貓
9759659
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:德語 澳大利亞
14
3438717
9759660
2026-05-14T23:54:36Z
TongcyBot
83009
養貓
9759660
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 澳大利亞
14
3438718
9759661
2026-05-14T23:54:44Z
TongcyBot
83009
養貓
9759661
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 地質學
14
3438719
9759662
2026-05-14T23:54:50Z
TongcyBot
83009
養貓
9759662
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 地球科學
14
3438720
9759663
2026-05-14T23:54:56Z
TongcyBot
83009
養貓
9759663
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 澳大利亞
14
3438721
9759664
2026-05-14T23:55:04Z
TongcyBot
83009
養貓
9759664
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 大洋洲國家
14
3438722
9759665
2026-05-14T23:55:10Z
TongcyBot
83009
養貓
9759665
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 大洋洲
14
3438723
9759666
2026-05-14T23:55:16Z
TongcyBot
83009
養貓
9759666
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:日語 利比亞
14
3438724
9759671
2026-05-15T00:10:12Z
TongcyBot
83009
養貓
9759671
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 利比亞
14
3438725
9759672
2026-05-15T00:10:21Z
TongcyBot
83009
養貓
9759672
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 利比亞
14
3438726
9759674
2026-05-15T00:10:31Z
TongcyBot
83009
養貓
9759674
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:哈薩克語 利比亞
14
3438727
9759675
2026-05-15T00:10:39Z
TongcyBot
83009
養貓
9759675
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 利比亞
14
3438728
9759676
2026-05-15T00:10:48Z
TongcyBot
83009
養貓
9759676
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:緬甸語 利比亞
14
3438729
9759678
2026-05-15T00:11:01Z
TongcyBot
83009
養貓
9759678
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:傣仂語 非洲
14
3438730
9759687
2026-05-15T00:29:07Z
TongcyBot
83009
養貓
9759687
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 非洲
14
3438731
9759689
2026-05-15T00:30:30Z
TongcyBot
83009
養貓
9759689
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威尼斯語 非洲
14
3438732
9759690
2026-05-15T00:30:45Z
TongcyBot
83009
養貓
9759690
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:阿斯圖里亞斯語/eɾika
14
3438733
9759695
2026-05-15T00:36:19Z
TongcyBot
83009
養貓
9759695
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:阿斯圖里亞斯語/eɾika/4音節
14
3438734
9759696
2026-05-15T00:36:24Z
TongcyBot
83009
養貓
9759696
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 美國
14
3438735
9759697
2026-05-15T00:36:32Z
TongcyBot
83009
養貓
9759697
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 北美洲國家
14
3438736
9759698
2026-05-15T00:36:38Z
TongcyBot
83009
養貓
9759698
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 北美洲
14
3438737
9759699
2026-05-15T00:36:43Z
TongcyBot
83009
養貓
9759699
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:利古里亞語 美洲
14
3438738
9759700
2026-05-15T00:36:49Z
TongcyBot
83009
養貓
9759700
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:火山
14
3438740
9759704
2026-05-15T00:39:57Z
TongcyBot
83009
養貓
9759704
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 北美洲
14
3438741
9759707
2026-05-15T00:41:48Z
TongcyBot
83009
養貓
9759707
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
sudamericana
0
3438742
9759709
2026-05-15T00:42:31Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==意大利語== ===形容詞=== {{head|it|形容詞變格形}} # {{adj form of|it|sudamericano||f|s}} ===名詞=== {{it-noun|f}} # {{female equivalent of|it|sudamericano}} ==西班牙語== ===發音=== {{es-pr}} ===名詞=== {{es-noun|f}} # {{female equivalent of|es|sudamericano}} ===形容詞=== {{head|es|形容詞變格形}} # {{adj form of|es|sudamericano||f|s}}」的新頁面
9759709
wikitext
text/x-wiki
==意大利語==
===形容詞===
{{head|it|形容詞變格形}}
# {{adj form of|it|sudamericano||f|s}}
===名詞===
{{it-noun|f}}
# {{female equivalent of|it|sudamericano}}
==西班牙語==
===發音===
{{es-pr}}
===名詞===
{{es-noun|f}}
# {{female equivalent of|es|sudamericano}}
===形容詞===
{{head|es|形容詞變格形}}
# {{adj form of|es|sudamericano||f|s}}
4zwkht7gaul2lgjm6nc8jl0wwaiw3af
sudamericani
0
3438743
9759710
2026-05-15T00:42:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==意大利語== ===形容詞=== {{head|it|形容詞變格形}} # {{adj form of|it|sudamericano||m|p}} ===名詞=== {{head|it|名詞變格形|g=m-p}} # {{plural of|it|sudamericano}}」的新頁面
9759710
wikitext
text/x-wiki
==意大利語==
===形容詞===
{{head|it|形容詞變格形}}
# {{adj form of|it|sudamericano||m|p}}
===名詞===
{{head|it|名詞變格形|g=m-p}}
# {{plural of|it|sudamericano}}
gvo39l6mm2t1l426hpljpybsb3iikhd
sudamericane
0
3438744
9759711
2026-05-15T00:42:35Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==意大利語== ===形容詞=== {{head|it|形容詞變格形}} # {{adj form of|it|sudamericano||f|p}} ===名詞=== {{head|it|名詞變格形|g=f-p}} # {{plural of|it|sudamericana}}」的新頁面
9759711
wikitext
text/x-wiki
==意大利語==
===形容詞===
{{head|it|形容詞變格形}}
# {{adj form of|it|sudamericano||f|p}}
===名詞===
{{head|it|名詞變格形|g=f-p}}
# {{plural of|it|sudamericana}}
h28cwdxujg7qkkd6mbhrw36lpos1zir
sudamericanos
0
3438745
9759712
2026-05-15T00:42:37Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==西班牙語== ===發音=== {{es-pr}} ===形容詞=== {{head|es|形容詞變格形}} # {{adj form of|es|sudamericano||m|p}} ===名詞=== {{head|es|名詞變格形|g=m-p}} # {{plural of|es|sudamericano}}」的新頁面
9759712
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===形容詞===
{{head|es|形容詞變格形}}
# {{adj form of|es|sudamericano||m|p}}
===名詞===
{{head|es|名詞變格形|g=m-p}}
# {{plural of|es|sudamericano}}
nwzsvc1e3yqqddp3ys60egfjhtuxmqh
sudamericanas
0
3438746
9759713
2026-05-15T00:42:38Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==西班牙語== ===發音=== {{es-pr}} ===形容詞=== {{head|es|形容詞變格形}} # {{adj form of|es|sudamericano||f|p}} ===名詞=== {{head|es|名詞變格形|g=f-p}} # {{plural of|es|sudamericana}}」的新頁面
9759713
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===形容詞===
{{head|es|形容詞變格形}}
# {{adj form of|es|sudamericano||f|p}}
===名詞===
{{head|es|名詞變格形|g=f-p}}
# {{plural of|es|sudamericana}}
be8j96511gwhuuqvmmbrjnbxw1qzysf
Category:Rhymes:西班牙語/anas/6音節
14
3438747
9759714
2026-05-15T00:42:56Z
TongcyBot
83009
養貓
9759714
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:西班牙語/anos/6音節
14
3438748
9759715
2026-05-15T00:43:03Z
TongcyBot
83009
養貓
9759715
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
engatilhar
0
3438749
9759724
2026-05-15T02:59:41Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===詞源=== 源自 {{af|pt|en-|gatilho|-ar}}。和{{cog|es|engatillar}} 同源。 ===發音=== {{pt-IPA}} * {{hyph|pt|en|ga|ti|lhar}} ===動詞=== {{pt-verb}} # [[上膛]] #* {{quote-book|pt|author=José Saramago|title=Ensaio sobre a cegueira|publisher=Caminho|year=1995|passage=Nervoso, o soldado saiu da guarita '''engatilhando''' a espingarda automática e olhou na direcção do portão.|translation=士兵紧张地走…」的新頁面
9759724
wikitext
text/x-wiki
==葡萄牙語==
===詞源===
源自 {{af|pt|en-|gatilho|-ar}}。和{{cog|es|engatillar}} 同源。
===發音===
{{pt-IPA}}
* {{hyph|pt|en|ga|ti|lhar}}
===動詞===
{{pt-verb}}
# [[上膛]]
#* {{quote-book|pt|author=José Saramago|title=Ensaio sobre a cegueira|publisher=Caminho|year=1995|passage=Nervoso, o soldado saiu da guarita '''engatilhando''' a espingarda automática e olhou na direcção do portão.|translation=士兵紧张地走出警卫室,给自动步枪'''上了膛''',望着大门的方向。}}
# {{lb|pt|比喻}} [[準備]]
====變位====
{{pt-conj}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Infopédia}}
* {{R:pt:Michaelis}}
* {{R:pt:Priberam}}
1nu3rz5pe4rt4va0pr4js5mcm4vrid8
engatilhado
0
3438750
9759725
2026-05-15T02:59:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===分詞=== {{pt-pp}} # {{past participle of|pt|engatilhar}}」的新頁面
9759725
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{pt-pp}}
# {{past participle of|pt|engatilhar}}
cgm2u21i22ob16z56bhpp99tbaw6mv0
engatilhada
0
3438751
9759726
2026-05-15T03:00:11Z
Sayonzei
40728
創建葡萄牙語「[[engatilhado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759726
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine singular of|pt|engatilhado}}
tlrxrkraf5s4w6pvqyqjqv0glj30ij9
engatilhados
0
3438752
9759727
2026-05-15T03:00:12Z
Sayonzei
40728
創建葡萄牙語「[[engatilhado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759727
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{masculine plural of|pt|engatilhado}}
laqllaw9udfu4bw86t6foq4zjwbao01
engatilhadas
0
3438753
9759728
2026-05-15T03:00:15Z
Sayonzei
40728
創建葡萄牙語「[[engatilhado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759728
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine plural of|pt|engatilhado}}
mjb4zfbebhwi8zif0334drsmu62n4mt
engatillar
0
3438754
9759729
2026-05-15T03:02:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==西班牙語== ===詞源=== 源自 {{af|es|en-|gatillo|-ar}}。和{{cog|pt|engatilhar}} 同源。 ===發音=== {{es-pr}} ===動詞=== {{es-verb-auto}} # 使(金屬板)[[咬合]] # {{lb|es|建築學}} 用扣釘[[接合]] # {{lb|es|建築學}} [[固定]](地板的撑木) # [[夾]]住(畫板) ====變位==== {{es-conj-auto}} ===延伸閱讀=== * {{R:es:DRAE}}」的新頁面
9759729
wikitext
text/x-wiki
==西班牙語==
===詞源===
源自 {{af|es|en-|gatillo|-ar}}。和{{cog|pt|engatilhar}} 同源。
===發音===
{{es-pr}}
===動詞===
{{es-verb-auto}}
# 使(金屬板)[[咬合]]
# {{lb|es|建築學}} 用扣釘[[接合]]
# {{lb|es|建築學}} [[固定]](地板的撑木)
# [[夾]]住(畫板)
====變位====
{{es-conj-auto}}
===延伸閱讀===
* {{R:es:DRAE}}
o1hqjp1dx176ijd7ngrqmh2hb3qhy7j
encarquilhar
0
3438755
9759730
2026-05-15T03:04:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===發音=== {{pt-IPA}} * {{hyph|pt|en|car|qui|lhar}} ===動詞=== {{pt-verb}} # 起[[皺紋]],變得[[皺巴巴]]的 ====變位==== {{pt-conj}} ===延伸閱讀=== * {{R:pt:Aulete}} * {{R:pt:Priberam}}」的新頁面
9759730
wikitext
text/x-wiki
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|en|car|qui|lhar}}
===動詞===
{{pt-verb}}
# 起[[皺紋]],變得[[皺巴巴]]的
====變位====
{{pt-conj}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
mpbuel4xv2z0opjcodsdq4074zbfx6i
encarquilhado
0
3438756
9759731
2026-05-15T03:05:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===發音=== {{pt-IPA}} * {{hyph|pt|en|car|qui|lha|do}} ===形容詞=== {{pt-adj}} # 起[[皺紋]]的,[[皺巴巴]]的 #: {{syn|pt|enrugado|rugoso}} ===分詞=== {{pt-pp}} # {{past participle of|pt|encarquilhar}} ===延伸閱讀=== * {{R:pt:Aulete}} * {{R:pt:Priberam}}」的新頁面
9759731
wikitext
text/x-wiki
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|en|car|qui|lha|do}}
===形容詞===
{{pt-adj}}
# 起[[皺紋]]的,[[皺巴巴]]的
#: {{syn|pt|enrugado|rugoso}}
===分詞===
{{pt-pp}}
# {{past participle of|pt|encarquilhar}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
mnw7ysr0mxyfgs0xc3kw2bimrywxyps
enlanguescer
0
3438757
9759732
2026-05-15T03:22:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===其他形式=== * {{alt|pt|elanguescer}} ===詞源=== 源自 {{af|pt|en-|languescer}}。 ===發音=== {{pt-IPA|enlanguescêr}} ===動詞=== {{pt-verb}} # {{lb|pt|不及物|反身}} [[衰弱]],[[虛弱]],[[萎靡]] ====變位==== {{pt-conj}} ====派生詞彙==== {{col|pt|enlanguescimento|enlanguescente|enlanguescência}} ===延伸閱讀=== * {{R:pt:Aulete}} * {{R:pt:Infopédia}} * {{R:pt:Michaelis}} * {{R:pt:Pri…」的新頁面
9759732
wikitext
text/x-wiki
==葡萄牙語==
===其他形式===
* {{alt|pt|elanguescer}}
===詞源===
源自 {{af|pt|en-|languescer}}。
===發音===
{{pt-IPA|enlanguescêr}}
===動詞===
{{pt-verb}}
# {{lb|pt|不及物|反身}} [[衰弱]],[[虛弱]],[[萎靡]]
====變位====
{{pt-conj}}
====派生詞彙====
{{col|pt|enlanguescimento|enlanguescente|enlanguescência}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Infopédia}}
* {{R:pt:Michaelis}}
* {{R:pt:Priberam}}
gvofhrxr95ta1nh8q2gwuo53ergyh20
enlamear
0
3438758
9759733
2026-05-15T03:25:11Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===詞源=== 源自 {{af|pt|en-|lama|-ear|t2=泥}}。 ===發音=== {{pt-IPA}} * {{hyphenation|pt|en|la|me|ar}} ===動詞=== {{pt-verb}} # {{lb|pt|及物}} 使[[沾]]滿[[泥]] # {{lb|pt|及物|比喻}} [[玷污]]、[[敗壞]]……的[[名聲]] ====變位==== {{pt-conj}} ===參考資料=== * {{R:pt:Aulete}} * {{R:pt:Priberam}}」的新頁面
9759733
wikitext
text/x-wiki
==葡萄牙語==
===詞源===
源自 {{af|pt|en-|lama|-ear|t2=泥}}。
===發音===
{{pt-IPA}}
* {{hyphenation|pt|en|la|me|ar}}
===動詞===
{{pt-verb}}
# {{lb|pt|及物}} 使[[沾]]滿[[泥]]
# {{lb|pt|及物|比喻}} [[玷污]]、[[敗壞]]……的[[名聲]]
====變位====
{{pt-conj}}
===參考資料===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
r3xqsgdpl7wjhya8kx8ox04ifb9t41g
enlameado
0
3438759
9759734
2026-05-15T03:25:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===分詞=== {{pt-pp}} # {{past participle of|pt|enlamear}}」的新頁面
9759734
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{pt-pp}}
# {{past participle of|pt|enlamear}}
l4i1dgdc2bgfu8k3bnnmy1227d84bhe
enlameada
0
3438760
9759735
2026-05-15T03:25:54Z
Sayonzei
40728
創建葡萄牙語「[[enlameado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759735
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine singular of|pt|enlameado}}
57mgiwjvz0s5b6v9jaxjk8v4tdwve9n
enlameados
0
3438761
9759736
2026-05-15T03:25:56Z
Sayonzei
40728
創建葡萄牙語「[[enlameado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759736
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{masculine plural of|pt|enlameado}}
0pdi25h4p22kbe9adcgcqlalvusyep9
enlameadas
0
3438762
9759737
2026-05-15T03:26:01Z
Sayonzei
40728
創建葡萄牙語「[[enlameado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759737
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine plural of|pt|enlameado}}
dag9txsw8m6uotju0tfdrvutmpqzv2t
encruzar
0
3438763
9759738
2026-05-15T03:27:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===詞源=== 源自 {{af|pt|en-|cruz|-ar}}。 ===發音=== {{pt-IPA}} * {{hyph|pt|en|cru|zar}} ===動詞=== {{pt-verb}} {{tlb|pt|及物}} # 使呈[[交叉]]的樣子,擺成[[十字]]形 # [[穿過]] ====變位==== {{pt-conj}} ====近義詞==== {{col|pt|encruzilhar}} ===延伸閱讀=== * {{R:pt:Aulete}} * {{R:pt:DAN}} * {{R:pt:Priberam}}」的新頁面
9759738
wikitext
text/x-wiki
==葡萄牙語==
===詞源===
源自 {{af|pt|en-|cruz|-ar}}。
===發音===
{{pt-IPA}}
* {{hyph|pt|en|cru|zar}}
===動詞===
{{pt-verb}} {{tlb|pt|及物}}
# 使呈[[交叉]]的樣子,擺成[[十字]]形
# [[穿過]]
====變位====
{{pt-conj}}
====近義詞====
{{col|pt|encruzilhar}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:DAN}}
* {{R:pt:Priberam}}
fte5xntid75fxljcolmi1sdh77j5hjx
encruzilhar
0
3438764
9759739
2026-05-15T03:28:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==加利西亞語== ===動詞=== {{gl-reinteg-verb}} # {{gl-reinteg sp|encrucillar}} ====變位==== {{gl-reinteg-conj}} ====相關詞彙==== * {{l|gl|encruzilhada}} ===延伸閱讀=== * {{R:gl:Estraviz}} ==葡萄牙語== ===詞源=== 源自{{der|pt|la|*incruciculāre}}。 ===發音=== {{pt-IPA}} * {{hyph|pt|en|cru|zi|lhar}} ===動詞=== {{pt-verb}} {{tlb|pt|及物}} # 使呈[[交叉]]的樣子,擺成[[十字]]形 #: {{syn|pt|encru…」的新頁面
9759739
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{gl-reinteg-verb}}
# {{gl-reinteg sp|encrucillar}}
====變位====
{{gl-reinteg-conj}}
====相關詞彙====
* {{l|gl|encruzilhada}}
===延伸閱讀===
* {{R:gl:Estraviz}}
==葡萄牙語==
===詞源===
源自{{der|pt|la|*incruciculāre}}。
===發音===
{{pt-IPA}}
* {{hyph|pt|en|cru|zi|lhar}}
===動詞===
{{pt-verb}} {{tlb|pt|及物}}
# 使呈[[交叉]]的樣子,擺成[[十字]]形
#: {{syn|pt|encruzar}}
# [[穿過]]
====變位====
{{pt-conj}}
====相關詞彙====
* {{l|pt|encruzilhada}}
===參考資料===
* {{R:pt:Aulete}}
* {{R:pt:Infopédia}}
* {{R:pt:Priberam}}
nq3gv5d2i4l8856skny7sjsnhrsuj4g
encruzilhado
0
3438765
9759740
2026-05-15T03:28:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===分詞=== {{pt-pp}} # {{past participle of|pt|encruzilhar}}」的新頁面
9759740
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{pt-pp}}
# {{past participle of|pt|encruzilhar}}
aqq38y4xww6fmfqu85pndzkrgd8nkmf
encruzilhados
0
3438766
9759741
2026-05-15T03:29:10Z
Sayonzei
40728
創建葡萄牙語「[[encruzilhado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759741
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形}}
# {{masculine plural of|pt|encruzilhado}}
fbr60qjs057ttgtyrgolkwvn8ysfrzo
encruzilhadas
0
3438767
9759742
2026-05-15T03:29:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===名詞=== {{head|pt|名詞變格形}} # {{plural of|pt|encruzilhada}} ===分詞=== {{head|pt|過去分詞變格形}} # {{feminine plural of|pt|encruzilhado}}」的新頁面
9759742
wikitext
text/x-wiki
==葡萄牙語==
===名詞===
{{head|pt|名詞變格形}}
# {{plural of|pt|encruzilhada}}
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine plural of|pt|encruzilhado}}
lnbzzxt5v067bhtwm2fo7i7ttza1x1x
encruzilhada
0
3438768
9759743
2026-05-15T03:30:38Z
Sayonzei
40728
創建葡萄牙語「[[encruzilhado]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9759743
wikitext
text/x-wiki
{{also|Encruzilhada}}
==葡萄牙語==
===詞源===
源自 {{m|pt|encruzilhar||穿過}},源自 {{m|pt|cruz||十字}},源自{{der|pt|roa-opt|cruz}},源自{{der|pt|la|crux||十字}},源自{{der|pt|ine-pro|*(s)ker-||轉,彎}}。
===發音===
{{pt-IPA}}
* {{hyph|pt|en|cru|zi|lha|da}}
===名詞===
{{pt-noun|f}}
# [[十字路口]]
#: {{syn|pt|ambívio|cruzamento|interseção}}
# {{lb|pt|比喻}} 需要作出[[抉擇]]的[[境況]]
====相關詞彙====
{{col4|pt
|cruz
|cruzar
|encruzilhar
|encruzar
}}
===分詞===
{{head|pt|過去分詞變格形}}
# {{feminine singular of|pt|encruzilhado}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
{{C|pt|道路}}
gn0vhm7nhi975zs0lopc3au2bzdbyo0
interseção
0
3438769
9759744
2026-05-15T03:30:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===其他形式=== * {{alt|pt|intersecção||葡萄牙}} ===詞源=== {{lbor|pt|la|intersectiō|intersectiōnem}}。 ===發音=== {{pt-IPA|intersèção}} * {{homophones|pt|intercessão|interceção}} * {{hyphenation|pt|in|ter|se|ção}} ===名詞=== {{pt-noun|f}} {{tlb|pt|巴西葡萄牙語拼寫|European Portuguese spelling}} # [[路口]] # {{lb|pt|幾何學}} [[交點]] # {{lb|pt|集合論}} [[交集]] ===延伸閱…」的新頁面
9759744
wikitext
text/x-wiki
==葡萄牙語==
===其他形式===
* {{alt|pt|intersecção||葡萄牙}}
===詞源===
{{lbor|pt|la|intersectiō|intersectiōnem}}。
===發音===
{{pt-IPA|intersèção}}
* {{homophones|pt|intercessão|interceção}}
* {{hyphenation|pt|in|ter|se|ção}}
===名詞===
{{pt-noun|f}} {{tlb|pt|巴西葡萄牙語拼寫|European Portuguese spelling}}
# [[路口]]
# {{lb|pt|幾何學}} [[交點]]
# {{lb|pt|集合論}} [[交集]]
===延伸閱讀===
* {{R:pt:Priberam}}
f2999v0phn0qtw10f85d2pdq6cgfrcz
interseções
0
3438770
9759745
2026-05-15T03:31:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===名詞=== {{head|pt|名詞變格形|g=f}} # {{plural of|pt|interseção}}」的新頁面
9759745
wikitext
text/x-wiki
==葡萄牙語==
===名詞===
{{head|pt|名詞變格形|g=f}}
# {{plural of|pt|interseção}}
hf9cjicw3yzvo6r22vj4es0wotlcu0j
intersecção
0
3438771
9759746
2026-05-15T03:31:16Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===發音=== {{pt-IPA|intersècção}} * {{hyph|pt|in|ter|sec|ção}} ===名詞=== {{pt-noun|f}} {{tlb|pt|僅限|_|European Portuguese spelling}} # {{alternative form of|pt|interseção}} ===延伸閱讀=== * {{R:pt:Priberam}}」的新頁面
9759746
wikitext
text/x-wiki
==葡萄牙語==
===發音===
{{pt-IPA|intersècção}}
* {{hyph|pt|in|ter|sec|ção}}
===名詞===
{{pt-noun|f}} {{tlb|pt|僅限|_|European Portuguese spelling}}
# {{alternative form of|pt|interseção}}
===延伸閱讀===
* {{R:pt:Priberam}}
6uaib4y982bp2acezyepirg0mde05td
intersecções
0
3438772
9759747
2026-05-15T03:31:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==葡萄牙語== ===名詞=== {{head|pt|名詞變格形|g=f}} # {{plural of|pt|intersecção}}」的新頁面
9759747
wikitext
text/x-wiki
==葡萄牙語==
===名詞===
{{head|pt|名詞變格形|g=f}}
# {{plural of|pt|intersecção}}
itkiwk2sxpcbyy9d6w4uyuqncunfqq2
encarquilhada
0
3438773
9759749
2026-05-15T03:34:47Z
TongcyBot
83009
半自動導入非詞元形式
9759749
wikitext
text/x-wiki
==葡萄牙語==
===形容詞===
{{head|pt|形容詞變格形}}
# {{adj form of|pt|encarquilhado||f|s}}
===分詞===
{{head|pt|過去分詞變格形|g=f-s}}
# {{feminine singular of|pt|encarquilhado}}
fhjenj2hcio9n575t9wkbackspc2dqv
encarquilha
0
3438774
9759750
2026-05-15T03:34:49Z
TongcyBot
83009
半自動導入非詞元形式
9759750
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhadas
0
3438775
9759751
2026-05-15T03:34:52Z
TongcyBot
83009
半自動導入非詞元形式
9759751
wikitext
text/x-wiki
==葡萄牙語==
===形容詞===
{{head|pt|形容詞變格形}}
# {{adj form of|pt|encarquilhado||f|p}}
===分詞===
{{head|pt|過去分詞變格形|g=f-p}}
# {{feminine plural of|pt|encarquilhado}}
p5rsrj04jhenygfxa3wh7waqscxdctm
encarquilhados
0
3438776
9759752
2026-05-15T03:34:53Z
TongcyBot
83009
半自動導入非詞元形式
9759752
wikitext
text/x-wiki
==葡萄牙語==
===形容詞===
{{head|pt|形容詞變格形}}
# {{adj form of|pt|encarquilhado||m|p}}
===分詞===
{{head|pt|過去分詞變格形|g=m-p}}
# {{masculine plural of|pt|encarquilhado}}
g1omwyochl5lgu3jpwy8mjcmlo1sdf3
encarquilhai
0
3438777
9759753
2026-05-15T03:34:56Z
TongcyBot
83009
半自動導入非詞元形式
9759753
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhais
0
3438778
9759754
2026-05-15T03:34:57Z
TongcyBot
83009
半自動導入非詞元形式
9759754
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilham
0
3438779
9759755
2026-05-15T03:35:00Z
TongcyBot
83009
半自動導入非詞元形式
9759755
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhamos
0
3438780
9759756
2026-05-15T03:35:01Z
TongcyBot
83009
半自動導入非詞元形式
9759756
wikitext
text/x-wiki
{{also|encarquilhámos}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
2dstwm8ci9lvioo0hjksmlqiqo2lcos
encarquilhando
0
3438781
9759757
2026-05-15T03:35:04Z
TongcyBot
83009
半自動導入非詞元形式
9759757
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{gerund of|pt|encarquilhar}}
r8iho8z4m50lokr0eypkz2ruxiub3om
encarquilhara
0
3438782
9759758
2026-05-15T03:35:05Z
TongcyBot
83009
半自動導入非詞元形式
9759758
wikitext
text/x-wiki
{{also|encarquilhará}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
f55gdligq6pmxkt8dqaougb7bwyeiul
encarquilharam
0
3438783
9759759
2026-05-15T03:35:08Z
TongcyBot
83009
半自動導入非詞元形式
9759759
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharas
0
3438784
9759760
2026-05-15T03:35:09Z
TongcyBot
83009
半自動導入非詞元形式
9759760
wikitext
text/x-wiki
{{also|encarquilharás}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
smouc6sdrvll9l5ap99pwvpzfwiwz1q
encarquilhardes
0
3438785
9759761
2026-05-15T03:35:12Z
TongcyBot
83009
半自動導入非詞元形式
9759761
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharei
0
3438786
9759762
2026-05-15T03:35:13Z
TongcyBot
83009
半自動導入非詞元形式
9759762
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhareis
0
3438787
9759763
2026-05-15T03:35:17Z
TongcyBot
83009
半自動導入非詞元形式
9759763
wikitext
text/x-wiki
{{also|encarquilháreis}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
40rakacshqy334w6r6zy3o90se1q44e
encarquilharem
0
3438788
9759764
2026-05-15T03:35:18Z
TongcyBot
83009
半自動導入非詞元形式
9759764
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharemos
0
3438789
9759765
2026-05-15T03:35:21Z
TongcyBot
83009
半自動導入非詞元形式
9759765
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhares
0
3438790
9759766
2026-05-15T03:35:22Z
TongcyBot
83009
半自動導入非詞元形式
9759766
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharia
0
3438791
9759767
2026-05-15T03:35:25Z
TongcyBot
83009
半自動導入非詞元形式
9759767
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhariam
0
3438792
9759768
2026-05-15T03:35:26Z
TongcyBot
83009
半自動導入非詞元形式
9759768
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharias
0
3438793
9759769
2026-05-15T03:35:30Z
TongcyBot
83009
半自動導入非詞元形式
9759769
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharmos
0
3438794
9759770
2026-05-15T03:35:31Z
TongcyBot
83009
半自動導入非詞元形式
9759770
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhará
0
3438795
9759771
2026-05-15T03:35:34Z
TongcyBot
83009
半自動導入非詞元形式
9759771
wikitext
text/x-wiki
{{also|encarquilhara}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
la7fbcx14dzo8al42pupz5l95oh9lcs
encarquilharás
0
3438796
9759772
2026-05-15T03:35:35Z
TongcyBot
83009
半自動導入非詞元形式
9759772
wikitext
text/x-wiki
{{also|encarquilharas}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
6dagxli7xxs7zcpfolmjzxea2mb9n0c
encarquilharão
0
3438797
9759773
2026-05-15T03:35:38Z
TongcyBot
83009
半自動導入非詞元形式
9759773
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharíamos
0
3438798
9759774
2026-05-15T03:35:39Z
TongcyBot
83009
半自動導入非詞元形式
9759774
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilharíeis
0
3438799
9759775
2026-05-15T03:35:42Z
TongcyBot
83009
半自動導入非詞元形式
9759775
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhas
0
3438800
9759776
2026-05-15T03:35:43Z
TongcyBot
83009
半自動導入非詞元形式
9759776
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhasse
0
3438801
9759777
2026-05-15T03:35:46Z
TongcyBot
83009
半自動導入非詞元形式
9759777
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhassem
0
3438802
9759778
2026-05-15T03:35:48Z
TongcyBot
83009
半自動導入非詞元形式
9759778
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhasses
0
3438803
9759779
2026-05-15T03:35:50Z
TongcyBot
83009
半自動導入非詞元形式
9759779
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhaste
0
3438804
9759780
2026-05-15T03:35:52Z
TongcyBot
83009
半自動導入非詞元形式
9759780
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhastes
0
3438805
9759781
2026-05-15T03:35:55Z
TongcyBot
83009
半自動導入非詞元形式
9759781
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhava
0
3438806
9759782
2026-05-15T03:35:56Z
TongcyBot
83009
半自動導入非詞元形式
9759782
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhavam
0
3438807
9759783
2026-05-15T03:35:59Z
TongcyBot
83009
半自動導入非詞元形式
9759783
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhavas
0
3438808
9759784
2026-05-15T03:36:00Z
TongcyBot
83009
半自動導入非詞元形式
9759784
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhe
0
3438809
9759785
2026-05-15T03:36:03Z
TongcyBot
83009
半自動導入非詞元形式
9759785
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhei
0
3438810
9759786
2026-05-15T03:36:04Z
TongcyBot
83009
半自動導入非詞元形式
9759786
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilheis
0
3438811
9759787
2026-05-15T03:36:07Z
TongcyBot
83009
半自動導入非詞元形式
9759787
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhem
0
3438812
9759788
2026-05-15T03:36:08Z
TongcyBot
83009
半自動導入非詞元形式
9759788
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhemos
0
3438813
9759789
2026-05-15T03:36:11Z
TongcyBot
83009
半自動導入非詞元形式
9759789
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhes
0
3438814
9759790
2026-05-15T03:36:12Z
TongcyBot
83009
半自動導入非詞元形式
9759790
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilho
0
3438815
9759791
2026-05-15T03:36:15Z
TongcyBot
83009
半自動導入非詞元形式
9759791
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhou
0
3438816
9759792
2026-05-15T03:36:16Z
TongcyBot
83009
半自動導入非詞元形式
9759792
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhámos
0
3438817
9759793
2026-05-15T03:36:18Z
TongcyBot
83009
半自動導入非詞元形式
9759793
wikitext
text/x-wiki
{{also|encarquilhamos}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
3rob44bn2jij7uph8x82nazod1jg01g
encarquilháramos
0
3438818
9759794
2026-05-15T03:36:20Z
TongcyBot
83009
半自動導入非詞元形式
9759794
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilháreis
0
3438819
9759795
2026-05-15T03:36:23Z
TongcyBot
83009
半自動導入非詞元形式
9759795
wikitext
text/x-wiki
{{also|encarquilhareis}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
bjo0skd8cildq4rzla3e6fwj3gtg4mi
encarquilhásseis
0
3438820
9759796
2026-05-15T03:36:24Z
TongcyBot
83009
半自動導入非詞元形式
9759796
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhássemos
0
3438821
9759797
2026-05-15T03:36:27Z
TongcyBot
83009
半自動導入非詞元形式
9759797
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilhávamos
0
3438822
9759798
2026-05-15T03:36:28Z
TongcyBot
83009
半自動導入非詞元形式
9759798
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encarquilháveis
0
3438823
9759799
2026-05-15T03:36:31Z
TongcyBot
83009
半自動導入非詞元形式
9759799
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encarquilhar}}
noo07wkydwg978m45gj6jrvb6be5lti
encruza
0
3438824
9759800
2026-05-15T03:36:32Z
TongcyBot
83009
半自動導入非詞元形式
9759800
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzada
0
3438825
9759801
2026-05-15T03:36:35Z
TongcyBot
83009
半自動導入非詞元形式
9759801
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=f-s}}
# {{feminine singular of|pt|encruzado}}
d36ed3pnzfufqu1b7fgvg87ull3rfsb
encruzadas
0
3438826
9759802
2026-05-15T03:36:36Z
TongcyBot
83009
半自動導入非詞元形式
9759802
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=f-p}}
# {{feminine plural of|pt|encruzado}}
78hqghhmljqm90vyxe1maotc2dgmts6
encruzado
0
3438827
9759803
2026-05-15T03:36:39Z
TongcyBot
83009
半自動導入非詞元形式
9759803
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{pt-pp}}
# {{past participle of|pt|encruzar}}
8ykt4rhfgo5472cf7batkbrsued6c1c
encruzados
0
3438828
9759804
2026-05-15T03:36:40Z
TongcyBot
83009
半自動導入非詞元形式
9759804
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=m-p}}
# {{masculine plural of|pt|encruzado}}
nh5housms16e646a5om7xtegz3ii9f6
encruzai
0
3438829
9759805
2026-05-15T03:36:43Z
TongcyBot
83009
半自動導入非詞元形式
9759805
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzais
0
3438830
9759806
2026-05-15T03:36:45Z
TongcyBot
83009
半自動導入非詞元形式
9759806
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzam
0
3438831
9759807
2026-05-15T03:36:47Z
TongcyBot
83009
半自動導入非詞元形式
9759807
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzamos
0
3438832
9759808
2026-05-15T03:36:49Z
TongcyBot
83009
半自動導入非詞元形式
9759808
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzando
0
3438833
9759809
2026-05-15T03:36:51Z
TongcyBot
83009
半自動導入非詞元形式
9759809
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{pt-verb form of|encruzar}}
bbmq4l2p5qx4ggwjqba5fbq47z4nvjq
encruzara
0
3438834
9759810
2026-05-15T03:36:52Z
TongcyBot
83009
半自動導入非詞元形式
9759810
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaram
0
3438835
9759811
2026-05-15T03:36:54Z
TongcyBot
83009
半自動導入非詞元形式
9759811
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaras
0
3438836
9759812
2026-05-15T03:36:57Z
TongcyBot
83009
半自動導入非詞元形式
9759812
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzardes
0
3438837
9759813
2026-05-15T03:36:58Z
TongcyBot
83009
半自動導入非詞元形式
9759813
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarei
0
3438838
9759814
2026-05-15T03:37:00Z
TongcyBot
83009
半自動導入非詞元形式
9759814
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzareis
0
3438839
9759815
2026-05-15T03:37:02Z
TongcyBot
83009
半自動導入非詞元形式
9759815
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarem
0
3438840
9759816
2026-05-15T03:37:04Z
TongcyBot
83009
半自動導入非詞元形式
9759816
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaremos
0
3438841
9759817
2026-05-15T03:37:06Z
TongcyBot
83009
半自動導入非詞元形式
9759817
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzares
0
3438842
9759818
2026-05-15T03:37:08Z
TongcyBot
83009
半自動導入非詞元形式
9759818
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaria
0
3438843
9759819
2026-05-15T03:37:10Z
TongcyBot
83009
半自動導入非詞元形式
9759819
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzariam
0
3438844
9759820
2026-05-15T03:37:12Z
TongcyBot
83009
半自動導入非詞元形式
9759820
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarias
0
3438845
9759821
2026-05-15T03:37:14Z
TongcyBot
83009
半自動導入非詞元形式
9759821
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarmos
0
3438846
9759822
2026-05-15T03:37:16Z
TongcyBot
83009
半自動導入非詞元形式
9759822
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzará
0
3438847
9759823
2026-05-15T03:37:17Z
TongcyBot
83009
半自動導入非詞元形式
9759823
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarás
0
3438848
9759824
2026-05-15T03:37:20Z
TongcyBot
83009
半自動導入非詞元形式
9759824
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzarão
0
3438849
9759825
2026-05-15T03:37:21Z
TongcyBot
83009
半自動導入非詞元形式
9759825
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaríamos
0
3438850
9759826
2026-05-15T03:37:24Z
TongcyBot
83009
半自動導入非詞元形式
9759826
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaríeis
0
3438851
9759827
2026-05-15T03:37:25Z
TongcyBot
83009
半自動導入非詞元形式
9759827
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzas
0
3438852
9759828
2026-05-15T03:37:28Z
TongcyBot
83009
半自動導入非詞元形式
9759828
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzasse
0
3438853
9759829
2026-05-15T03:37:29Z
TongcyBot
83009
半自動導入非詞元形式
9759829
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzassem
0
3438854
9759830
2026-05-15T03:37:33Z
TongcyBot
83009
半自動導入非詞元形式
9759830
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzasses
0
3438855
9759831
2026-05-15T03:37:34Z
TongcyBot
83009
半自動導入非詞元形式
9759831
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzastes
0
3438856
9759832
2026-05-15T03:37:38Z
TongcyBot
83009
半自動導入非詞元形式
9759832
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzaste
0
3438857
9759833
2026-05-15T03:37:38Z
TongcyBot
83009
半自動導入非詞元形式
9759833
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzavam
0
3438858
9759834
2026-05-15T03:37:43Z
TongcyBot
83009
半自動導入非詞元形式
9759834
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzava
0
3438859
9759835
2026-05-15T03:37:44Z
TongcyBot
83009
半自動導入非詞元形式
9759835
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzavas
0
3438860
9759836
2026-05-15T03:37:46Z
TongcyBot
83009
半自動導入非詞元形式
9759836
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruze
0
3438861
9759837
2026-05-15T03:37:47Z
TongcyBot
83009
半自動導入非詞元形式
9759837
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzei
0
3438862
9759838
2026-05-15T03:37:50Z
TongcyBot
83009
半自動導入非詞元形式
9759838
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzeis
0
3438863
9759839
2026-05-15T03:37:51Z
TongcyBot
83009
半自動導入非詞元形式
9759839
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzem
0
3438864
9759840
2026-05-15T03:37:54Z
TongcyBot
83009
半自動導入非詞元形式
9759840
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzemos
0
3438865
9759841
2026-05-15T03:37:56Z
TongcyBot
83009
半自動導入非詞元形式
9759841
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzes
0
3438866
9759842
2026-05-15T03:37:58Z
TongcyBot
83009
半自動導入非詞元形式
9759842
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzilha
0
3438867
9759843
2026-05-15T03:38:00Z
TongcyBot
83009
半自動導入非詞元形式
9759843
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhache
0
3438868
9759844
2026-05-15T03:38:02Z
TongcyBot
83009
半自動導入非詞元形式
9759844
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhade
0
3438869
9759845
2026-05-15T03:38:04Z
TongcyBot
83009
半自動導入非詞元形式
9759845
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhades
0
3438870
9759846
2026-05-15T03:38:06Z
TongcyBot
83009
半自動導入非詞元形式
9759846
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhai
0
3438871
9759847
2026-05-15T03:38:09Z
TongcyBot
83009
半自動導入非詞元形式
9759847
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhais
0
3438872
9759848
2026-05-15T03:38:10Z
TongcyBot
83009
半自動導入非詞元形式
9759848
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilham
0
3438873
9759849
2026-05-15T03:38:13Z
TongcyBot
83009
半自動導入非詞元形式
9759849
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhamos
0
3438874
9759850
2026-05-15T03:38:14Z
TongcyBot
83009
半自動導入非詞元形式
9759850
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhando
0
3438875
9759851
2026-05-15T03:38:17Z
TongcyBot
83009
半自動導入非詞元形式
9759851
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動名詞}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{pt-verb form of|encruzilhar}}
qg5zkzo89vpolx4v2japrz5xx7f7ucd
encruzilhara
0
3438876
9759852
2026-05-15T03:38:18Z
TongcyBot
83009
半自動導入非詞元形式
9759852
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharam
0
3438877
9759853
2026-05-15T03:38:21Z
TongcyBot
83009
半自動導入非詞元形式
9759853
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharas
0
3438878
9759854
2026-05-15T03:38:22Z
TongcyBot
83009
半自動導入非詞元形式
9759854
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhardes
0
3438879
9759855
2026-05-15T03:38:25Z
TongcyBot
83009
半自動導入非詞元形式
9759855
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharedes
0
3438880
9759856
2026-05-15T03:38:26Z
TongcyBot
83009
半自動導入非詞元形式
9759856
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilharei
0
3438881
9759857
2026-05-15T03:38:29Z
TongcyBot
83009
半自動導入非詞元形式
9759857
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhareis
0
3438882
9759858
2026-05-15T03:38:30Z
TongcyBot
83009
半自動導入非詞元形式
9759858
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharem
0
3438883
9759859
2026-05-15T03:38:33Z
TongcyBot
83009
半自動導入非詞元形式
9759859
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharemos
0
3438884
9759860
2026-05-15T03:38:34Z
TongcyBot
83009
半自動導入非詞元形式
9759860
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhares
0
3438885
9759861
2026-05-15T03:38:37Z
TongcyBot
83009
半自動導入非詞元形式
9759861
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharia
0
3438886
9759862
2026-05-15T03:38:38Z
TongcyBot
83009
半自動導入非詞元形式
9759862
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhariam
0
3438887
9759863
2026-05-15T03:38:41Z
TongcyBot
83009
半自動導入非詞元形式
9759863
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharias
0
3438888
9759864
2026-05-15T03:38:43Z
TongcyBot
83009
半自動導入非詞元形式
9759864
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharmos
0
3438889
9759865
2026-05-15T03:38:46Z
TongcyBot
83009
半自動導入非詞元形式
9759865
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhará
0
3438890
9759866
2026-05-15T03:38:47Z
TongcyBot
83009
半自動導入非詞元形式
9759866
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharám
0
3438891
9759867
2026-05-15T03:38:49Z
TongcyBot
83009
半自動導入非詞元形式
9759867
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilharás
0
3438892
9759868
2026-05-15T03:38:51Z
TongcyBot
83009
半自動導入非詞元形式
9759868
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharão
0
3438893
9759869
2026-05-15T03:38:54Z
TongcyBot
83009
半自動導入非詞元形式
9759869
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharíades
0
3438894
9759870
2026-05-15T03:38:55Z
TongcyBot
83009
半自動導入非詞元形式
9759870
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilharíais
0
3438895
9759871
2026-05-15T03:38:58Z
TongcyBot
83009
半自動導入非詞元形式
9759871
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilharíamos
0
3438896
9759872
2026-05-15T03:38:59Z
TongcyBot
83009
半自動導入非詞元形式
9759872
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilharíeis
0
3438897
9759873
2026-05-15T03:39:02Z
TongcyBot
83009
半自動導入非詞元形式
9759873
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhas
0
3438898
9759874
2026-05-15T03:39:03Z
TongcyBot
83009
半自動導入非詞元形式
9759874
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhasse
0
3438899
9759875
2026-05-15T03:39:05Z
TongcyBot
83009
半自動導入非詞元形式
9759875
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhassem
0
3438900
9759876
2026-05-15T03:39:07Z
TongcyBot
83009
半自動導入非詞元形式
9759876
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhasses
0
3438901
9759877
2026-05-15T03:39:10Z
TongcyBot
83009
半自動導入非詞元形式
9759877
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhaste
0
3438902
9759878
2026-05-15T03:39:11Z
TongcyBot
83009
半自動導入非詞元形式
9759878
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhastes
0
3438903
9759879
2026-05-15T03:39:14Z
TongcyBot
83009
半自動導入非詞元形式
9759879
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhava
0
3438904
9759880
2026-05-15T03:39:15Z
TongcyBot
83009
半自動導入非詞元形式
9759880
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhavam
0
3438905
9759881
2026-05-15T03:39:18Z
TongcyBot
83009
半自動導入非詞元形式
9759881
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhavas
0
3438906
9759882
2026-05-15T03:39:19Z
TongcyBot
83009
半自動導入非詞元形式
9759882
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhe
0
3438907
9759883
2026-05-15T03:39:22Z
TongcyBot
83009
半自動導入非詞元形式
9759883
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhedes
0
3438908
9759884
2026-05-15T03:39:24Z
TongcyBot
83009
半自動導入非詞元形式
9759884
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhei
0
3438909
9759885
2026-05-15T03:39:26Z
TongcyBot
83009
半自動導入非詞元形式
9759885
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilheis
0
3438910
9759886
2026-05-15T03:39:28Z
TongcyBot
83009
半自動導入非詞元形式
9759886
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhem
0
3438911
9759887
2026-05-15T03:39:30Z
TongcyBot
83009
半自動導入非詞元形式
9759887
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhemos
0
3438912
9759888
2026-05-15T03:39:32Z
TongcyBot
83009
半自動導入非詞元形式
9759888
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhes
0
3438913
9759889
2026-05-15T03:39:36Z
TongcyBot
83009
半自動導入非詞元形式
9759889
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilho
0
3438914
9759890
2026-05-15T03:39:37Z
TongcyBot
83009
半自動導入非詞元形式
9759890
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhou
0
3438915
9759891
2026-05-15T03:39:40Z
TongcyBot
83009
半自動導入非詞元形式
9759891
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhámos
0
3438916
9759892
2026-05-15T03:39:41Z
TongcyBot
83009
半自動導入非詞元形式
9759892
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
234hcv9b1220oi0osnevfni8vvs4847
encruzilhárades
0
3438917
9759893
2026-05-15T03:39:44Z
TongcyBot
83009
半自動導入非詞元形式
9759893
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhárais
0
3438918
9759894
2026-05-15T03:39:45Z
TongcyBot
83009
半自動導入非詞元形式
9759894
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilháramos
0
3438919
9759895
2026-05-15T03:39:48Z
TongcyBot
83009
半自動導入非詞元形式
9759895
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilháreis
0
3438920
9759896
2026-05-15T03:39:49Z
TongcyBot
83009
半自動導入非詞元形式
9759896
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhárom
0
3438921
9759897
2026-05-15T03:39:52Z
TongcyBot
83009
半自動導入非詞元形式
9759897
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhássedes
0
3438922
9759898
2026-05-15T03:39:53Z
TongcyBot
83009
半自動導入非詞元形式
9759898
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhásseis
0
3438923
9759899
2026-05-15T03:39:55Z
TongcyBot
83009
半自動導入非詞元形式
9759899
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhássemos
0
3438924
9759900
2026-05-15T03:39:57Z
TongcyBot
83009
半自動導入非詞元形式
9759900
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilhávades
0
3438925
9759901
2026-05-15T03:40:00Z
TongcyBot
83009
半自動導入非詞元形式
9759901
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhávais
0
3438926
9759902
2026-05-15T03:40:01Z
TongcyBot
83009
半自動導入非詞元形式
9759902
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
cisqv8f0u0p835teuwkoi8gvhn3hyy7
encruzilhávamos
0
3438927
9759903
2026-05-15T03:40:04Z
TongcyBot
83009
半自動導入非詞元形式
9759903
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzilháveis
0
3438928
9759904
2026-05-15T03:40:05Z
TongcyBot
83009
半自動導入非詞元形式
9759904
wikitext
text/x-wiki
==加利西亞語==
===動詞===
{{head|gl|動詞變位形式}}
# {{gl-reinteg-verb form of|encruzilhar}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzilhar}}
q13kt1bv115svq6cwzmuznx0jhxdpsp
encruzo
0
3438929
9759905
2026-05-15T03:40:07Z
TongcyBot
83009
半自動導入非詞元形式
9759905
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzou
0
3438930
9759906
2026-05-15T03:40:09Z
TongcyBot
83009
半自動導入非詞元形式
9759906
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzámos
0
3438931
9759907
2026-05-15T03:40:12Z
TongcyBot
83009
半自動導入非詞元形式
9759907
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzáramos
0
3438932
9759908
2026-05-15T03:40:13Z
TongcyBot
83009
半自動導入非詞元形式
9759908
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzáreis
0
3438933
9759909
2026-05-15T03:40:16Z
TongcyBot
83009
半自動導入非詞元形式
9759909
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzásseis
0
3438934
9759910
2026-05-15T03:40:17Z
TongcyBot
83009
半自動導入非詞元形式
9759910
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzássemos
0
3438935
9759911
2026-05-15T03:40:20Z
TongcyBot
83009
半自動導入非詞元形式
9759911
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzávamos
0
3438936
9759912
2026-05-15T03:40:21Z
TongcyBot
83009
半自動導入非詞元形式
9759912
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
encruzáveis
0
3438937
9759913
2026-05-15T03:40:24Z
TongcyBot
83009
半自動導入非詞元形式
9759913
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|encruzar}}
suf72lka6yzqs87my69zryl2nlk1r73
engatilha
0
3438938
9759914
2026-05-15T03:40:25Z
TongcyBot
83009
半自動導入非詞元形式
9759914
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhai
0
3438939
9759915
2026-05-15T03:40:28Z
TongcyBot
83009
半自動導入非詞元形式
9759915
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhais
0
3438940
9759916
2026-05-15T03:40:29Z
TongcyBot
83009
半自動導入非詞元形式
9759916
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilham
0
3438941
9759917
2026-05-15T03:40:32Z
TongcyBot
83009
半自動導入非詞元形式
9759917
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhamos
0
3438942
9759918
2026-05-15T03:40:33Z
TongcyBot
83009
半自動導入非詞元形式
9759918
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhando
0
3438943
9759919
2026-05-15T03:40:36Z
TongcyBot
83009
半自動導入非詞元形式
9759919
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{pt-verb form of|engatilhar}}
ng4u5zlbtoa3vw3hihqeolv06uv72lo
engatilhara
0
3438944
9759920
2026-05-15T03:40:37Z
TongcyBot
83009
半自動導入非詞元形式
9759920
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharam
0
3438945
9759921
2026-05-15T03:40:40Z
TongcyBot
83009
半自動導入非詞元形式
9759921
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharas
0
3438946
9759922
2026-05-15T03:40:41Z
TongcyBot
83009
半自動導入非詞元形式
9759922
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhardes
0
3438947
9759923
2026-05-15T03:40:43Z
TongcyBot
83009
半自動導入非詞元形式
9759923
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharei
0
3438948
9759924
2026-05-15T03:40:45Z
TongcyBot
83009
半自動導入非詞元形式
9759924
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhareis
0
3438949
9759925
2026-05-15T03:40:47Z
TongcyBot
83009
半自動導入非詞元形式
9759925
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharem
0
3438950
9759926
2026-05-15T03:40:50Z
TongcyBot
83009
半自動導入非詞元形式
9759926
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharemos
0
3438951
9759927
2026-05-15T03:40:51Z
TongcyBot
83009
半自動導入非詞元形式
9759927
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhares
0
3438952
9759928
2026-05-15T03:40:53Z
TongcyBot
83009
半自動導入非詞元形式
9759928
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharia
0
3438953
9759929
2026-05-15T03:40:55Z
TongcyBot
83009
半自動導入非詞元形式
9759929
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhariam
0
3438954
9759930
2026-05-15T03:40:57Z
TongcyBot
83009
半自動導入非詞元形式
9759930
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharias
0
3438955
9759931
2026-05-15T03:41:00Z
TongcyBot
83009
半自動導入非詞元形式
9759931
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharmos
0
3438956
9759932
2026-05-15T03:41:02Z
TongcyBot
83009
半自動導入非詞元形式
9759932
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhará
0
3438957
9759933
2026-05-15T03:41:03Z
TongcyBot
83009
半自動導入非詞元形式
9759933
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharás
0
3438958
9759934
2026-05-15T03:41:06Z
TongcyBot
83009
半自動導入非詞元形式
9759934
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharão
0
3438959
9759935
2026-05-15T03:41:07Z
TongcyBot
83009
半自動導入非詞元形式
9759935
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharíamos
0
3438960
9759936
2026-05-15T03:41:10Z
TongcyBot
83009
半自動導入非詞元形式
9759936
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilharíeis
0
3438961
9759937
2026-05-15T03:41:11Z
TongcyBot
83009
半自動導入非詞元形式
9759937
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhas
0
3438962
9759938
2026-05-15T03:41:14Z
TongcyBot
83009
半自動導入非詞元形式
9759938
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhasse
0
3438963
9759939
2026-05-15T03:41:15Z
TongcyBot
83009
半自動導入非詞元形式
9759939
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhassem
0
3438964
9759940
2026-05-15T03:41:18Z
TongcyBot
83009
半自動導入非詞元形式
9759940
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhasses
0
3438965
9759941
2026-05-15T03:41:19Z
TongcyBot
83009
半自動導入非詞元形式
9759941
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhaste
0
3438966
9759942
2026-05-15T03:41:22Z
TongcyBot
83009
半自動導入非詞元形式
9759942
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhastes
0
3438967
9759943
2026-05-15T03:41:23Z
TongcyBot
83009
半自動導入非詞元形式
9759943
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhava
0
3438968
9759944
2026-05-15T03:41:25Z
TongcyBot
83009
半自動導入非詞元形式
9759944
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhavam
0
3438969
9759945
2026-05-15T03:41:27Z
TongcyBot
83009
半自動導入非詞元形式
9759945
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhavas
0
3438970
9759946
2026-05-15T03:41:29Z
TongcyBot
83009
半自動導入非詞元形式
9759946
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhe
0
3438971
9759947
2026-05-15T03:41:31Z
TongcyBot
83009
半自動導入非詞元形式
9759947
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhei
0
3438972
9759948
2026-05-15T03:41:33Z
TongcyBot
83009
半自動導入非詞元形式
9759948
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilheis
0
3438973
9759949
2026-05-15T03:41:35Z
TongcyBot
83009
半自動導入非詞元形式
9759949
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhem
0
3438974
9759950
2026-05-15T03:41:37Z
TongcyBot
83009
半自動導入非詞元形式
9759950
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhemos
0
3438975
9759951
2026-05-15T03:41:39Z
TongcyBot
83009
半自動導入非詞元形式
9759951
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhes
0
3438976
9759952
2026-05-15T03:41:41Z
TongcyBot
83009
半自動導入非詞元形式
9759952
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilho
0
3438977
9759953
2026-05-15T03:41:43Z
TongcyBot
83009
半自動導入非詞元形式
9759953
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhou
0
3438978
9759954
2026-05-15T03:41:45Z
TongcyBot
83009
半自動導入非詞元形式
9759954
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhámos
0
3438979
9759955
2026-05-15T03:41:47Z
TongcyBot
83009
半自動導入非詞元形式
9759955
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilháramos
0
3438980
9759956
2026-05-15T03:41:49Z
TongcyBot
83009
半自動導入非詞元形式
9759956
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilháreis
0
3438981
9759957
2026-05-15T03:41:51Z
TongcyBot
83009
半自動導入非詞元形式
9759957
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhásseis
0
3438982
9759958
2026-05-15T03:41:53Z
TongcyBot
83009
半自動導入非詞元形式
9759958
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhássemos
0
3438983
9759959
2026-05-15T03:41:55Z
TongcyBot
83009
半自動導入非詞元形式
9759959
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilhávamos
0
3438984
9759960
2026-05-15T03:41:57Z
TongcyBot
83009
半自動導入非詞元形式
9759960
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilháveis
0
3438985
9759961
2026-05-15T03:41:59Z
TongcyBot
83009
半自動導入非詞元形式
9759961
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|engatilhar}}
nnv0xackk413vg79awu3elc5ahpcylw
engatilla
0
3438986
9759962
2026-05-15T03:42:01Z
TongcyBot
83009
半自動導入非詞元形式
9759962
wikitext
text/x-wiki
{{also|engatillá}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
hausroroa93819i6gu99f9yfc30vega
engatillaba
0
3438987
9759963
2026-05-15T03:42:03Z
TongcyBot
83009
半自動導入非詞元形式
9759963
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillabais
0
3438988
9759964
2026-05-15T03:42:05Z
TongcyBot
83009
半自動導入非詞元形式
9759964
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaban
0
3438989
9759965
2026-05-15T03:42:06Z
TongcyBot
83009
半自動導入非詞元形式
9759965
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillabas
0
3438990
9759966
2026-05-15T03:42:08Z
TongcyBot
83009
半自動導入非詞元形式
9759966
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillad
0
3438991
9759967
2026-05-15T03:42:10Z
TongcyBot
83009
半自動導入非詞元形式
9759967
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillada
0
3438992
9759968
2026-05-15T03:42:12Z
TongcyBot
83009
半自動導入非詞元形式
9759968
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===分詞===
{{head|es|過去分詞變格形|g=f-s}}
# {{feminine singular of|es|engatillado}}
6wkl2xsa572qtnxs7lnq8euxscxhtd7
engatilladas
0
3438993
9759969
2026-05-15T03:42:14Z
TongcyBot
83009
半自動導入非詞元形式
9759969
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===分詞===
{{head|es|過去分詞變格形|g=f-p}}
# {{feminine plural of|es|engatillado}}
4khtkvzng3607eyq774uh20di6hhueu
engatillado
0
3438994
9759970
2026-05-15T03:42:16Z
TongcyBot
83009
半自動導入非詞元形式
9759970
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===分詞===
{{es-past participle}}
# {{past participle of|es|engatillar}}
0j3e7pdm0y1mvw4w504fl43lzkfixj0
engatillados
0
3438995
9759971
2026-05-15T03:42:18Z
TongcyBot
83009
半自動導入非詞元形式
9759971
wikitext
text/x-wiki
==西班牙語==
===發音===
{{es-pr}}
===分詞===
{{head|es|過去分詞變格形|g=m-p}}
# {{masculine plural of|es|engatillado}}
kpzcu1vipxn5t1j2oif0kk2blo8698p
engatillamos
0
3438996
9759972
2026-05-15T03:42:21Z
TongcyBot
83009
半自動導入非詞元形式
9759972
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillan
0
3438997
9759973
2026-05-15T03:42:22Z
TongcyBot
83009
半自動導入非詞元形式
9759973
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillando
0
3438998
9759974
2026-05-15T03:42:25Z
TongcyBot
83009
半自動導入非詞元形式
9759974
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動名詞}}
# {{es-verb form of|engatillar}}
p81cj7918rro6hfym9uisdwsn5lzhcx
engatillara
0
3438999
9759975
2026-05-15T03:42:26Z
TongcyBot
83009
半自動導入非詞元形式
9759975
wikitext
text/x-wiki
{{also|engatillará}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
hxoug0z414s7y9ksdqfmsvp33p69yc2
engatillarais
0
3439000
9759976
2026-05-15T03:42:29Z
TongcyBot
83009
半自動導入非詞元形式
9759976
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaran
0
3439001
9759977
2026-05-15T03:42:30Z
TongcyBot
83009
半自動導入非詞元形式
9759977
wikitext
text/x-wiki
{{also|engatillarán}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
f6w3fionpvz1ood1pm32wifenx4ke8z
engatillaras
0
3439002
9759978
2026-05-15T03:42:33Z
TongcyBot
83009
半自動導入非詞元形式
9759978
wikitext
text/x-wiki
{{also|engatillarás}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4gid88pc76lbvjpylm7wtyv2szrv273
engatillare
0
3439003
9759979
2026-05-15T03:42:34Z
TongcyBot
83009
半自動導入非詞元形式
9759979
wikitext
text/x-wiki
{{also|engatillaré}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
eqv9c394ru5hbxjqunum219c4wfw5pw
engatillareis
0
3439004
9759980
2026-05-15T03:42:37Z
TongcyBot
83009
半自動導入非詞元形式
9759980
wikitext
text/x-wiki
{{also|engatillaréis}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
2y7itti2apais62b68kuday9icl72hs
engatillaremos
0
3439005
9759981
2026-05-15T03:42:38Z
TongcyBot
83009
半自動導入非詞元形式
9759981
wikitext
text/x-wiki
{{also|engatilláremos}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
i03twe4b4ycust0v2v8wwg3cgng43yv
engatillaren
0
3439006
9759982
2026-05-15T03:42:41Z
TongcyBot
83009
半自動導入非詞元形式
9759982
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillares
0
3439007
9759983
2026-05-15T03:42:42Z
TongcyBot
83009
半自動導入非詞元形式
9759983
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarla
0
3439008
9759984
2026-05-15T03:42:45Z
TongcyBot
83009
半自動導入非詞元形式
9759984
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarlas
0
3439009
9759985
2026-05-15T03:42:46Z
TongcyBot
83009
半自動導入非詞元形式
9759985
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarle
0
3439010
9759986
2026-05-15T03:42:49Z
TongcyBot
83009
半自動導入非詞元形式
9759986
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarles
0
3439011
9759987
2026-05-15T03:42:50Z
TongcyBot
83009
半自動導入非詞元形式
9759987
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarlo
0
3439012
9759988
2026-05-15T03:42:52Z
TongcyBot
83009
半自動導入非詞元形式
9759988
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarlos
0
3439013
9759989
2026-05-15T03:42:54Z
TongcyBot
83009
半自動導入非詞元形式
9759989
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarme
0
3439014
9759990
2026-05-15T03:42:56Z
TongcyBot
83009
半自動導入非詞元形式
9759990
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarnos
0
3439015
9759991
2026-05-15T03:42:58Z
TongcyBot
83009
半自動導入非詞元形式
9759991
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaron
0
3439016
9759992
2026-05-15T03:43:00Z
TongcyBot
83009
半自動導入非詞元形式
9759992
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaros
0
3439017
9759993
2026-05-15T03:43:01Z
TongcyBot
83009
半自動導入非詞元形式
9759993
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarse
0
3439018
9759994
2026-05-15T03:43:04Z
TongcyBot
83009
半自動導入非詞元形式
9759994
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarte
0
3439019
9759995
2026-05-15T03:43:05Z
TongcyBot
83009
半自動導入非詞元形式
9759995
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillará
0
3439020
9759996
2026-05-15T03:43:08Z
TongcyBot
83009
半自動導入非詞元形式
9759996
wikitext
text/x-wiki
{{also|engatillara}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
cbdcv8wczbwsmo4n2b66k649hmonkbp
engatillarán
0
3439021
9759997
2026-05-15T03:43:09Z
TongcyBot
83009
半自動導入非詞元形式
9759997
wikitext
text/x-wiki
{{also|engatillaran}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
gva6afa91qielsp66cby3wmgy8icjw2
engatillarás
0
3439022
9759998
2026-05-15T03:43:12Z
TongcyBot
83009
半自動導入非詞元形式
9759998
wikitext
text/x-wiki
{{also|engatillaras}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
3jfxxswuo3dsl1g5wzuirt86868ho8w
engatillaré
0
3439023
9759999
2026-05-15T03:43:13Z
TongcyBot
83009
半自動導入非詞元形式
9759999
wikitext
text/x-wiki
{{also|engatillare}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
rbuv03z62hii75vxsw9nlvfp91ug0p8
engatillaréis
0
3439024
9760000
2026-05-15T03:43:16Z
TongcyBot
83009
半自動導入非詞元形式
9760000
wikitext
text/x-wiki
{{also|engatillareis}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
l09jt9rv7uwhltw64largt0loty4byw
engatillaría
0
3439025
9760001
2026-05-15T03:43:17Z
TongcyBot
83009
半自動導入非詞元形式
9760001
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaríais
0
3439026
9760002
2026-05-15T03:43:20Z
TongcyBot
83009
半自動導入非詞元形式
9760002
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaríamos
0
3439027
9760003
2026-05-15T03:43:21Z
TongcyBot
83009
半自動導入非詞元形式
9760003
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarían
0
3439028
9760004
2026-05-15T03:43:24Z
TongcyBot
83009
半自動導入非詞元形式
9760004
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillarías
0
3439029
9760005
2026-05-15T03:43:25Z
TongcyBot
83009
半自動導入非詞元形式
9760005
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillas
0
3439030
9760006
2026-05-15T03:43:28Z
TongcyBot
83009
半自動導入非詞元形式
9760006
wikitext
text/x-wiki
{{also|engatillás}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
5hu677e73yjizh83lab9gm6mg6d8om8
engatillase
0
3439031
9760007
2026-05-15T03:43:29Z
TongcyBot
83009
半自動導入非詞元形式
9760007
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaseis
0
3439032
9760008
2026-05-15T03:43:32Z
TongcyBot
83009
半自動導入非詞元形式
9760008
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillasen
0
3439033
9760009
2026-05-15T03:43:33Z
TongcyBot
83009
半自動導入非詞元形式
9760009
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillases
0
3439034
9760010
2026-05-15T03:43:35Z
TongcyBot
83009
半自動導入非詞元形式
9760010
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillaste
0
3439035
9760011
2026-05-15T03:43:37Z
TongcyBot
83009
半自動導入非詞元形式
9760011
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillasteis
0
3439036
9760012
2026-05-15T03:43:39Z
TongcyBot
83009
半自動導入非詞元形式
9760012
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatille
0
3439037
9760013
2026-05-15T03:43:40Z
TongcyBot
83009
半自動導入非詞元形式
9760013
wikitext
text/x-wiki
{{also|engatillé}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
tcmwnz5b11i1nua9bd1woc6quyuznzz
engatillemos
0
3439038
9760014
2026-05-15T03:43:43Z
TongcyBot
83009
半自動導入非詞元形式
9760014
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillen
0
3439039
9760015
2026-05-15T03:43:44Z
TongcyBot
83009
半自動導入非詞元形式
9760015
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatilles
0
3439040
9760016
2026-05-15T03:43:47Z
TongcyBot
83009
半自動導入非詞元形式
9760016
wikitext
text/x-wiki
{{also|engatillés}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
r9wuza76pt0vzt392h7qjgvizk63m41
engatillo
0
3439041
9760017
2026-05-15T03:43:48Z
TongcyBot
83009
半自動導入非詞元形式
9760017
wikitext
text/x-wiki
{{also|engatilló}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
o97fiq4wh36iuwl8qogm36yvjl8z4y4
engatillá
0
3439042
9760018
2026-05-15T03:43:52Z
TongcyBot
83009
半自動導入非詞元形式
9760018
wikitext
text/x-wiki
{{also|engatilla}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
l5br6wymaqkk8hb1m6itcsogk1zargi
engatillábamos
0
3439043
9760019
2026-05-15T03:43:53Z
TongcyBot
83009
半自動導入非詞元形式
9760019
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatilláis
0
3439044
9760020
2026-05-15T03:43:56Z
TongcyBot
83009
半自動導入非詞元形式
9760020
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándola
0
3439045
9760021
2026-05-15T03:43:57Z
TongcyBot
83009
半自動導入非詞元形式
9760021
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándolas
0
3439046
9760022
2026-05-15T03:44:00Z
TongcyBot
83009
半自動導入非詞元形式
9760022
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándole
0
3439047
9760023
2026-05-15T03:44:01Z
TongcyBot
83009
半自動導入非詞元形式
9760023
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándoles
0
3439048
9760024
2026-05-15T03:44:04Z
TongcyBot
83009
半自動導入非詞元形式
9760024
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándolo
0
3439049
9760025
2026-05-15T03:44:05Z
TongcyBot
83009
半自動導入非詞元形式
9760025
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándolos
0
3439050
9760026
2026-05-15T03:44:07Z
TongcyBot
83009
半自動導入非詞元形式
9760026
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándome
0
3439051
9760027
2026-05-15T03:44:09Z
TongcyBot
83009
半自動導入非詞元形式
9760027
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándonos
0
3439052
9760028
2026-05-15T03:44:11Z
TongcyBot
83009
半自動導入非詞元形式
9760028
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándoos
0
3439053
9760029
2026-05-15T03:44:13Z
TongcyBot
83009
半自動導入非詞元形式
9760029
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándose
0
3439054
9760030
2026-05-15T03:44:15Z
TongcyBot
83009
半自動導入非詞元形式
9760030
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillándote
0
3439055
9760031
2026-05-15T03:44:17Z
TongcyBot
83009
半自動導入非詞元形式
9760031
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatilláramos
0
3439056
9760032
2026-05-15T03:44:19Z
TongcyBot
83009
半自動導入非詞元形式
9760032
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatilláremos
0
3439057
9760033
2026-05-15T03:44:21Z
TongcyBot
83009
半自動導入非詞元形式
9760033
wikitext
text/x-wiki
{{also|engatillaremos}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
q90d3tdpx5ah01tlcwcmvg631p39dd9
engatillás
0
3439058
9760034
2026-05-15T03:44:23Z
TongcyBot
83009
半自動導入非詞元形式
9760034
wikitext
text/x-wiki
{{also|engatillas}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
0f4v4azr2e1vq3io8pmly5zrjxvbs0y
engatillásemos
0
3439059
9760035
2026-05-15T03:44:25Z
TongcyBot
83009
半自動導入非詞元形式
9760035
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillé
0
3439060
9760036
2026-05-15T03:44:27Z
TongcyBot
83009
半自動導入非詞元形式
9760036
wikitext
text/x-wiki
{{also|engatille}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
tj7txhop1lm7u7vxgxqow3hmv8nqw6n
engatilléis
0
3439061
9760037
2026-05-15T03:44:29Z
TongcyBot
83009
半自動導入非詞元形式
9760037
wikitext
text/x-wiki
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
4erc4v3l5ju6ko1go79gd1ly43f612z
engatillés
0
3439062
9760038
2026-05-15T03:44:31Z
TongcyBot
83009
半自動導入非詞元形式
9760038
wikitext
text/x-wiki
{{also|engatilles}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
irlivqfsj8ljbq7rpg1d39stm2bo9bk
engatilló
0
3439063
9760039
2026-05-15T03:44:32Z
TongcyBot
83009
半自動導入非詞元形式
9760039
wikitext
text/x-wiki
{{also|engatillo}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|engatillar}}
qkjxeell1d1iw3su4s7i3uzfjwbezpq
enlameai
0
3439064
9760040
2026-05-15T03:44:35Z
TongcyBot
83009
半自動導入非詞元形式
9760040
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameais
0
3439065
9760041
2026-05-15T03:44:36Z
TongcyBot
83009
半自動導入非詞元形式
9760041
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameamos
0
3439066
9760042
2026-05-15T03:44:39Z
TongcyBot
83009
半自動導入非詞元形式
9760042
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameando
0
3439067
9760043
2026-05-15T03:44:40Z
TongcyBot
83009
半自動導入非詞元形式
9760043
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{gerund of|pt|enlamear}}
0x7b63qzr6wza3ogin4urcnu0ts29vn
enlameara
0
3439068
9760044
2026-05-15T03:44:43Z
TongcyBot
83009
半自動導入非詞元形式
9760044
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearam
0
3439069
9760045
2026-05-15T03:44:45Z
TongcyBot
83009
半自動導入非詞元形式
9760045
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearas
0
3439070
9760046
2026-05-15T03:44:47Z
TongcyBot
83009
半自動導入非詞元形式
9760046
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameardes
0
3439071
9760047
2026-05-15T03:44:48Z
TongcyBot
83009
半自動導入非詞元形式
9760047
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearei
0
3439072
9760048
2026-05-15T03:44:51Z
TongcyBot
83009
半自動導入非詞元形式
9760048
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameareis
0
3439073
9760049
2026-05-15T03:44:52Z
TongcyBot
83009
半自動導入非詞元形式
9760049
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearem
0
3439074
9760050
2026-05-15T03:44:54Z
TongcyBot
83009
半自動導入非詞元形式
9760050
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearemos
0
3439075
9760051
2026-05-15T03:44:56Z
TongcyBot
83009
半自動導入非詞元形式
9760051
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameares
0
3439076
9760052
2026-05-15T03:44:58Z
TongcyBot
83009
半自動導入非詞元形式
9760052
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearia
0
3439077
9760053
2026-05-15T03:45:00Z
TongcyBot
83009
半自動導入非詞元形式
9760053
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameariam
0
3439078
9760054
2026-05-15T03:45:02Z
TongcyBot
83009
半自動導入非詞元形式
9760054
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearias
0
3439079
9760055
2026-05-15T03:45:04Z
TongcyBot
83009
半自動導入非詞元形式
9760055
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearmos
0
3439080
9760056
2026-05-15T03:45:06Z
TongcyBot
83009
半自動導入非詞元形式
9760056
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameará
0
3439081
9760057
2026-05-15T03:45:08Z
TongcyBot
83009
半自動導入非詞元形式
9760057
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearás
0
3439082
9760058
2026-05-15T03:45:10Z
TongcyBot
83009
半自動導入非詞元形式
9760058
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearão
0
3439083
9760059
2026-05-15T03:45:12Z
TongcyBot
83009
半自動導入非詞元形式
9760059
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearíamos
0
3439084
9760060
2026-05-15T03:45:14Z
TongcyBot
83009
半自動導入非詞元形式
9760060
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlamearíeis
0
3439085
9760061
2026-05-15T03:45:15Z
TongcyBot
83009
半自動導入非詞元形式
9760061
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameasse
0
3439086
9760062
2026-05-15T03:45:17Z
TongcyBot
83009
半自動導入非詞元形式
9760062
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameassem
0
3439087
9760063
2026-05-15T03:45:19Z
TongcyBot
83009
半自動導入非詞元形式
9760063
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameasses
0
3439088
9760064
2026-05-15T03:45:21Z
TongcyBot
83009
半自動導入非詞元形式
9760064
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameaste
0
3439089
9760065
2026-05-15T03:45:23Z
TongcyBot
83009
半自動導入非詞元形式
9760065
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameastes
0
3439090
9760066
2026-05-15T03:45:26Z
TongcyBot
83009
半自動導入非詞元形式
9760066
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameava
0
3439091
9760067
2026-05-15T03:45:27Z
TongcyBot
83009
半自動導入非詞元形式
9760067
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameavam
0
3439092
9760068
2026-05-15T03:45:29Z
TongcyBot
83009
半自動導入非詞元形式
9760068
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameavas
0
3439093
9760069
2026-05-15T03:45:32Z
TongcyBot
83009
半自動導入非詞元形式
9760069
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameei
0
3439094
9760070
2026-05-15T03:45:34Z
TongcyBot
83009
半自動導入非詞元形式
9760070
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameeis
0
3439095
9760071
2026-05-15T03:45:36Z
TongcyBot
83009
半自動導入非詞元形式
9760071
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameemos
0
3439096
9760072
2026-05-15T03:45:37Z
TongcyBot
83009
半自動導入非詞元形式
9760072
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameia
0
3439097
9760073
2026-05-15T03:45:39Z
TongcyBot
83009
半自動導入非詞元形式
9760073
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameiam
0
3439098
9760074
2026-05-15T03:45:41Z
TongcyBot
83009
半自動導入非詞元形式
9760074
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameias
0
3439099
9760075
2026-05-15T03:45:43Z
TongcyBot
83009
半自動導入非詞元形式
9760075
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameie
0
3439100
9760076
2026-05-15T03:45:46Z
TongcyBot
83009
半自動導入非詞元形式
9760076
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameiem
0
3439101
9760077
2026-05-15T03:45:47Z
TongcyBot
83009
半自動導入非詞元形式
9760077
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameies
0
3439102
9760078
2026-05-15T03:45:50Z
TongcyBot
83009
半自動導入非詞元形式
9760078
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameio
0
3439103
9760079
2026-05-15T03:45:51Z
TongcyBot
83009
半自動導入非詞元形式
9760079
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameou
0
3439104
9760080
2026-05-15T03:45:54Z
TongcyBot
83009
半自動導入非詞元形式
9760080
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameámos
0
3439105
9760081
2026-05-15T03:45:55Z
TongcyBot
83009
半自動導入非詞元形式
9760081
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameáramos
0
3439106
9760082
2026-05-15T03:45:58Z
TongcyBot
83009
半自動導入非詞元形式
9760082
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameáreis
0
3439107
9760083
2026-05-15T03:45:59Z
TongcyBot
83009
半自動導入非詞元形式
9760083
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameásseis
0
3439108
9760084
2026-05-15T03:46:02Z
TongcyBot
83009
半自動導入非詞元形式
9760084
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameássemos
0
3439109
9760085
2026-05-15T03:46:03Z
TongcyBot
83009
半自動導入非詞元形式
9760085
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameávamos
0
3439110
9760086
2026-05-15T03:46:06Z
TongcyBot
83009
半自動導入非詞元形式
9760086
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlameáveis
0
3439111
9760087
2026-05-15T03:46:08Z
TongcyBot
83009
半自動導入非詞元形式
9760087
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlamear}}
ely5zocqnribzic19byoccmcwf034w9
enlanguesce
0
3439112
9760088
2026-05-15T03:46:10Z
TongcyBot
83009
半自動導入非詞元形式
9760088
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescei
0
3439113
9760089
2026-05-15T03:46:12Z
TongcyBot
83009
半自動導入非詞元形式
9760089
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceis
0
3439114
9760090
2026-05-15T03:46:14Z
TongcyBot
83009
半自動導入非詞元形式
9760090
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescem
0
3439115
9760091
2026-05-15T03:46:15Z
TongcyBot
83009
半自動導入非詞元形式
9760091
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescemos
0
3439116
9760092
2026-05-15T03:46:17Z
TongcyBot
83009
半自動導入非詞元形式
9760092
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescendo
0
3439117
9760093
2026-05-15T03:46:19Z
TongcyBot
83009
半自動導入非詞元形式
9760093
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動名詞}}
# {{pt-verb form of|enlanguescer}}
lgev4dh3gxtsop4146000b58eq7e00v
enlanguescera
0
3439118
9760094
2026-05-15T03:46:21Z
TongcyBot
83009
半自動導入非詞元形式
9760094
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceram
0
3439119
9760095
2026-05-15T03:46:23Z
TongcyBot
83009
半自動導入非詞元形式
9760095
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceras
0
3439120
9760096
2026-05-15T03:46:25Z
TongcyBot
83009
半自動導入非詞元形式
9760096
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerdes
0
3439121
9760097
2026-05-15T03:46:27Z
TongcyBot
83009
半自動導入非詞元形式
9760097
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerei
0
3439122
9760098
2026-05-15T03:46:29Z
TongcyBot
83009
半自動導入非詞元形式
9760098
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescereis
0
3439123
9760099
2026-05-15T03:46:31Z
TongcyBot
83009
半自動導入非詞元形式
9760099
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerem
0
3439124
9760100
2026-05-15T03:46:33Z
TongcyBot
83009
半自動導入非詞元形式
9760100
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceremos
0
3439125
9760101
2026-05-15T03:46:34Z
TongcyBot
83009
半自動導入非詞元形式
9760101
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceres
0
3439126
9760102
2026-05-15T03:46:37Z
TongcyBot
83009
半自動導入非詞元形式
9760102
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceria
0
3439127
9760103
2026-05-15T03:46:38Z
TongcyBot
83009
半自動導入非詞元形式
9760103
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceriam
0
3439128
9760104
2026-05-15T03:46:41Z
TongcyBot
83009
半自動導入非詞元形式
9760104
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerias
0
3439129
9760105
2026-05-15T03:46:42Z
TongcyBot
83009
半自動導入非詞元形式
9760105
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescermos
0
3439130
9760106
2026-05-15T03:46:45Z
TongcyBot
83009
半自動導入非詞元形式
9760106
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerá
0
3439131
9760107
2026-05-15T03:46:46Z
TongcyBot
83009
半自動導入非詞元形式
9760107
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerás
0
3439132
9760108
2026-05-15T03:46:49Z
TongcyBot
83009
半自動導入非詞元形式
9760108
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescerão
0
3439133
9760109
2026-05-15T03:46:50Z
TongcyBot
83009
半自動導入非詞元形式
9760109
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceríamos
0
3439134
9760110
2026-05-15T03:46:53Z
TongcyBot
83009
半自動導入非詞元形式
9760110
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceríeis
0
3439135
9760111
2026-05-15T03:46:54Z
TongcyBot
83009
半自動導入非詞元形式
9760111
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesces
0
3439136
9760112
2026-05-15T03:46:57Z
TongcyBot
83009
半自動導入非詞元形式
9760112
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescesse
0
3439137
9760113
2026-05-15T03:46:58Z
TongcyBot
83009
半自動導入非詞元形式
9760113
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescessem
0
3439138
9760114
2026-05-15T03:47:01Z
TongcyBot
83009
半自動導入非詞元形式
9760114
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescesses
0
3439139
9760115
2026-05-15T03:47:02Z
TongcyBot
83009
半自動導入非詞元形式
9760115
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceste
0
3439140
9760116
2026-05-15T03:47:05Z
TongcyBot
83009
半自動導入非詞元形式
9760116
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescestes
0
3439141
9760117
2026-05-15T03:47:06Z
TongcyBot
83009
半自動導入非詞元形式
9760117
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesceu
0
3439142
9760118
2026-05-15T03:47:09Z
TongcyBot
83009
半自動導入非詞元形式
9760118
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesci
0
3439143
9760119
2026-05-15T03:47:10Z
TongcyBot
83009
半自動導入非詞元形式
9760119
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescia
0
3439144
9760120
2026-05-15T03:47:13Z
TongcyBot
83009
半自動導入非詞元形式
9760120
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesciam
0
3439145
9760121
2026-05-15T03:47:14Z
TongcyBot
83009
半自動導入非詞元形式
9760121
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescias
0
3439146
9760122
2026-05-15T03:47:17Z
TongcyBot
83009
半自動導入非詞元形式
9760122
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescida
0
3439147
9760123
2026-05-15T03:47:18Z
TongcyBot
83009
半自動導入非詞元形式
9760123
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=f-s}}
# {{feminine singular of|pt|enlanguescido}}
dhdajomh0z7xakndhz0t8t45zj7e4ya
enlanguescidas
0
3439148
9760124
2026-05-15T03:47:21Z
TongcyBot
83009
半自動導入非詞元形式
9760124
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=f-p}}
# {{feminine plural of|pt|enlanguescido}}
r08n6i8tqdyvnmrbhz8stp24luan84f
enlanguescido
0
3439149
9760125
2026-05-15T03:47:22Z
TongcyBot
83009
半自動導入非詞元形式
9760125
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{pt-pp}}
# {{past participle of|pt|enlanguescer}}
mzneqznd2s0oyj4ahkl2hauwm29dwyp
enlanguescidos
0
3439150
9760126
2026-05-15T03:47:24Z
TongcyBot
83009
半自動導入非詞元形式
9760126
wikitext
text/x-wiki
==葡萄牙語==
===分詞===
{{head|pt|過去分詞變格形|g=m-p}}
# {{masculine plural of|pt|enlanguescido}}
ad57b6zu974cd5f40qcbiwdc3hixdf8
enlanguescêramos
0
3439151
9760127
2026-05-15T03:47:26Z
TongcyBot
83009
半自動導入非詞元形式
9760127
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescêreis
0
3439152
9760128
2026-05-15T03:47:28Z
TongcyBot
83009
半自動導入非詞元形式
9760128
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescêsseis
0
3439153
9760129
2026-05-15T03:47:30Z
TongcyBot
83009
半自動導入非詞元形式
9760129
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescêssemos
0
3439154
9760130
2026-05-15T03:47:32Z
TongcyBot
83009
半自動導入非詞元形式
9760130
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescíamos
0
3439155
9760131
2026-05-15T03:47:34Z
TongcyBot
83009
半自動導入非詞元形式
9760131
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguescíeis
0
3439156
9760132
2026-05-15T03:47:36Z
TongcyBot
83009
半自動導入非詞元形式
9760132
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesça
0
3439157
9760133
2026-05-15T03:47:37Z
TongcyBot
83009
半自動導入非詞元形式
9760133
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesçais
0
3439158
9760134
2026-05-15T03:47:40Z
TongcyBot
83009
半自動導入非詞元形式
9760134
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesçam
0
3439159
9760135
2026-05-15T03:47:41Z
TongcyBot
83009
半自動導入非詞元形式
9760135
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesçamos
0
3439160
9760136
2026-05-15T03:47:44Z
TongcyBot
83009
半自動導入非詞元形式
9760136
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesças
0
3439161
9760137
2026-05-15T03:47:46Z
TongcyBot
83009
半自動導入非詞元形式
9760137
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
enlanguesço
0
3439162
9760138
2026-05-15T03:47:48Z
TongcyBot
83009
半自動導入非詞元形式
9760138
wikitext
text/x-wiki
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|enlanguescer}}
eo3ty7pihlkgk1malf1yktqsxu0lazd
文格
0
3439163
9760145
2026-05-15T06:09:42Z
Fglffer
55252
新詞條
9760145
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=wéngé
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[文章]]的[[風格]]
# [[公文]][[用紙]]
==日語==
{{ja-kanjitab|ぶん|かく|yomi=o}}
===發音===
{{ja-pron|ぶんかく|acc=0|acc_ref=DJR}}
===名詞===
{{ja-noun|ぶんかく}}
# [[文章]]的[[風格]]
===來源===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=문격}}
# {{hanja form of|문격}}
64mjpe21s0sjp4onpxspn87tsdp0sim
ぶんかく
0
3439164
9760146
2026-05-15T06:11:27Z
Fglffer
55252
新詞條
9760146
wikitext
text/x-wiki
==日語==
{{ja-see|文革|文格|分画}}
cmmvo5opjy7nuscm7s7019ijebdbx83
磇霜
0
3439165
9760152
2026-05-15T06:28:13Z
Fglffer
55252
新詞條
9760152
wikitext
text/x-wiki
==漢語==
{{zh-see|砒霜}}
95ajyxiv8enuwma991tb840mffkjexg
ひりつ
0
3439166
9760158
2026-05-15T06:47:08Z
Fglffer
55252
新詞條
9760158
wikitext
text/x-wiki
==日語==
{{ja-see-kango|比率}}
npb568a2fnblwxiqc96uyklq042hi0t
鼓舞人心
0
3439167
9760161
2026-05-15T07:00:22Z
Fglffer
55252
新詞條
9760161
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=22}}
===發音===
{{zh-pron
|m=gǔwǔrénxīn
|c=gu2 mou5 jan4 sam1
|cat=id
}}
===俗語===
{{head|zh|俗語}}
# [[振奮]]人們的[[信心]];[[增強]]人們的[[勇氣]]
2wzneij7bd856kdepfp0fmhero2tr1m
故國
0
3439168
9760167
2026-05-15T08:13:41Z
Fglffer
55252
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms|s=故国}} ===發音=== {{zh-pron |m=gùguó |c=gu3 gwok3 |mc=y |oc=2,1 |cat=n }} ===名詞=== {{head|zh|名詞}} # {{lb|zh|literary}} [[歷史]][[悠久]]的[[國家]] # {{lb|zh|literary}} [[古國]] # {{lb|zh|literary}} [[祖國]] # {{lb|zh|literary}} [[家鄉]] # {{lb|zh|literary}} 已經[[滅亡]]的國家 # {{lb|zh|literary}} [[舊都]];[[古城]] ====同義詞==== * {{s|祖國}} {{syn-saurus|zh|祖國}} *…」的新頁面
9760167
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=故国}}
===發音===
{{zh-pron
|m=gùguó
|c=gu3 gwok3
|mc=y
|oc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|literary}} [[歷史]][[悠久]]的[[國家]]
# {{lb|zh|literary}} [[古國]]
# {{lb|zh|literary}} [[祖國]]
# {{lb|zh|literary}} [[家鄉]]
# {{lb|zh|literary}} 已經[[滅亡]]的國家
# {{lb|zh|literary}} [[舊都]];[[古城]]
====同義詞====
* {{s|祖國}}
{{syn-saurus|zh|祖國}}
* {{s|家鄉}}
{{syn-saurus|zh|家鄉}}
{{C|zh|國家}}
==日語==
{{ja-kanjitab|こ|こく|yomi=o}}
===名詞===
{{ja-noun|ここく}}
# {{ja-kyu sp|故国}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=고국}}
# {{hanja form of|고국}}
rh8ondhktcuu6m9tku4w3mbeuvlznd5
9760173
9760167
2026-05-15T08:23:12Z
Sayonzei
40728
/* 名詞 */
9760173
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=故国}}
===發音===
{{zh-pron
|m=gùguó
|c=gu3 gwok3
|mc=y
|oc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|literary}} [[歷史]][[悠久]]的[[國家]]
# {{lb|zh|literary}} [[古國]]
# {{lb|zh|literary}} [[祖國]]
#* {{zh-x|苟 與 人 之 異,惡{wù} 往 而 不 黜 乎?猶且 黜 乎?寧 於 故國 爾。|ref=Zhanguoce}}
# {{lb|zh|literary}} [[家鄉]]
# {{lb|zh|literary}} 已經[[滅亡]]的國家
#* {{zh-x|小樓 昨夜 又 東風,故國 不堪回首 月明 中。||CI|ref=南唐·{{w|李煜}}《[[s:虞美人 (春花秋月何時了)|虞美人·春花秋月何時了]]》}}
# {{lb|zh|literary}} [[舊都]];[[古城]]
#* {{zh-x|齊 人 攻 ^衛,拔 故國,殺 @^子良;^衛 人 不 割,而 故地 複 反。|ref=Shiji}}
====同義詞====
* {{s|祖國}}
{{syn-saurus|zh|祖國}}
* {{s|家鄉}}
{{syn-saurus|zh|家鄉}}
{{C|zh|國家}}
==日語==
{{ja-kanjitab|こ|こく|yomi=o}}
===名詞===
{{ja-noun|ここく}}
# {{ja-kyu sp|故国}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=고국}}
# {{hanja form of|고국}}
lmnct6tl0d98or2sxo5igwxezdq9dwg
hiritsu
0
3439169
9760168
2026-05-15T08:16:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==日語== ===羅馬化=== {{ja-romaji}} # {{ja-romanization of|ひりつ}}」的新頁面
9760168
wikitext
text/x-wiki
==日語==
===羅馬化===
{{ja-romaji}}
# {{ja-romanization of|ひりつ}}
68rla4xpx4i3jkspw1izoe8bri2ju4e
honpō
0
3439170
9760170
2026-05-15T08:18:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==日語== ===羅馬化=== {{ja-rom}} # {{ja-rom of|ほんぽう}}」的新頁面
9760170
wikitext
text/x-wiki
==日語==
===羅馬化===
{{ja-rom}}
# {{ja-rom of|ほんぽう}}
4qbqp674grxl2uf84ppx1ysfe02tbj4
seichi
0
3439171
9760174
2026-05-15T08:23:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==日語== ===羅馬化=== {{ja-romaji}} # {{ja-romanization of|せいち}}」的新頁面
9760174
wikitext
text/x-wiki
==日語==
===羅馬化===
{{ja-romaji}}
# {{ja-romanization of|せいち}}
apv76wvd5kuqykk1n80xtxvfm2yelny
こうたん
0
3439172
9760177
2026-05-15T08:28:18Z
Fglffer
55252
新詞條
9760177
wikitext
text/x-wiki
==日語==
{{ja-see|後端|降誕|荒誕}}
gk6kmdwi4038uqf7tnpbhgbkvmydbvv