Wiktionary
thwiktionary
https://th.wiktionary.org/wiki/%E0%B8%A7%E0%B8%B4%E0%B8%81%E0%B8%B4%E0%B8%9E%E0%B8%88%E0%B8%99%E0%B8%B2%E0%B8%99%E0%B8%B8%E0%B8%81%E0%B8%A3%E0%B8%A1:%E0%B8%AB%E0%B8%99%E0%B9%89%E0%B8%B2%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81
MediaWiki 1.46.0-wmf.24
case-sensitive
สื่อ
พิเศษ
พูดคุย
ผู้ใช้
คุยกับผู้ใช้
วิกิพจนานุกรม
คุยเรื่องวิกิพจนานุกรม
ไฟล์
คุยเรื่องไฟล์
มีเดียวิกิ
คุยเรื่องมีเดียวิกิ
แม่แบบ
คุยเรื่องแม่แบบ
วิธีใช้
คุยเรื่องวิธีใช้
หมวดหมู่
คุยเรื่องหมวดหมู่
ภาคผนวก
คุยเรื่องภาคผนวก
ดัชนี
คุยเรื่องดัชนี
สัมผัส
คุยเรื่องสัมผัส
อรรถาภิธาน
คุยเรื่องอรรถาภิธาน
TimedText
TimedText talk
มอดูล
คุยเรื่องมอดูล
Event
Event talk
ก็
0
5797
5720831
5629691
2026-04-21T15:22:35Z
~2026-24494-91
18895
5720831
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รูปแบบอื่น ===
* {{alt|th|ก|ก่||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-pro|*koːꟲ}}; ร่วมเชื้อสายกับ{{cog|lo|ກໍ}} หรือ {{m|lo|ກໍ່}}, {{cog|nod|ᨣᩴ᩵}}, {{cog|blt|ꪁꪷ꫁}}, {{cog|shn|ၵေႃႈ}} หรือ {{m|shn|ၵေႃး}}, {{cog|zzj|ko}}, {{cog|za|goj}}, {{cog|aho|𑜀𑜦𑜡}} หรือ {{m|aho|𑜀𑜦𑜨𑜡}}; เทียบ{{cog|okz|ka}}, {{m|okz|*ko}}, {{m|okz|*kar}}, {{cog|km|ក៏}}
=== การออกเสียง ===
=== คำอนุภาค ===
{{th-part|-}}
# [[แล้ว]]
# [[จึง]]
# [[ย่อม]]
#: {{ux|th|ทำดีก็ได้ดี}}
# [[ด้วย]]
#: {{ux|th|เขาก็เช่นกัน}}
==== คำแปลภาษาอื่น ====
{{trans-top|แล้ว; จึง; ย่อม}}
* Albanian: [[pastaj]]
* Armenian: [[հետո]] (heto)
* Czech: [[pak]], [[cs|potom]]
* Dutch: [[toen]] '' (past tense) '', [[dan]] '' (present and future tenses) ''
* Esperanto: [[tiam]]
* Finnish: [[sitten]]
* French: [[puis]]
* Kurdish: [[paşî]], [[dûre]], [[piştre]], [[dûvre]], [[peyre]]
* Malay: [[tidak lama kemudian]]
* Polish: (a) [[następnie]], (a) [[potem]]
* Portuguese: [[depois]], [[em seguida]]
* Russian: [[затем]] (zatém), [[потом]] (potóm)
* Slovenian: potem
* Spanish: [[luego]]
* Swedish: [[därpå]], [[sen]], [[sedan]], [[så]]
* คำเมือง: {{t+|nod|ᨣᩴ᩵}}
* ญี่ปุ่น: [[それから]] (sorekara), [[その後]] (sono ato), その後 (sono go), [[そして]] (soshite)
* ไทดำ: {{t+|blt|ꪁꪷ꫁}}
* ไทใหญ่: {{t+|shn|ၵေႃႈ}}
* ลาว: {{t+|lo|ກໍ}}
* อังกฤษ: {{t+|en|then|tr=เฑ็น}}
* อังกฤษเก่า: [[þa]]
{{trans-bottom}}
<!-- ด้วย; เช่นเดียวกัน -->
{{trans-top|ด้วย; เช่นเดียวกัน}}
* [[Breton]]: [[ivez]]
* จีน:
*: Simplified: [[都]] (dōu/dū), [[也]] (yě), [[亦]] (yì), [[还]] (hái/huán), [[同样]]地 (tóng yàng de)
*: Traditional: 都, 也, 亦, [[還]], [[同樣]]地
* Czech: [[také]]
* Dutch: [[ook]], [[eveneens]] (formal), [[tevens]] (formal)
* Esperanto: [[ankaŭ]]
* Estonian: [[samuti]], [[ühtlasi]]
* English: [[also]]
* Finnish: [[myös]], [[-kin]]
* French: [[aussi]], [[également]]
* German: [[auch]]
* Hebrew: [[גם]] (gam)
* Hungarian: [[szintén]], [[is]], [[ugyancsak]]
* Icelandic: [[líka]], [[einnig]]
* [[Ido]]: [[anke]]
* Indonesian: [[juga]]
* Irish: [[freisin]]
* Italian: [[it|anche]]
* ญี่ปุ่น: {{t+|ja|また|tr=mata}}
* Latin: [[quoque]]
* Maltese: [[ukoll]], anke
* Polish: [[też]], [[również]], [[także]]
* Portuguese: [[também]]
* Russian: [[тоже]], [[также]]
* Slovak: [[aj]]
* Slovene: [[tudi]]
* Spanish: [[también]]
* Swedish: [[också]]
* [[West Frisian]]: [[ek]]
* Yiddish: [[אויך]]
{{trans-bottom}}
=== คำสันธาน ===
{{th-con}}
# ด้วย[[เช่น]][[กัน]]
#: {{ux|th|เมื่อเขาพูดจบ ทุกคนก็ตบมือ}}
jofodrglyia9qrgh4y3gfavagwxs9t3
5720862
5720831
2026-04-22T01:28:50Z
OctraBot
3198
ย้อนรุ่นแก้ไข [[Special:Diff/5720831|5720831]] ของ [[Special:Contributions/~2026-24494-91|~2026-24494-91]] ([[User talk:~2026-24494-91|คุย]])
5720862
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รูปแบบอื่น ===
* {{alt|th|ก|ก่||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-pro|*koːꟲ}}; ร่วมเชื้อสายกับ{{cog|lo|ກໍ}} หรือ {{m|lo|ກໍ່}}, {{cog|nod|ᨣᩴ᩵}}, {{cog|blt|ꪁꪷ꫁}}, {{cog|shn|ၵေႃႈ}} หรือ {{m|shn|ၵေႃး}}, {{cog|zzj|ko}}, {{cog|za|goj}}, {{cog|aho|𑜀𑜦𑜡}} หรือ {{m|aho|𑜀𑜦𑜨𑜡}}; เทียบ{{cog|okz|ka}}, {{m|okz|*ko}}, {{m|okz|*kar}}, {{cog|km|ក៏}}
=== การออกเสียง ===
{{th-pron|เก้าะ|ก้อ}}
=== คำอนุภาค ===
{{th-part|-}}
# [[แล้ว]]
# [[จึง]]
# [[ย่อม]]
#: {{ux|th|ทำดีก็ได้ดี}}
# [[ด้วย]]
#: {{ux|th|เขาก็เช่นกัน}}
==== คำแปลภาษาอื่น ====
{{trans-top|แล้ว; จึง; ย่อม}}
* Albanian: [[pastaj]]
* Armenian: [[հետո]] (heto)
* Czech: [[pak]], [[cs|potom]]
* Dutch: [[toen]] '' (past tense) '', [[dan]] '' (present and future tenses) ''
* Esperanto: [[tiam]]
* Finnish: [[sitten]]
* French: [[puis]]
* Kurdish: [[paşî]], [[dûre]], [[piştre]], [[dûvre]], [[peyre]]
* Malay: [[tidak lama kemudian]]
* Polish: (a) [[następnie]], (a) [[potem]]
* Portuguese: [[depois]], [[em seguida]]
* Russian: [[затем]] (zatém), [[потом]] (potóm)
* Slovenian: potem
* Spanish: [[luego]]
* Swedish: [[därpå]], [[sen]], [[sedan]], [[så]]
* คำเมือง: {{t+|nod|ᨣᩴ᩵}}
* ญี่ปุ่น: [[それから]] (sorekara), [[その後]] (sono ato), その後 (sono go), [[そして]] (soshite)
* ไทดำ: {{t+|blt|ꪁꪷ꫁}}
* ไทใหญ่: {{t+|shn|ၵေႃႈ}}
* ลาว: {{t+|lo|ກໍ}}
* อังกฤษ: {{t+|en|then|tr=เฑ็น}}
* อังกฤษเก่า: [[þa]]
{{trans-bottom}}
<!-- ด้วย; เช่นเดียวกัน -->
{{trans-top|ด้วย; เช่นเดียวกัน}}
* [[Breton]]: [[ivez]]
* จีน:
*: Simplified: [[都]] (dōu/dū), [[也]] (yě), [[亦]] (yì), [[还]] (hái/huán), [[同样]]地 (tóng yàng de)
*: Traditional: 都, 也, 亦, [[還]], [[同樣]]地
* Czech: [[také]]
* Dutch: [[ook]], [[eveneens]] (formal), [[tevens]] (formal)
* Esperanto: [[ankaŭ]]
* Estonian: [[samuti]], [[ühtlasi]]
* English: [[also]]
* Finnish: [[myös]], [[-kin]]
* French: [[aussi]], [[également]]
* German: [[auch]]
* Hebrew: [[גם]] (gam)
* Hungarian: [[szintén]], [[is]], [[ugyancsak]]
* Icelandic: [[líka]], [[einnig]]
* [[Ido]]: [[anke]]
* Indonesian: [[juga]]
* Irish: [[freisin]]
* Italian: [[it|anche]]
* ญี่ปุ่น: {{t+|ja|また|tr=mata}}
* Latin: [[quoque]]
* Maltese: [[ukoll]], anke
* Polish: [[też]], [[również]], [[także]]
* Portuguese: [[também]]
* Russian: [[тоже]], [[также]]
* Slovak: [[aj]]
* Slovene: [[tudi]]
* Spanish: [[también]]
* Swedish: [[också]]
* [[West Frisian]]: [[ek]]
* Yiddish: [[אויך]]
{{trans-bottom}}
=== คำสันธาน ===
{{th-con}}
# ด้วย[[เช่น]][[กัน]]
#: {{ux|th|เมื่อเขาพูดจบ ทุกคนก็ตบมือ}}
76la5ja037ydink622jpj399qt7a4yq
ႁိူဝ်းမိၼ်
0
9401
5720872
1515562
2026-04-22T02:48:05Z
Ai Ku Karng
17824
/* คำพ้องความ */
5720872
wikitext
text/x-wiki
== ภาษาไทใหญ่ ==
=== รากศัพท์ ===
{{com|shn|ႁိူဝ်း|မိၼ်|t1=เรือ|t2=บิน}}
=== การออกเสียง ===
{{shn-pron|ႁိူဝ်း-မိၼ်}}
=== คำนาม ===
{{shn-noun}}
# [[เครื่องบิน]]
==== คำพ้องความ ====
{{col4|shn|title=เครื่องบิน
|လေႇယိၼ်ႇပျၢၼ်ႇ
|လဵင်ႇပျၢၼ်ႇ
|ၶိူင်ႈမိၼ်
}}
cqycgkmr7tgvp9b925ld1x8udo1ffgx
North America
0
17110
5720932
5719404
2026-04-22T04:29:51Z
OctraBot
3198
/* ภาษาอังกฤษ */ เก็บกวาด
5720932
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ˌnɔː(ɹ)θ əˈmɛɹɪkə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-North America.wav|a=Southern England}}
* {{rhymes|en|ɛɹɪkə|s=5}}
=== คำวิสามานยนาม ===
{{en-proper noun|head=[[north|North]] [[America]]}}
# {{senseid|en|Q49}} {{tcl|en|อเมริกาเหนือ|id=Q49}}
#: {{syn|en|India Nova|Turtle Island}}
#* {{quote-text|en|date=May 12 1991|chapter=[[w:List of Jeeves and Wooster episodes|Kidnapped!]]|title=w:Jeeves and Wooster|section=Series 2, Episode 5
|passage=''Jeeves:'' Foreign travel often liberates emotions best kept in check, sir. The air of '''North America''' is notoriously stimulating in this regard, as witness the regrettable behavior of its inhabitants in 1776.<br>''B. Wooster:'' Hm? What happened in 1776, Jeeves?<br>''Jeeves:'' I prefer not to dwell on it, if it's convenient to you, sir.}}
# {{lb|en|United States|Canada}} [[แคนาดา]]และ[[สหรัฐอเมริกา]]รวมกัน โดยไม่รวม[[เม็กซิโก]] [[อเมริกากลาง]] ประเทศในแถบ[[แคริบเบียน]] และ[[กรีนแลนด์]] เทียบเท่ากับ[[อเมริกาเหนือ]]โดยประมาณ มักใช้เพื่ออธิบายในบริบทของสิ่งที่รวมเฉพาะสหรัฐอเมริกาและแคนาดาเท่านั้น
==== ลูกคำ ====
{{col|en|British North America|French North America|North American}}
=== ดูเพิ่ม ===
{{list:continents/en}}
{{list:countries in North America/en}}
{{list:territories of North America/en}}
* {{l|en|Latin America}}
=== อ่านเพิ่ม ===
* {{pedia|lang=en}}
ks3a4ypq29401dwz1jai4m3z7zcp0bl
โกณ
0
19963
5720827
1767684
2026-04-21T13:03:23Z
OctraBot
3198
/* รากศัพท์ */
5720827
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{bor+|th|sa|कोण||มุม; ไม้ตีกลอง}}; ร่วมเชื้อสายกับ {{cog|la|gonia||มุม}}, {{inh+|ru|ine-pro|*genu||หัวเข่า}}
=== การออกเสียง ===
{{th-pron|โกน|โก-นะ-}}
=== คำนาม ===
{{th-noun}}
# [[มุม]], [[เหลี่ยม]]
=== รูปแบบอื่น ===
* [[โกณก]]
=== คำเกี่ยวข้อง ===
* [[ตรีโกณมิติ]]
fucclfm32ot5jjesrsa7ojnb8bc8jcw
ເຮືອບິນ
0
22561
5720930
1544783
2026-04-22T04:04:58Z
Ai Ku Karng
17824
/* ภาษาลาว */
5720930
wikitext
text/x-wiki
== ภาษาลาว ==
=== รากศัพท์ ===
{{com|lo|ເຮືອ|ບິນ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|th|เรือบิน}}, {{cog|nod|ᩁᩮᩬᩥᩋᨷᩥ᩠ᨶ}}, {{cog|khb|ᦵᦣᦲᦢᦲᧃ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}
=== การออกเสียง ===
{{lo-pron|ເຮືອ-ບິນ}}
=== คำนาม ===
{{lo-noun|ລຳ}}
# [[เครื่องบิน]]
o5w9ok6q7tfdusyya4wbtef2rafyqge
ผู้ใช้:OctraBot
2
33633
5720937
3050336
2026-04-22T09:06:37Z
OctraBot
3198
5720937
wikitext
text/x-wiki
{{bot|Octahedron80|status=active}}
'''OctraBot''' เป็น[[วิกิพีเดีย:บอต|บอต]]ของ Octahedron80 เพื่อการแก้ไขจำนวนมาก เช่น เก็บกวาดเนื้อหาทั่วไป แก้การสะกด นำเข้ารายการจากวิกิอื่น อย่างไรก็ตามบอตนี้เป็นแบบกึ่งอัตโนมัติ หมายความว่า บอตจะทำงานที่ได้มอบหมายตามสั่ง ไม่ได้ทำงานตลอดเวลา และงานก็อาจไม่เหมือนเดิมทุกครั้ง ถ้าบอตนี้ทำงานผิดพลาด สามารถกดย้อนกลับได้ และกรุณาช่วยแจ้งความผิดพลาดแก่เจ้าของบอตด้วย
OctraBot ใช้ [[:mw:pywikibot|pywikibot]] เป็นหลัก เพื่อความสะดวกรวดเร็ว และมีชุมชนคอยช่วยอัปเดตตลอดเวลา
* [[/กระบะทราย]]
* [[ผู้ใช้:Octahedron80/กระบะทราย3]]
62gs0tvl37vzqbese5iljfbprnb07nf
มอดูล:labels/data
828
37614
5720952
5688353
2026-04-22T11:34:09Z
OctraBot
3198
5720952
Scribunto
text/plain
local labels = {}
-- Grammatical labels
labels["คำย่อ"] = {
aliases = {"abbreviation"},
glossary = true,
pos_categories = "คำย่อ",
}
labels["อาการนาม"] = {
aliases = {"abstract noun"},
display = "อาการนาม",
glossary = true,
pos_categories = "คำอาการนาม",
}
labels["อักษรย่อรวมพยางค์"] = {
aliases = {"acronym"},
glossary = true,
pos_categories = "อักษรย่อรวมพยางค์",
}
labels["กรรตุวาจก"] = {
aliases = {"active", "in the active", "active voice"},
glossary = true,
}
labels["สกรรมและอกรรม"] = {
aliases = {"ambitransitive", "อกรรมและสกรรม"},
glossary = true,
pos_categories = {"คำสกรรมกริยา", "คำอกรรมกริยา"},
}
labels["angry register"] = {
aliases = {"angry", "anger", "said in anger"},
glossary = true,
pos_categories = "angry register terms",
}
labels["มีชีวิต"] = {
aliases = {"animate"},
glossary = true,
}
labels["บอกเล่า"] = {
aliases = {"indicative", "in the indicative", "indicative mood"},
glossary = "มาลาบอกเล่า",
}
labels["สมมุติ"] = {
aliases = {"subjunctive", "in the subjunctive", "subjunctive mood"},
glossary = "มาลาสมมุติ",
}
labels["สั่ง"] = {
aliases = {"imperative", "in the imperative", "imperative mood", "คำสั่ง"},
glossary = "มาลาสั่ง",
}
labels["ขอร้อง"] = {
aliases = {"jussive", "in the jussive", "jussive mood", "ร้องขอ"},
glossary = "มาลาขอร้อง",
}
labels["atelic"] = {
glossary = true,
}
labels["attenuative"] = {
pos_categories = "attenuative verbs",
}
labels["attributive"] = {
glossary = true,
}
labels["attributively"] = {
glossary = "attributive",
}
labels["ช่วย"] = {
aliases = {"auxiliary", "กริยาช่วย", "คำกริยาช่วย", "คำช่วยกริยา", "กริยานุเคราะห์", "คำกริยานุเคราะห์"},
glossary = true,
pos_categories = "คำกริยาช่วย",
}
labels["จำนวนเชิงการนับ"] = {
aliases = {"cardinal", "cardinal number", "เชิงการนับ"},
display = "[[จำนวนเชิงการนับ]]",
pos_categories = "จำนวนเชิงการนับ",
}
labels["catenative"] = {
glossary = "catenative verb",
}
labels["causative"] = {
glossary = true,
}
labels["causative verb"] = {
display = "causative",
glossary = true,
pos_categories = "causative verbs",
}
labels["cognate object"] = {
aliases = {"with cognate object"},
display = "with [[w:Cognate object|cognate object]]",
pos_categories = "verbs used with cognate objects",
}
labels["สมุหนาม"] = {
aliases = {"collective"},
glossary = true,
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collectively"] = {
glossary = "collective",
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collective number"] = {
aliases = {"collective numeral"},
display = "[[collective number]]",
pos_categories = "collective numbers",
}
labels["control verb"] = {
aliases = {"control"},
Wikipedia = true,
pos_categories = "control verbs",
}
labels["เพศรวม"] = {
aliases = {"common", "รวม"},
glossary = true,
}
labels["เปรียบเทียบได้"] = {
aliases = {"comparable"},
glossary = true,
}
labels["completive"] = {
pos_categories = "completive verbs",
}
labels["เชื่อม"] = {
aliases = {"copular"},
display = "[[คำกริยาเชื่อม|เชื่อม]]",
pos_categories = "คำกริยาเชื่อม",
}
labels["นับได้"] = {
aliases = {"countable"},
glossary = true,
pos_categories = "คำนามนับได้",
}
labels["cumulative"] = {
pos_categories = "cumulative verbs",
}
labels["delimitative"] = {
pos_categories = "delimitative verbs",
}
labels["deponent"] = {
glossary = true,
pos_categories = "deponent verbs",
}
labels["distributive"] = {
pos_categories = "distributive verbs",
}
labels["distributive number"] = {
aliases = {"distributive numeral"},
display = "[[distributive number]]",
pos_categories = "distributive numbers",
}
labels["ทวิกรรม"] = {
aliases = {"ditransitive", "ทวิกรรมกริยา"},
glossary = true,
pos_categories = "คำทวิกรรมกริยา",
}
labels["dysphemistic"] = {
aliases = {"dysphemism"},
glossary = true,
pos_categories = "dysphemisms",
}
labels["by ellipsis"] = {
aliases = {"ellipsis"},
glossary = "ellipsis",
pos_categories = "ellipses",
}
labels["emphatic"] = {
glossary = true,
}
labels["ergative"] = {
glossary = true,
pos_categories = "ergative verbs",
}
labels["expressive"] = {
glossary = true,
pos_categories = "expressive terms",
}
labels["by extension"] = {
aliases = {"hence"},
}
labels["เพศหญิง"] = {
aliases = {"feminine", "หญิง"},
glossary = true,
}
labels["focus"] = {
glossary = true,
pos_categories = "focus adverbs",
}
labels["fractional"] = {
aliases = {"fractional number", "fractional numeral"},
display = "[[fractional number]]",
pos_categories = "fractional numbers",
}
labels["frequentative"] = {
glossary = true,
pos_categories = "frequentative verbs",
}
labels["hedge"] = {
aliases = {"hedges"},
glossary = true,
pos_categories = "hedges",
}
labels["ideophonic"] = {
aliases = {"ideophone"},
glossary = true,
}
labels["สำนวน"] = {
aliases = {"idiomatic", "idiom", "idiomatically", "สำ"},
glossary = true,
pos_categories = "สำนวน",
}
labels["imperfect"] = {
glossary = true,
}
labels["ไม่สมบูรณ์"] = {
aliases = {"imperfective"},
glossary = true,
pos_categories = "คำกริยาไม่สมบูรณ์",
}
labels["อบุรุษ"] = {
aliases = {"impersonal", "impersonal verbs", "อบุรุษกริยา", "คำอบุรุษกริยา"},
glossary = true,
pos_categories = "คำอบุรุษกริยา",
}
labels["ในรูปเอกพจน์"] = {
aliases = {"in singular", "in the singular"},
display = "ในรูป[[เอกพจน์]]",
}
labels["ในรูปทวิพจน์"] = {
aliases = {"in dual", "in the dual"},
display = "ในรูป[[ทวิพจน์]]",
}
labels["ในรูปพหูพจน์"] = {
aliases = {"in plural"},
display = "ในรูป[[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]]",
}
labels["ไม่มีชีวิต"] = {
aliases = {"inanimate"},
glossary = true,
}
labels["inchoative"] = {
pos_categories = "inchoative verbs",
}
labels["ไม่ชี้เฉพาะ"] = {
aliases = {"indef", "indefinite"},
glossary = true,
}
labels["อักษรย่อ"] = {
aliases = {"initialism"},
glossary = true,
pos_categories = "อักษรย่อ",
}
labels["intensive verb"] = {
display = "intensive",
pos_categories = "intensive verbs",
}
labels["อกรรม"] = {
aliases = {"intransitive", "อกรรมกริยา"},
glossary = true,
pos_categories = "คำอกรรมกริยา",
}
labels["ไอพีเอ"] = {
aliases = {"IPA", "International Phonetic Alphabet", "สัทอักษรสากล"},
Wikipedia = "สัทอักษรสากล",
plain_categories = "สัญลักษณ์สำหรับสัทอักษรสากล",
}
labels["iterative"] = {
glossary = true,
pos_categories = "iterative verbs",
}
labels["litotes"] = {
aliases = {"litote", "litotic", "litotical"},
glossary = true,
pos_categories = true,
}
labels["เพศชาย"] = {
aliases = {"masculine", "ชาย"},
glossary = true,
}
labels["mediopassive"] = {
aliases = {"in the mediopassive", "in mediopassive"},
glossary = true,
}
labels["meiosis"] = {
aliases = {"meioses", "meiotic"},
glossary = true,
pos_categories = "meioses",
}
labels["middle voice"] = {
aliases = {"middle", "in the middle", "in the middle voice"},
glossary = true,
}
labels["รูปสะกดผิด"] = {
aliases = {"misspelling", "สะกดผิด"},
display = "[[รูปสะกดผิด]]",
}
labels["mnemonic"] = {
display = "[[mnemonic]]",
pos_categories = "mnemonics",
}
labels["modal"] = {
Wikipedia = "Modality (linguistics)",
}
labels["NAPA"] = {
aliases = {"Americanist_phonetic_notation"},
Wikipedia = "Americanist_phonetic_notation",
plain_categories = "NAPA symbols",
}
labels["always in the negative"] = {
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative"] = {
aliases = {"chiefly used in the negative", "negative polarity", "negative polarity item", "usually in the negative", "usually used in the negative"},
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative plural"] = {
aliases = {"chiefly used in the negative plural", "negative polarity plural", "negative polarity plural item", "usually in the negative plural", "usually used in the negative plural"},
display = "chiefly in the [[Appendix:Glossary#negative polarity item|negative]] [[Appendix:Glossary#plural|plural]]",
pos_categories = "negative polarity items",
}
labels["chiefly in the positive"] = {
aliases = {"chiefly used in the positive", "positive polarity", "positive polarity item", "usually in the positive", "usually used in the positive"},
glossary = "positive polarity item",
-- pos_categories = {"positive polarity items"},
}
labels["chiefly in the positive plural"] = {
aliases = {"chiefly used in the positive plural", "positive polarity plural", "positive polarity plural item", "usually in the positive plural", "usually used in the positive plural"},
display = "chiefly in the [[Appendix:Glossary#positive polarity item|positive]] [[Appendix:Glossary#plural|plural]]",
-- pos_categories = "positive polarity items",
}
labels["เพศกลาง"] = {
aliases = {"neuter", "กลาง"},
glossary = true,
}
-- British English ("ise")
labels["nominalised"] = {
aliases = {"nominalisation", "substantivised", "substantivisation"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
-- American English ("ize")
labels["nominalized"] = {
aliases = {"nominalization", "substantivized", "substantivization"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
labels["เปรียบเทียบไม่ได้"] = {
aliases = {"not comparable", "notcomp", "uncomparable"},
glossary = "เปรียบเทียบไม่ได้",
}
labels["เลียนเสียง"] = {
aliases = {"onomatopoeia", "onomatopoeic", "เลียนเสียงธรรมชาติ"},
glossary = true,
pos_categories = "ศัพท์ที่เลียนเสียงธรรมชาติ",
}
labels["เชิงอันดับที่"] = {
aliases = {"ordinal", "ordinal numbers", "จำนวนเชิงอันดับที่"},
display = "[[จำนวนเชิงอันดับที่]]",
pos_categories = "จำนวนเชิงอันดับที่",
}
labels["partitive verb"] = {
display = "[[ภาคผนวก:อภิธานศัพท์#สกรรม|สกรรม]], มักจะ[[ภาคผนวก:คำกริยามีจุดจบและไม่มีจุดจบภาษาฟินนิก|ไม่มีจุดจบ]]",
pos_categories = "คำสกรรมกริยา", -- = "partitive verbs",
}
labels["perfect"] = {
glossary = true,
}
labels["รูปกริยาขยาย"] = {
aliases = {"participle"},
glossary = true,
}
labels["กรรมวาจก"] = {
aliases = {"passive", "in the passive", "passive voice"},
glossary = true,
}
labels["perfect"] = {
glossary = true,
}
labels["สมบูรณ์"] = {
glossary = true,
pos_categories = "คำกริยาสมบูรณ์",
}
labels["พหูพจน์เท่านั้น"] = {
aliases = {"plural only", "pluralonly", "plurale tantum"},
pos_categories = "คำนามพหูพจน์เท่านั้น",
}
labels["possessional adjective"] = {
aliases = {"possessional", "possessional adjectives"},
display = "possessional",
glossary = true,
pos_categories = "possessional adjectives",
}
labels["สรรพนามแสดงความเป็นเจ้าของ"] = {
aliases = {"possessive pronoun", "possessive determiner"},
display = "แสดงความเป็นเจ้าของ",
glossary = "possessive determiner",
pos_categories = "คำสรรพนามแสดงความเป็นเจ้าของ",
}
labels["postpositive"] = {
glossary = true,
}
labels["ภาคแสดง"] = {
aliases = {"predicative"},
glossary = true,
}
labels["predicatively"] = {
glossary = "ภาคแสดง",
}
labels["prescriptive"] = {
aliases = {"normative", "prescribed"},
glossary = true,
}
labels["privative"] = {
pos_categories = "privative verbs",
}
labels["procedure word"] = {
display = "[[procedure word]]",
}
labels["productive"] = {
glossary = true,
}
-- TODO: This label is probably inappropriate for many languages
labels["pronominal"] = {
glossary = "pronominal verb",
}
labels["pro-verb"] = {
Wikipedia = true,
}
labels["reciprocal"] = {
glossary = true,
pos_categories = "reciprocal verbs",
}
labels["สะท้อน"] = {
aliases = {"reflexive"},
glossary = true,
pos_categories = "คำกริยาสะท้อน",
}
labels["คำสรรพนามสะท้อน"] = {
aliases = {"reflexive pronoun", "สรรพนามสะท้อน"},
glossary = "สะท้อน",
pos_categories = "คำสรรพนามสะท้อน",
}
labels["คำคุณศัพท์สัมพันธ์"] = {
aliases = {"relational adjective", "relational"},
glossary = true,
pos_categories = "คำคุณศัพท์สัมพันธ์",
}
labels["repetitive"] = {
pos_categories = "repetitive verbs",
}
labels["respelling"] = {
glossary = true,
}
labels["reversative"] = {
pos_categories = "reversative verbs",
}
labels["rhetorical question"] = {
glossary = true,
pos_categories = "rhetorical questions",
}
labels["saturative"] = {
aliases = {"sative"},
pos_categories = "saturative verbs",
}
labels["semelfactive"] = {
glossary = true,
pos_categories = "semelfactive verbs",
}
labels["sentence adverb"] = {
glossary = true,
pos_categories = "sentence adverbs",
}
labels["set phrase"] = {
display = "[[set phrase]]",
}
labels["simile"] = {
glossary = true,
pos_categories = "similes",
}
labels["เอกพจน์เท่านั้น"] = {
aliases = {"singular only", "singulare tantum", "no plural"},
display = "เอกพจน์เท่านั้น",
pos_categories = "คำนามเอกพจน์เท่านั้น",
}
labels["snowclone"] = {
glossary = true,
pos_categories = "snowclones",
}
labels["สภาว"] = {
aliases = {"stative", "stative verb", "สภาวกริยา"},
glossary = true,
pos_categories = "คำสภาวกริยา",
}
labels["strictly"] = {
aliases = {"strict", "narrowly", "narrow"},
glossary = true,
}
labels["substantive"] = {
glossary = true,
track = true,
}
labels["terminative"] = {
pos_categories = "terminative verbs",
}
labels["สกรรม"] = {
aliases = {"transitive", "สกรรมกริยา"},
glossary = true,
pos_categories = "คำสกรรมกริยา",
}
labels["unaccusative"] = {
Wikipedia = "Unaccusative verb",
}
labels["นับไม่ได้"] = {
aliases = {"uncountable"},
glossary = true,
pos_categories = "คำนามนับไม่ได้",
}
labels["unergative"] = {
Wikipedia = "Unergative verb",
}
labels["UPA"] = {
aliases = {"Uralic Phonetic Alphabet"},
Wikipedia = "Uralic Phonetic Alphabet",
plain_categories = "UPA symbols",
}
labels["usually plural"] = {
aliases = {"usually in the plural", "usually in plural"},
display = "usually in the [[Appendix:Glossary#plural|plural]]",
deprecated = true,
}
-- Usage labels
labels["โฟร์แชน"] = {
aliases = {"4chan", "4chan slang"},
display = "สแลง[[w:โฟร์แชน|โฟร์แชน]]",
pos_categories = "สแลงโฟร์แชน",
}
labels["4chan lgbt"] = {
aliases = {"tttt"},
display = "[[w:4chan|4chan]] /lgbt/ slang",
pos_categories = "4chan /lgbt/ slang",
}
labels["ACG"] = {
display = "[[ACG]]",
-- see also "fandom slang"
pos_categories = "fandom slang",
}
labels["endearing"] = {
aliases = {"affectionate"},
display = "[[endearing]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "endearing terms",
}
labels["pre-classical"] = {
aliases = {"Pre-classical", "pre-Classical", "Pre-Classical", "Preclassical", "preclassical", "ante-classical", "Ante-classical", "ante-Classical", "Ante-Classical", "Anteclassical", "anteclassical"},
display = "pre-Classical",
regional_categories = true,
}
labels["anti-LGBTQ slur"] = {
-- don't add aliases "homophobia" or "transphobia" because these could be topical categories
aliases = {"homophobic", "transphobic"},
display = "anti-[[LGBTQ]] [[slur]]",
pos_categories = "anti-LGBTQ slurs",
}
labels["โบราณ"] = {
aliases = {"archaic", "antiquated", "โบ"},
glossary = true,
sense_categories = true,
}
labels["รูปโบราณ"] = {
aliases = {"archaic form"},
glossary = "โบราณ",
display = "โบราณ",
pos_categories = "รูปโบราณ",
}
labels["Australian slang"] = {
regional_categories = "Australian",
plain_categories = true,
}
labels["avoidance"] = {
glossary = true,
}
labels["back slang"] = {
aliases = {"backslang", "back-slang"},
glossary = "backslang",
pos_categories = true,
}
labels["Bargoens"] = {
Wikipedia = true,
plain_categories = true,
}
labels["Braille"] = {
Wikipedia = true,
}
labels["British slang"] = {
aliases = {"UK slang"},
plain_categories = true,
}
labels["Cambridge University slang"] = {
aliases = {"University of Cambridge slang", "Cantab slang"},
display = "[[w:University of Cambridge|Cambridge University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["cant"] = {
aliases = {"argot", "cryptolect"},
display = "[[cant]]",
pos_categories = true,
}
labels["capitalized"] = {
aliases = {"capitalised"},
display = "[[capitalisation|capitalized]]",
}
labels["Castilianism"] = {
aliases = {"Hispanicism"},
display = "[[Castilianism]]",
}
labels["ภาษาเด็ก"] = {
aliases = {"childish", "baby talk", "child language", "infantile", "เด็ก"},
display = "[[ภาษาเด็ก]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นภาษาเด็ก",
}
labels["chu Nom"] = {
display = "[[Vietnamese]] [[chữ Nôm]]",
plain_categories = "Vietnamese Han tu",
}
labels["Cockney rhyming slang"] = {
display = "[[Cockney rhyming slang]]",
plain_categories = true,
}
labels["ภาษาปาก"] = {
aliases = {"colloquial", "colloquially", "ภาษาพูด", "ปาก", "พูด"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาปาก",
}
-- FIXME! The following two are apparently for Persian but probably don't belong in this file.
labels["colloquial-um"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence um",
}
labels["colloquial-un"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence un",
}
labels["corporate jargon"] = {
aliases = {"business jargon", "corporatese", "businessese", "corporate speak", "business speak"},
display = "[[corporate]] [[jargon]]",
pos_categories = true,
}
labels["costermongers"] = {
aliases = {"coster", "costers", "costermonger", "costermongers back slang", "costermongers' back slang"},
display = "[[Appendix:Costermongers' back slang|costermongers]]",
plain_categories = "Costermongers' back slang",
}
labels["criminal slang"] = {
aliases = {"thieves' cant", "Thieves' Cant", "thieves cant", "thieves'", "thieves", "thieves' cant"}, -- Thieves' Cant is English-only, so defined in the English submodule; if other languages try to use it, it's just criminal slang
display = "[[criminal]] [[slang]]",
topical_categories = "Crime",
pos_categories = true,
}
labels["ล้าสมัย"] = {
aliases = {"dated", "old-fashioned", "ล้า"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล้าสมัย",
}
labels["dated form"] = {
glossary = "dated",
pos_categories = "dated forms",
}
-- combine with previous?
labels["นัยล้าสมัย"] = {
aliases = {"dated sense", "นัยล้า"},
glossary = "dated",
sense_categories = "ล้าสมัย",
}
labels["ดูหมิ่น"] = {
aliases = {"derogatory", "pejorative", "derogative", "disparaging", "หมิ่น", "ดูถูก", "หมิ่นประมาท"},
display = "[[ดูหมิ่น]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ดูหมิ่น",
}
--[=[ merged down
labels["dialect"] = {-- separated from "dialectal" so e.g. "obsolete|outside|the|_|dialect|of..." displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["ภาษาถิ่น"] = {
aliases = {"dialect", "dialects", "dialectal", "ถิ่น", "เฉพาะถิ่น", "ภาษาเฉพาะถิ่น"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาถิ่น",
}
--[=[ merged up
labels["dialects"] = {-- separated from "dialectal" so e.g. "obsolete|outside|dialects" displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["dis legomenon"] = {
display = "[[dis legomenon]]",
pos_categories = "dis legomena",
}
labels["dismissal"] = {
display = "[[dismissal]]",
pos_categories = "dismissals",
}
labels["drag slang"] = {
aliases = {"Drag Race slang"},
display = "[[drag]] [[slang]]",
pos_categories = "drag slang",
}
labels["solemn"] = {
glossary = true,
pos_categories = "solemn terms",
}
labels["ecclesiastical"] = {
pos_categories = "ecclesiastical terms",
}
labels["ethnic slur"] = {
aliases = {"racial slur"},
display = "[[ethnic]] [[slur]]",
pos_categories = "ethnic slurs",
}
labels["เสาวพจน์"] = {
aliases = {"รื่นหู", "นุ่มนวล", "สละสลวย", "euphemistic", "euphemism"},
glossary = "เสาวพจน์",
pos_categories = "เสาวพจน์",
}
labels["eye dialect"] = {
display = "[[eye dialect]]",
pos_categories = true,
}
labels["familiar"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "familiar terms",
}
labels["fandom slang"] = {
aliases = {"fandom"},
display = "[[fandom]] [[slang]]",
pos_categories = true,
}
--[=[ merged down
labels["figurative"] = {
aliases = {"metaphorical", "metaphoric", "metaphor"},
glossary = "ในเชิงเปรียบเทียบ",
}
--]=]
labels["ในเชิงเปรียบเทียบ"] = {
aliases = {"metaphorically", "metaphorical", "metaphoric", "metaphor", "figuratively", "figurative", "ภาพพจน์", "เปรียบเทียบ", "อุปมาอุปไมย", "อุปลักษณ์", "โดยปริยาย"},
glossary = "ในเชิงเปรียบเทียบ",
}
labels["folk poetic"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = {"folk poetic terms", "poetic terms"},
}
labels["ทางการ"] = {
aliases = {"formal", "เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นทางการ",
}
labels["gay slang"] = {
display = "[[gay]] [[slang]]",
pos_categories = true,
}
labels["gender critical slang"] = {
aliases = {"gender-critical slang", "GC slang", "TERF slang"},
display = "[[gender-critical]] [[slang]]",
pos_categories = "gender-critical slang",
}
labels["gender-neutral"] = {
glossary = "gender-neutral",
pos_categories = "gender-neutral terms",
}
labels["genericized trademark"] = {
aliases = {"generic trademark", "proprietary eponym"},
display = "[[genericized trademark]]",
pos_categories = "genericized trademarks",
}
labels["ghost word"] = {
aliases = {"ghost"},
display = "ghost word",
glossary = true,
pos_categories = "ghost words",
}
labels["hapax legomenon"] = {
aliases = {"hapax"},
display = "hapax legomenon",
glossary = true,
pos_categories = "hapax legomena",
}
labels["higher register"] = {
aliases = {"high register", "elevated register", "elevated"},
glossary = "higher register",
pos_categories = "higher register terms",
}
labels["historical"] = {
aliases = {"historic"},
glossary = true,
sense_categories = true,
}
labels["non-native speakers"] = {-- language-agnostic version
aliases = {"NNS"},
display = "[[non-native speaker]]s", -- so preceded by "used by", "error by children and", etc? or reword?
regional_categories = {"Non-native speakers'"},
}
labels["non-native speakers' English"] = {
aliases = {"NNES", "NNSE"},
display = "[[non-native speaker]]s' English",
regional_categories = "Non-native speakers'",
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical hiragana"] = {
pos_categories = true,
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical katakana"] = {
pos_categories = true,
}
-- applies to Japanese and Korean, etc., please do not confuse with "polite"
labels["honorific"] = {
Wikipedia = "Honorifics (linguistics)",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "honorific terms",
}
-- for Ancient Greek
labels["Homeric epithet"] = {
display = "[[Homeric Greek|Homeric]] [[w:Epithets in Homer|epithet]]",
omit_postComma = true,
plain_categories = "Epic Greek",
}
-- applies to Japanese and Korean, etc.
labels["humble"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[humble]]",
pos_categories = "humble terms",
}
-- for Akkadian
labels["in hendiadys"] = {
aliases = {"hendiadys"},
pos_categories = "hendiadys",
}
labels["ขำขัน"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp; NB and cf a similar "jocular" label further up on this page
aliases = {"humorous", "humorously", "jocular", "ตลก"},
display = "[[ขำขัน]]",
pos_categories = "ศัพท์ที่ขำขัน",
}
labels["อติพจน์"] = {
aliases = {"hyperbolic", "hyperbole", "เกินจริง"},
glossary = true,
pos_categories = "อติพจน์",
}
labels["แก้ไขเกินเหตุ"] = {
aliases = {"hypercorrect", "hypercorrections", "การแก้ไขเกินเหตุ"},
glossary = true,
pos_categories = "ศัพท์ที่แก้ไขเกินเหตุ",
}
labels["hyperforeign"] = {
glossary = true,
pos_categories = "hyperforeign terms",
}
labels["imperial"] = {
aliases = {"emperor", "empress"},
pos_categories = "royal terms",
}
labels["incel slang"] = {
display = "[[incel]] [[slang]]",
pos_categories = true,
}
labels["ไม่ทางการ"] = {
aliases = {"informal", "informally", "ไม่เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ไม่เป็นทางการ",
}
labels["สแลงอินเทอร์เน็ต"] = {
aliases = {"Internet slang", "internet slang"},
display = "[[สแลง]][[อินเทอร์เน็ต]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ไออาร์ซี"] = {
aliases = {"IRC"},
display = "[[ไออาร์ซี]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ironic"] = {
display = "[[irony|ironic]]",
}
-- Not the same as "journalism", which maps to a topical category (e.g. [[:Category:en:Journalism]], instead of [[:Category:English journalistic terms]]).
labels["ภาษาข่าว"] = {
aliases = {"journalese", "journalistic"},
display = "[[ภาษาข่าว]]",
pos_categories = "ศัพท์ที่เป็นภาษาข่าว",
}
labels["leet"] = {
aliases = {"leetspeak"},
display = "[[leetspeak]]",
pos_categories = true,
}
labels["LGBTQ slang"] = {
aliases = {"LGBT slang"},
display = "[[LGBTQ]] [[slang]]",
pos_categories = true,
}
labels["literal"] = {
glossary = "literally",
}
labels["literally"] = {
glossary = "literally",
}
labels["ภาษาหนังสือ"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"literary", "bookish", "ภาษาเขียน", "ภาษาแบบแผน", "หนังสือ", "เขียน", "แบบแผน", "แบบ"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาหนังสือ",
}
labels["loosely"] = {
aliases = {"loose", "broadly", "broad"},
glossary = true,
}
labels["Lubunyaca"] = {
display = "[[Lubunyaca]]",
pos_categories = true,
}
labels["medical slang"] = {
display = "[[medical]] [[slang]]",
pos_categories = true,
}
-- for Awetí, Karajá, etc., where men and women use different words
labels["men's speech"] = {
aliases = {"male speech"},
glossary = "men's speech",
pos_categories = "men's speech terms",
}
labels["metonymically"] = {
aliases = {"metonymic", "metonymy", "metonym"},
glossary = true,
pos_categories = "metonyms",
}
labels["military slang"] = {
display = "[[military]] [[slang]]",
pos_categories = true,
}
labels["คำสบถแปลง"] = {
aliases = {"minced oath"},
display = "[[คำสบถแปลง]]",
pos_categories = "คำสบถแปลง",
}
labels["multiplicative"] = {
aliases = {"multiplicative number", "multiplicative numeral"},
display = "[[multiplicative number]]",
pos_categories = "multiplicative numbers",
}
labels["multiplicity slang"] = {
display = "{{l|en|multiplicity|id=multiple personalities}} [[slang]]",
pos_categories = true,
}
labels["nativising coinage"] = {
display = "[[w:Linguistic purism in Korean|nativising coinage]]",
pos_categories = "nativising coinages",
}
labels["naval slang"] = {
aliases = {"navy slang"},
display = "[[naval]] [[slang]]",
pos_categories = true,
}
labels["นวศัพท์"] = {
aliases = {"neologism", "neologistic", "ศัพท์ใหม่"},
glossary = true,
pos_categories = "นวศัพท์",
}
labels["neopronoun"] = {
display = "[[neopronoun]]",
-- pos_categories = {"neopronouns"},
}
labels["no longer productive"] = {
display = "no longer [[Appendix:Glossary#productive|productive]]",
}
labels["nonce word"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"nonce"},
glossary = true,
pos_categories = "nonce terms",
}
labels["ภาษาไม่มาตรฐาน"] = {
aliases = {"non-standard", "nonstandard", "substandard", "sub-standard", "ไม่มาตรฐาน"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาไม่มาตรฐาน",
}
labels["nonstandard form"] = {
aliases = {"non-standard form", "substandard form", "sub-standard form"},
glossary = "nonstandard",
pos_categories = "nonstandard forms",
}
labels["เลิกใช้"] = {
aliases = {"obsolete", "เลิก"},
glossary = true,
sense_categories = true,
}
labels["obsolete term"] = {
glossary = "obsolete",
-- combine with previous two, q.v.
pos_categories = "obsolete terms",
}
labels["ล่วงเกิน"] = {
aliases = {"offensive", "ล่วงละเมิด", "โจมตี", "รุกราน", "ก้าวร้าว"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล่วงเกิน",
}
labels["officialese"] = {
aliases = {"bureaucratic"},
display = "[[officialese]]",
pos_categories = "officialese terms",
}
labels["OpenStreetMap"] = {
aliases = {"osm", "OSM"},
Wikipedia = true,
pos_categories = "OpenStreetMap jargon",
}
labels["Oxbridge slang"] = {
display = "[[w:Oxbridge|Oxbridge]] [[slang]]",
topical_categories = "Universities",
plain_categories = {"Cambridge University slang", "Oxford University slang"},
}
labels["Oxford University slang"] = {
aliases = {"University of Oxford slang", "Oxon slang"},
display = "[[w:University of Oxford|Oxford University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["ร้อยกรอง"] = {
aliases = {"poi"}, -- Only used in Ancient Greek as a holdover from [[Module:grc:Dialects]].
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"poetic", "กลอน", "กวี"},
glossary = true,
pos_categories = "ศัพท์ที่ใช้ในบทร้อยกรอง",
}
labels["สุภาพ"] = {
aliases = {"polite"},
pos_categories = "ศัพท์ที่สุภาพ",
}
labels["post-classical"] = {
aliases = {"Post-classical", "post-Classical", "Post-Classical", "Postclassical", "postclassical"},
display = "post-Classical",
regional_categories = true,
}
labels["prison slang"] = {
display = "[[prison]] [[slang]]",
pos_categories = true,
}
labels["ไม่ควรใช้"] = {
aliases = {"proscribed", "ห้ามใช้", "ต้องห้าม"},
glossary = true,
pos_categories = "ศัพท์ที่ไม่ควรใช้",
}
labels["puristic"] = {
aliases = {"purism"},
Wikipedia = "Linguistic purism",
pos_categories = "puristic terms",
}
labels["radio slang"] = {
display = "[[radio]] [[slang]]",
pos_categories = true,
}
labels["Reddit slang"] = {
display = "[[Reddit]] [[slang]]",
pos_categories = true,
}
labels["พบได้ยาก"] = {
aliases = {"rare", "rare sense", "พบยาก", "พบน้อย", "พบได้น้อย", "หายาก", "ใช้ไม่บ่อย"},
glossary = true,
sense_categories = true,
}
labels["rare term"] = {
display = "rare",
-- see comments about "obsolete"
pos_categories = "rare terms",
}
-- cf Cockney rhyming slang
labels["rhyming slang"] = {
display = "[[rhyming slang]]",
pos_categories = true,
}
labels["religious slur"] = {
aliases = {"sectarian slur"},
display = "[[religious]] [[slur]]",
pos_categories = "religious slurs",
}
labels["นิวัตนาม"] = {
aliases = {"retronym", "retro"},
glossary = true,
pos_categories = "คำนิวัตนาม",
}
labels["reverential"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[reverential]]",
pos_categories = "reverential terms",
}
labels["ราชาศัพท์"] = {
aliases = {"regal", "royal"},
pos_categories = "ราชาศัพท์",
}
labels["rustic"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"rural"},
pos_categories = "rustic terms",
}
labels["เสียดสี"] = {
aliases = {"ประชด", "ประชดประชัน", "เหน็บแนม", "sarcastic", "sarcasm"},
display = "[[เสียดสี]]",
pos_categories = "ศัพท์ที่เสียดสี",
}
labels["school slang"] = {
aliases = {"public school slang"},
display = "[[school]] [[slang]]",
pos_categories = true,
}
labels["self-deprecatory"] = {
aliases = {"self-deprecating"},
display = "[[self-deprecatory]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "self-deprecatory terms",
}
-- Swahili Sheng cant / argot
-- should this be in a language-specific module?
labels["Sheng"] = {
Wikipedia = "Sheng slang",
plain_categories = true,
}
labels["siglum"] = {
aliases = {"sigla"},
glossary = true,
pos_categories = "sigla",
}
labels["สแลง"] = {
aliases = {"slang"},
glossary = true,
pos_categories = true,
}
labels["university slang"] = {
aliases = {"college slang", "student slang"},
display = "[[university]] [[slang]]",
topical_categories = "Universities",
pos_categories = "student slang",
}
labels["Stenoscript"] = {
aliases = {"stenoscript"},
display = "[[Stenoscript]]",
pos_categories = "Stenoscript abbreviations",
}
labels["superseded"] = {
glossary = true
}
labels["swear word"] = {
aliases = {"profanity", "expletive"},
pos_categories = "swear words",
}
labels["syncopated"] = {
aliases = {"syncope", "syncopic", "syncopation"},
glossary = true,
pos_categories = "syncopic forms",
}
labels["synecdochically"] = {
aliases = {"synecdochic", "synecdochical", "synecdoche"},
glossary = true,
pos_categories = "synecdoches",
}
labels["ศัพท์เฉพาะ"] = {
aliases = {"technical"},
display = "[[ศัพท์เฉพาะ]]",
pos_categories = "ศัพท์เฉพาะ",
}
labels["telic"] = {
glossary = true,
}
labels["text messaging"] = {
aliases = {"texting"},
display = "[[text messaging]]",
pos_categories = "text messaging slang",
}
labels["tone indicator"] = {
display = "[[tone indicator]]",
pos_categories = "tone indicators",
}
labels["เครื่องหมายการค้า"] = {
aliases = {"trademark", "ยี่ห้อ"},
display = "[[เครื่องหมายการค้า]]",
pos_categories = true,
}
labels["transferred sense"] = {
glossary = true,
pos_categories = "terms with transferred senses",
}
labels["transferred senses"] = {
display = "[[transferred sense#English|transferred senses]]",
pos_categories = "terms with transferred senses",
}
labels["transgender slang"] = {
aliases = {"trans slang"},
display = "[[transgender]] [[slang]]",
pos_categories = true,
}
labels["Twitch-speak"] = {
display = "[[Twitch-speak]]",
pos_categories = true,
}
labels["uds."] = {
display = "[[Appendix:Spanish pronouns#Ustedes and vosotros|used formally in Spain]]",
}
labels["uncommon"] = {
glossary = true,
sense_categories = true,
}
labels["used only in songs"] = {
aliases = {"only used in songs", "songs"},
pos_categories = "terms used only in songs",
display = "used only in [[song]]s",
}
labels["used only in tales"] = {
aliases = {"only used in tales", "tales"},
pos_categories = "terms used only in tales",
display = "used only in [[tale]]s",
}
labels["verlan"] = {
glossary = true,
plain_categories = true,
}
labels["very rare"] = {
display = "very [[Appendix:Glossary#rare|rare]]",
sense_categories = "rare",
}
labels["หยาบคาย"] = {
aliases = {"vulgar", "coarse", "obscene", "profane", "หยาบ", "ไม่สุภาพ"},
glossary = true,
pos_categories = "ศัพท์ที่หยาบคาย",
}
labels["vesre"] = {
Wikipedia = true,
plain_categories = true,
}
labels["youth slang"] = {
display = "[[youth]] [[slang]]",
pos_categories = "slang",
}
labels["2channel slang"] = {
aliases = {"2channel", "2ch slang"},
display ="[[w:2channel|2channel]] [[slang]]",
pos_categories = {"สแลงอินเทอร์เน็ต" , "2channel slang"},
}
-- for Awetí, Karajá, etc., where men & women use different words
labels["women's speech"] = {
aliases = {"female speech"},
glossary = "women's speech",
pos_categories = "women's speech terms",
}
-- terms applying to Old Norse skaldic poetry
labels["kenning"] = {
aliases = {"Kenning"},
Wikipedia = "Kenning",
pos_categories = "kennings",
}
labels["heiti"] = {
aliases = {"Heiti"},
Wikipedia = "Heiti",
pos_categories = true,
}
return require("Module:labels").finalize_data(labels)
rjn6ijlfc25itox27unaegdo67ax71k
5720954
5720952
2026-04-22T11:39:15Z
OctraBot
3198
5720954
Scribunto
text/plain
local labels = {}
-- Grammatical labels
labels["คำย่อ"] = {
aliases = {"abbreviation"},
glossary = true,
pos_categories = "คำย่อ",
}
labels["อาการนาม"] = {
aliases = {"abstract noun"},
display = "อาการนาม",
glossary = true,
pos_categories = "คำอาการนาม",
}
labels["อักษรย่อรวมพยางค์"] = {
aliases = {"acronym"},
glossary = true,
pos_categories = "อักษรย่อรวมพยางค์",
}
labels["กรรตุวาจก"] = {
aliases = {"active", "in the active", "active voice"},
glossary = true,
}
labels["สกรรมและอกรรม"] = {
aliases = {"ambitransitive", "อกรรมและสกรรม"},
glossary = true,
pos_categories = {"คำสกรรมกริยา", "คำอกรรมกริยา"},
}
labels["angry register"] = {
aliases = {"angry", "anger", "said in anger"},
glossary = true,
pos_categories = "angry register terms",
}
labels["มีชีวิต"] = {
aliases = {"animate"},
glossary = true,
}
labels["บอกเล่า"] = {
aliases = {"indicative", "in the indicative", "indicative mood"},
glossary = "มาลาบอกเล่า",
}
labels["สมมุติ"] = {
aliases = {"subjunctive", "in the subjunctive", "subjunctive mood"},
glossary = "มาลาสมมุติ",
}
labels["สั่ง"] = {
aliases = {"imperative", "in the imperative", "imperative mood", "คำสั่ง"},
glossary = "มาลาสั่ง",
}
labels["ขอร้อง"] = {
aliases = {"jussive", "in the jussive", "jussive mood", "ร้องขอ"},
glossary = "มาลาขอร้อง",
}
labels["atelic"] = {
glossary = true,
}
labels["attenuative"] = {
pos_categories = "attenuative verbs",
}
labels["attributive"] = {
glossary = true,
}
labels["attributively"] = {
glossary = "attributive",
}
labels["ช่วย"] = {
aliases = {"auxiliary", "กริยาช่วย", "คำกริยาช่วย", "คำช่วยกริยา", "กริยานุเคราะห์", "คำกริยานุเคราะห์"},
glossary = true,
pos_categories = "คำกริยาช่วย",
}
labels["จำนวนเชิงการนับ"] = {
aliases = {"cardinal", "cardinal number", "เชิงการนับ"},
display = "[[จำนวนเชิงการนับ]]",
pos_categories = "จำนวนเชิงการนับ",
}
labels["catenative"] = {
glossary = "catenative verb",
}
labels["causative"] = {
glossary = true,
}
labels["causative verb"] = {
display = "causative",
glossary = true,
pos_categories = "causative verbs",
}
labels["cognate object"] = {
aliases = {"with cognate object"},
display = "with [[w:Cognate object|cognate object]]",
pos_categories = "verbs used with cognate objects",
}
labels["สมุหนาม"] = {
aliases = {"collective"},
glossary = true,
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collectively"] = {
glossary = "collective",
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collective number"] = {
aliases = {"collective numeral"},
display = "[[collective number]]",
pos_categories = "collective numbers",
}
labels["control verb"] = {
aliases = {"control"},
Wikipedia = true,
pos_categories = "control verbs",
}
labels["เพศรวม"] = {
aliases = {"common", "รวม"},
glossary = true,
}
labels["เปรียบเทียบได้"] = {
aliases = {"comparable"},
glossary = true,
}
labels["completive"] = {
pos_categories = "completive verbs",
}
labels["เชื่อม"] = {
aliases = {"copular"},
display = "[[คำกริยาเชื่อม|เชื่อม]]",
pos_categories = "คำกริยาเชื่อม",
}
labels["นับได้"] = {
aliases = {"countable"},
glossary = true,
pos_categories = "คำนามนับได้",
}
labels["cumulative"] = {
pos_categories = "cumulative verbs",
}
labels["delimitative"] = {
pos_categories = "delimitative verbs",
}
labels["deponent"] = {
glossary = true,
pos_categories = "deponent verbs",
}
labels["distributive"] = {
pos_categories = "distributive verbs",
}
labels["distributive number"] = {
aliases = {"distributive numeral"},
display = "[[distributive number]]",
pos_categories = "distributive numbers",
}
labels["ทวิกรรม"] = {
aliases = {"ditransitive", "ทวิกรรมกริยา"},
glossary = true,
pos_categories = "คำทวิกรรมกริยา",
}
labels["dysphemistic"] = {
aliases = {"dysphemism"},
glossary = true,
pos_categories = "dysphemisms",
}
labels["by ellipsis"] = {
aliases = {"ellipsis"},
glossary = "ellipsis",
pos_categories = "ellipses",
}
labels["emphatic"] = {
glossary = true,
}
labels["ergative"] = {
glossary = true,
pos_categories = "ergative verbs",
}
labels["expressive"] = {
glossary = true,
pos_categories = "expressive terms",
}
labels["by extension"] = {
aliases = {"hence"},
}
labels["เพศหญิง"] = {
aliases = {"feminine", "หญิง"},
glossary = true,
}
labels["focus"] = {
glossary = true,
pos_categories = "focus adverbs",
}
labels["fractional"] = {
aliases = {"fractional number", "fractional numeral"},
display = "[[fractional number]]",
pos_categories = "fractional numbers",
}
labels["frequentative"] = {
glossary = true,
pos_categories = "frequentative verbs",
}
labels["hedge"] = {
aliases = {"hedges"},
glossary = true,
pos_categories = "hedges",
}
labels["ideophonic"] = {
aliases = {"ideophone"},
glossary = true,
}
labels["สำนวน"] = {
aliases = {"idiomatic", "idiom", "idiomatically", "สำ"},
glossary = true,
pos_categories = "สำนวน",
}
labels["imperfect"] = {
glossary = true,
}
labels["ไม่สมบูรณ์"] = {
aliases = {"imperfective"},
glossary = true,
pos_categories = "คำกริยาไม่สมบูรณ์",
}
labels["อบุรุษ"] = {
aliases = {"impersonal", "impersonal verbs", "อบุรุษกริยา", "คำอบุรุษกริยา"},
glossary = true,
pos_categories = "คำอบุรุษกริยา",
}
labels["ในรูปเอกพจน์"] = {
aliases = {"in singular", "in the singular"},
display = "ในรูป[[เอกพจน์]]",
}
labels["ในรูปทวิพจน์"] = {
aliases = {"in dual", "in the dual"},
display = "ในรูป[[ทวิพจน์]]",
}
labels["ในรูปพหูพจน์"] = {
aliases = {"in plural"},
display = "ในรูป[[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]]",
}
labels["ไม่มีชีวิต"] = {
aliases = {"inanimate"},
glossary = true,
}
labels["inchoative"] = {
pos_categories = "inchoative verbs",
}
labels["ไม่ชี้เฉพาะ"] = {
aliases = {"indef", "indefinite"},
glossary = true,
}
labels["อักษรย่อ"] = {
aliases = {"initialism"},
glossary = true,
pos_categories = "อักษรย่อ",
}
labels["intensive verb"] = {
display = "intensive",
pos_categories = "intensive verbs",
}
labels["อกรรม"] = {
aliases = {"intransitive", "อกรรมกริยา"},
glossary = true,
pos_categories = "คำอกรรมกริยา",
}
labels["ไอพีเอ"] = {
aliases = {"IPA", "International Phonetic Alphabet", "สัทอักษรสากล"},
Wikipedia = "สัทอักษรสากล",
plain_categories = "สัญลักษณ์สำหรับสัทอักษรสากล",
}
labels["iterative"] = {
glossary = true,
pos_categories = "iterative verbs",
}
labels["litotes"] = {
aliases = {"litote", "litotic", "litotical"},
glossary = true,
pos_categories = true,
}
labels["เพศชาย"] = {
aliases = {"masculine", "ชาย"},
glossary = true,
}
labels["mediopassive"] = {
aliases = {"in the mediopassive", "in mediopassive"},
glossary = true,
}
labels["meiosis"] = {
aliases = {"meioses", "meiotic"},
glossary = true,
pos_categories = "meioses",
}
labels["middle voice"] = {
aliases = {"middle", "in the middle", "in the middle voice"},
glossary = true,
}
labels["รูปสะกดผิด"] = {
aliases = {"misspelling", "สะกดผิด"},
display = "[[รูปสะกดผิด]]",
}
labels["mnemonic"] = {
display = "[[mnemonic]]",
pos_categories = "mnemonics",
}
labels["modal"] = {
Wikipedia = "Modality (linguistics)",
}
labels["NAPA"] = {
aliases = {"Americanist_phonetic_notation"},
Wikipedia = "Americanist_phonetic_notation",
plain_categories = "NAPA symbols",
}
labels["always in the negative"] = {
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative"] = {
aliases = {"chiefly used in the negative", "negative polarity", "negative polarity item", "usually in the negative", "usually used in the negative"},
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative plural"] = {
aliases = {"chiefly used in the negative plural", "negative polarity plural", "negative polarity plural item", "usually in the negative plural", "usually used in the negative plural"},
display = "chiefly in the [[Appendix:Glossary#negative polarity item|negative]] [[Appendix:Glossary#plural|plural]]",
pos_categories = "negative polarity items",
}
labels["chiefly in the positive"] = {
aliases = {"chiefly used in the positive", "positive polarity", "positive polarity item", "usually in the positive", "usually used in the positive"},
glossary = "positive polarity item",
-- pos_categories = {"positive polarity items"},
}
labels["chiefly in the positive plural"] = {
aliases = {"chiefly used in the positive plural", "positive polarity plural", "positive polarity plural item", "usually in the positive plural", "usually used in the positive plural"},
display = "chiefly in the [[Appendix:Glossary#positive polarity item|positive]] [[Appendix:Glossary#plural|plural]]",
-- pos_categories = "positive polarity items",
}
labels["เพศกลาง"] = {
aliases = {"neuter", "กลาง"},
glossary = true,
}
-- British English ("ise")
labels["nominalised"] = {
aliases = {"nominalisation", "substantivised", "substantivisation"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
-- American English ("ize")
labels["nominalized"] = {
aliases = {"nominalization", "substantivized", "substantivization"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
labels["เปรียบเทียบไม่ได้"] = {
aliases = {"not comparable", "notcomp", "uncomparable"},
glossary = "เปรียบเทียบไม่ได้",
}
labels["เลียนเสียง"] = {
aliases = {"onomatopoeia", "onomatopoeic", "เลียนเสียงธรรมชาติ"},
glossary = true,
pos_categories = "ศัพท์ที่เลียนเสียงธรรมชาติ",
}
labels["เชิงอันดับที่"] = {
aliases = {"ordinal", "ordinal numbers", "จำนวนเชิงอันดับที่"},
display = "[[จำนวนเชิงอันดับที่]]",
pos_categories = "จำนวนเชิงอันดับที่",
}
labels["partitive verb"] = {
display = "[[ภาคผนวก:อภิธานศัพท์#สกรรม|สกรรม]], มักจะ[[ภาคผนวก:คำกริยามีจุดจบและไม่มีจุดจบภาษาฟินนิก|ไม่มีจุดจบ]]",
pos_categories = "คำสกรรมกริยา", -- = "partitive verbs",
}
labels["perfect"] = {
glossary = true,
}
labels["รูปกริยาขยาย"] = {
aliases = {"participle"},
glossary = true,
}
labels["กรรมวาจก"] = {
aliases = {"passive", "in the passive", "passive voice"},
glossary = true,
}
labels["perfect"] = {
glossary = true,
}
labels["สมบูรณ์"] = {
glossary = true,
pos_categories = "คำกริยาสมบูรณ์",
}
labels["พหูพจน์เท่านั้น"] = {
aliases = {"plural only", "pluralonly", "plurale tantum"},
pos_categories = "คำนามพหูพจน์เท่านั้น",
}
labels["possessional adjective"] = {
aliases = {"possessional", "possessional adjectives"},
display = "possessional",
glossary = true,
pos_categories = "possessional adjectives",
}
labels["สรรพนามแสดงความเป็นเจ้าของ"] = {
aliases = {"possessive pronoun", "possessive determiner"},
display = "แสดงความเป็นเจ้าของ",
glossary = "possessive determiner",
pos_categories = "คำสรรพนามแสดงความเป็นเจ้าของ",
}
labels["postpositive"] = {
glossary = true,
}
labels["ภาคแสดง"] = {
aliases = {"predicative"},
glossary = true,
}
labels["predicatively"] = {
glossary = "ภาคแสดง",
}
labels["prescriptive"] = {
aliases = {"normative", "prescribed"},
glossary = true,
}
labels["privative"] = {
pos_categories = "privative verbs",
}
labels["procedure word"] = {
display = "[[procedure word]]",
}
labels["productive"] = {
glossary = true,
}
-- TODO: This label is probably inappropriate for many languages
labels["pronominal"] = {
glossary = "pronominal verb",
}
labels["pro-verb"] = {
Wikipedia = true,
}
labels["reciprocal"] = {
glossary = true,
pos_categories = "reciprocal verbs",
}
labels["สะท้อน"] = {
aliases = {"reflexive", "คำกริยาสะท้อน", "กริยาสะท้อน"},
glossary = true,
pos_categories = "คำกริยาสะท้อน",
}
labels["คำสรรพนามสะท้อน"] = {
aliases = {"reflexive pronoun", "สรรพนามสะท้อน"},
glossary = "สะท้อน",
pos_categories = "คำสรรพนามสะท้อน",
}
labels["สัมพันธ์"] = {
aliases = {"relational adjective", "relational", "คำคุณศัพท์สัมพันธ์", "คุณศัพท์สัมพันธ์"},
glossary = true,
pos_categories = "คำคุณศัพท์สัมพันธ์",
}
labels["repetitive"] = {
pos_categories = "repetitive verbs",
}
labels["respelling"] = {
glossary = true,
}
labels["reversative"] = {
pos_categories = "reversative verbs",
}
labels["rhetorical question"] = {
glossary = true,
pos_categories = "rhetorical questions",
}
labels["saturative"] = {
aliases = {"sative"},
pos_categories = "saturative verbs",
}
labels["semelfactive"] = {
glossary = true,
pos_categories = "semelfactive verbs",
}
labels["sentence adverb"] = {
glossary = true,
pos_categories = "sentence adverbs",
}
labels["set phrase"] = {
display = "[[set phrase]]",
}
labels["simile"] = {
glossary = true,
pos_categories = "similes",
}
labels["เอกพจน์เท่านั้น"] = {
aliases = {"singular only", "singulare tantum", "no plural"},
display = "เอกพจน์เท่านั้น",
pos_categories = "คำนามเอกพจน์เท่านั้น",
}
labels["snowclone"] = {
glossary = true,
pos_categories = "snowclones",
}
labels["สภาว"] = {
aliases = {"stative", "stative verb", "สภาวกริยา"},
glossary = true,
pos_categories = "คำสภาวกริยา",
}
labels["strictly"] = {
aliases = {"strict", "narrowly", "narrow"},
glossary = true,
}
labels["substantive"] = {
glossary = true,
track = true,
}
labels["terminative"] = {
pos_categories = "terminative verbs",
}
labels["สกรรม"] = {
aliases = {"transitive", "สกรรมกริยา"},
glossary = true,
pos_categories = "คำสกรรมกริยา",
}
labels["unaccusative"] = {
Wikipedia = "Unaccusative verb",
}
labels["นับไม่ได้"] = {
aliases = {"uncountable"},
glossary = true,
pos_categories = "คำนามนับไม่ได้",
}
labels["unergative"] = {
Wikipedia = "Unergative verb",
}
labels["UPA"] = {
aliases = {"Uralic Phonetic Alphabet"},
Wikipedia = "Uralic Phonetic Alphabet",
plain_categories = "UPA symbols",
}
labels["usually plural"] = {
aliases = {"usually in the plural", "usually in plural"},
display = "usually in the [[Appendix:Glossary#plural|plural]]",
deprecated = true,
}
-- Usage labels
labels["โฟร์แชน"] = {
aliases = {"4chan", "4chan slang"},
display = "สแลง[[w:โฟร์แชน|โฟร์แชน]]",
pos_categories = "สแลงโฟร์แชน",
}
labels["4chan lgbt"] = {
aliases = {"tttt"},
display = "[[w:4chan|4chan]] /lgbt/ slang",
pos_categories = "4chan /lgbt/ slang",
}
labels["ACG"] = {
display = "[[ACG]]",
-- see also "fandom slang"
pos_categories = "fandom slang",
}
labels["endearing"] = {
aliases = {"affectionate"},
display = "[[endearing]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "endearing terms",
}
labels["pre-classical"] = {
aliases = {"Pre-classical", "pre-Classical", "Pre-Classical", "Preclassical", "preclassical", "ante-classical", "Ante-classical", "ante-Classical", "Ante-Classical", "Anteclassical", "anteclassical"},
display = "pre-Classical",
regional_categories = true,
}
labels["anti-LGBTQ slur"] = {
-- don't add aliases "homophobia" or "transphobia" because these could be topical categories
aliases = {"homophobic", "transphobic"},
display = "anti-[[LGBTQ]] [[slur]]",
pos_categories = "anti-LGBTQ slurs",
}
labels["โบราณ"] = {
aliases = {"archaic", "antiquated", "โบ"},
glossary = true,
sense_categories = true,
}
labels["รูปโบราณ"] = {
aliases = {"archaic form"},
glossary = "โบราณ",
display = "โบราณ",
pos_categories = "รูปโบราณ",
}
labels["Australian slang"] = {
regional_categories = "Australian",
plain_categories = true,
}
labels["avoidance"] = {
glossary = true,
}
labels["back slang"] = {
aliases = {"backslang", "back-slang"},
glossary = "backslang",
pos_categories = true,
}
labels["Bargoens"] = {
Wikipedia = true,
plain_categories = true,
}
labels["Braille"] = {
Wikipedia = true,
}
labels["British slang"] = {
aliases = {"UK slang"},
plain_categories = true,
}
labels["Cambridge University slang"] = {
aliases = {"University of Cambridge slang", "Cantab slang"},
display = "[[w:University of Cambridge|Cambridge University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["cant"] = {
aliases = {"argot", "cryptolect"},
display = "[[cant]]",
pos_categories = true,
}
labels["capitalized"] = {
aliases = {"capitalised"},
display = "[[capitalisation|capitalized]]",
}
labels["Castilianism"] = {
aliases = {"Hispanicism"},
display = "[[Castilianism]]",
}
labels["ภาษาเด็ก"] = {
aliases = {"childish", "baby talk", "child language", "infantile", "เด็ก"},
display = "[[ภาษาเด็ก]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นภาษาเด็ก",
}
labels["chu Nom"] = {
display = "[[Vietnamese]] [[chữ Nôm]]",
plain_categories = "Vietnamese Han tu",
}
labels["Cockney rhyming slang"] = {
display = "[[Cockney rhyming slang]]",
plain_categories = true,
}
labels["ภาษาปาก"] = {
aliases = {"colloquial", "colloquially", "ภาษาพูด", "ปาก", "พูด"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาปาก",
}
-- FIXME! The following two are apparently for Persian but probably don't belong in this file.
labels["colloquial-um"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence um",
}
labels["colloquial-un"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence un",
}
labels["corporate jargon"] = {
aliases = {"business jargon", "corporatese", "businessese", "corporate speak", "business speak"},
display = "[[corporate]] [[jargon]]",
pos_categories = true,
}
labels["costermongers"] = {
aliases = {"coster", "costers", "costermonger", "costermongers back slang", "costermongers' back slang"},
display = "[[Appendix:Costermongers' back slang|costermongers]]",
plain_categories = "Costermongers' back slang",
}
labels["criminal slang"] = {
aliases = {"thieves' cant", "Thieves' Cant", "thieves cant", "thieves'", "thieves", "thieves' cant"}, -- Thieves' Cant is English-only, so defined in the English submodule; if other languages try to use it, it's just criminal slang
display = "[[criminal]] [[slang]]",
topical_categories = "Crime",
pos_categories = true,
}
labels["ล้าสมัย"] = {
aliases = {"dated", "old-fashioned", "ล้า"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล้าสมัย",
}
labels["dated form"] = {
glossary = "dated",
pos_categories = "dated forms",
}
-- combine with previous?
labels["นัยล้าสมัย"] = {
aliases = {"dated sense", "นัยล้า"},
glossary = "dated",
sense_categories = "ล้าสมัย",
}
labels["ดูหมิ่น"] = {
aliases = {"derogatory", "pejorative", "derogative", "disparaging", "หมิ่น", "ดูถูก", "หมิ่นประมาท"},
display = "[[ดูหมิ่น]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ดูหมิ่น",
}
--[=[ merged down
labels["dialect"] = {-- separated from "dialectal" so e.g. "obsolete|outside|the|_|dialect|of..." displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["ภาษาถิ่น"] = {
aliases = {"dialect", "dialects", "dialectal", "ถิ่น", "เฉพาะถิ่น", "ภาษาเฉพาะถิ่น"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาถิ่น",
}
--[=[ merged up
labels["dialects"] = {-- separated from "dialectal" so e.g. "obsolete|outside|dialects" displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["dis legomenon"] = {
display = "[[dis legomenon]]",
pos_categories = "dis legomena",
}
labels["dismissal"] = {
display = "[[dismissal]]",
pos_categories = "dismissals",
}
labels["drag slang"] = {
aliases = {"Drag Race slang"},
display = "[[drag]] [[slang]]",
pos_categories = "drag slang",
}
labels["solemn"] = {
glossary = true,
pos_categories = "solemn terms",
}
labels["ecclesiastical"] = {
pos_categories = "ecclesiastical terms",
}
labels["ethnic slur"] = {
aliases = {"racial slur"},
display = "[[ethnic]] [[slur]]",
pos_categories = "ethnic slurs",
}
labels["เสาวพจน์"] = {
aliases = {"รื่นหู", "นุ่มนวล", "สละสลวย", "euphemistic", "euphemism"},
glossary = "เสาวพจน์",
pos_categories = "เสาวพจน์",
}
labels["eye dialect"] = {
display = "[[eye dialect]]",
pos_categories = true,
}
labels["familiar"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "familiar terms",
}
labels["fandom slang"] = {
aliases = {"fandom"},
display = "[[fandom]] [[slang]]",
pos_categories = true,
}
--[=[ merged down
labels["figurative"] = {
aliases = {"metaphorical", "metaphoric", "metaphor"},
glossary = "ในเชิงเปรียบเทียบ",
}
--]=]
labels["ในเชิงเปรียบเทียบ"] = {
aliases = {"metaphorically", "metaphorical", "metaphoric", "metaphor", "figuratively", "figurative", "ภาพพจน์", "เปรียบเทียบ", "อุปมาอุปไมย", "อุปลักษณ์", "โดยปริยาย"},
glossary = "ในเชิงเปรียบเทียบ",
}
labels["folk poetic"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = {"folk poetic terms", "poetic terms"},
}
labels["ทางการ"] = {
aliases = {"formal", "เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นทางการ",
}
labels["gay slang"] = {
display = "[[gay]] [[slang]]",
pos_categories = true,
}
labels["gender critical slang"] = {
aliases = {"gender-critical slang", "GC slang", "TERF slang"},
display = "[[gender-critical]] [[slang]]",
pos_categories = "gender-critical slang",
}
labels["gender-neutral"] = {
glossary = "gender-neutral",
pos_categories = "gender-neutral terms",
}
labels["genericized trademark"] = {
aliases = {"generic trademark", "proprietary eponym"},
display = "[[genericized trademark]]",
pos_categories = "genericized trademarks",
}
labels["ghost word"] = {
aliases = {"ghost"},
display = "ghost word",
glossary = true,
pos_categories = "ghost words",
}
labels["hapax legomenon"] = {
aliases = {"hapax"},
display = "hapax legomenon",
glossary = true,
pos_categories = "hapax legomena",
}
labels["higher register"] = {
aliases = {"high register", "elevated register", "elevated"},
glossary = "higher register",
pos_categories = "higher register terms",
}
labels["historical"] = {
aliases = {"historic"},
glossary = true,
sense_categories = true,
}
labels["non-native speakers"] = {-- language-agnostic version
aliases = {"NNS"},
display = "[[non-native speaker]]s", -- so preceded by "used by", "error by children and", etc? or reword?
regional_categories = {"Non-native speakers'"},
}
labels["non-native speakers' English"] = {
aliases = {"NNES", "NNSE"},
display = "[[non-native speaker]]s' English",
regional_categories = "Non-native speakers'",
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical hiragana"] = {
pos_categories = true,
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical katakana"] = {
pos_categories = true,
}
-- applies to Japanese and Korean, etc., please do not confuse with "polite"
labels["honorific"] = {
Wikipedia = "Honorifics (linguistics)",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "honorific terms",
}
-- for Ancient Greek
labels["Homeric epithet"] = {
display = "[[Homeric Greek|Homeric]] [[w:Epithets in Homer|epithet]]",
omit_postComma = true,
plain_categories = "Epic Greek",
}
-- applies to Japanese and Korean, etc.
labels["humble"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[humble]]",
pos_categories = "humble terms",
}
-- for Akkadian
labels["in hendiadys"] = {
aliases = {"hendiadys"},
pos_categories = "hendiadys",
}
labels["ขำขัน"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp; NB and cf a similar "jocular" label further up on this page
aliases = {"humorous", "humorously", "jocular", "ตลก"},
display = "[[ขำขัน]]",
pos_categories = "ศัพท์ที่ขำขัน",
}
labels["อติพจน์"] = {
aliases = {"hyperbolic", "hyperbole", "เกินจริง"},
glossary = true,
pos_categories = "อติพจน์",
}
labels["แก้ไขเกินเหตุ"] = {
aliases = {"hypercorrect", "hypercorrections", "การแก้ไขเกินเหตุ"},
glossary = true,
pos_categories = "ศัพท์ที่แก้ไขเกินเหตุ",
}
labels["hyperforeign"] = {
glossary = true,
pos_categories = "hyperforeign terms",
}
labels["imperial"] = {
aliases = {"emperor", "empress"},
pos_categories = "royal terms",
}
labels["incel slang"] = {
display = "[[incel]] [[slang]]",
pos_categories = true,
}
labels["ไม่ทางการ"] = {
aliases = {"informal", "informally", "ไม่เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ไม่เป็นทางการ",
}
labels["สแลงอินเทอร์เน็ต"] = {
aliases = {"Internet slang", "internet slang"},
display = "[[สแลง]][[อินเทอร์เน็ต]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ไออาร์ซี"] = {
aliases = {"IRC"},
display = "[[ไออาร์ซี]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ironic"] = {
display = "[[irony|ironic]]",
}
-- Not the same as "journalism", which maps to a topical category (e.g. [[:Category:en:Journalism]], instead of [[:Category:English journalistic terms]]).
labels["ภาษาข่าว"] = {
aliases = {"journalese", "journalistic"},
display = "[[ภาษาข่าว]]",
pos_categories = "ศัพท์ที่เป็นภาษาข่าว",
}
labels["leet"] = {
aliases = {"leetspeak"},
display = "[[leetspeak]]",
pos_categories = true,
}
labels["LGBTQ slang"] = {
aliases = {"LGBT slang"},
display = "[[LGBTQ]] [[slang]]",
pos_categories = true,
}
labels["literal"] = {
glossary = "literally",
}
labels["literally"] = {
glossary = "literally",
}
labels["ภาษาหนังสือ"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"literary", "bookish", "ภาษาเขียน", "ภาษาแบบแผน", "หนังสือ", "เขียน", "แบบแผน", "แบบ"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาหนังสือ",
}
labels["loosely"] = {
aliases = {"loose", "broadly", "broad"},
glossary = true,
}
labels["Lubunyaca"] = {
display = "[[Lubunyaca]]",
pos_categories = true,
}
labels["medical slang"] = {
display = "[[medical]] [[slang]]",
pos_categories = true,
}
-- for Awetí, Karajá, etc., where men and women use different words
labels["men's speech"] = {
aliases = {"male speech"},
glossary = "men's speech",
pos_categories = "men's speech terms",
}
labels["metonymically"] = {
aliases = {"metonymic", "metonymy", "metonym"},
glossary = true,
pos_categories = "metonyms",
}
labels["military slang"] = {
display = "[[military]] [[slang]]",
pos_categories = true,
}
labels["คำสบถแปลง"] = {
aliases = {"minced oath"},
display = "[[คำสบถแปลง]]",
pos_categories = "คำสบถแปลง",
}
labels["multiplicative"] = {
aliases = {"multiplicative number", "multiplicative numeral"},
display = "[[multiplicative number]]",
pos_categories = "multiplicative numbers",
}
labels["multiplicity slang"] = {
display = "{{l|en|multiplicity|id=multiple personalities}} [[slang]]",
pos_categories = true,
}
labels["nativising coinage"] = {
display = "[[w:Linguistic purism in Korean|nativising coinage]]",
pos_categories = "nativising coinages",
}
labels["naval slang"] = {
aliases = {"navy slang"},
display = "[[naval]] [[slang]]",
pos_categories = true,
}
labels["นวศัพท์"] = {
aliases = {"neologism", "neologistic", "ศัพท์ใหม่"},
glossary = true,
pos_categories = "นวศัพท์",
}
labels["neopronoun"] = {
display = "[[neopronoun]]",
-- pos_categories = {"neopronouns"},
}
labels["no longer productive"] = {
display = "no longer [[Appendix:Glossary#productive|productive]]",
}
labels["nonce word"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"nonce"},
glossary = true,
pos_categories = "nonce terms",
}
labels["ภาษาไม่มาตรฐาน"] = {
aliases = {"non-standard", "nonstandard", "substandard", "sub-standard", "ไม่มาตรฐาน"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาไม่มาตรฐาน",
}
labels["nonstandard form"] = {
aliases = {"non-standard form", "substandard form", "sub-standard form"},
glossary = "nonstandard",
pos_categories = "nonstandard forms",
}
labels["เลิกใช้"] = {
aliases = {"obsolete", "เลิก"},
glossary = true,
sense_categories = true,
}
labels["obsolete term"] = {
glossary = "obsolete",
-- combine with previous two, q.v.
pos_categories = "obsolete terms",
}
labels["ล่วงเกิน"] = {
aliases = {"offensive", "ล่วงละเมิด", "โจมตี", "รุกราน", "ก้าวร้าว"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล่วงเกิน",
}
labels["officialese"] = {
aliases = {"bureaucratic"},
display = "[[officialese]]",
pos_categories = "officialese terms",
}
labels["OpenStreetMap"] = {
aliases = {"osm", "OSM"},
Wikipedia = true,
pos_categories = "OpenStreetMap jargon",
}
labels["Oxbridge slang"] = {
display = "[[w:Oxbridge|Oxbridge]] [[slang]]",
topical_categories = "Universities",
plain_categories = {"Cambridge University slang", "Oxford University slang"},
}
labels["Oxford University slang"] = {
aliases = {"University of Oxford slang", "Oxon slang"},
display = "[[w:University of Oxford|Oxford University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["ร้อยกรอง"] = {
aliases = {"poi"}, -- Only used in Ancient Greek as a holdover from [[Module:grc:Dialects]].
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"poetic", "กลอน", "กวี"},
glossary = true,
pos_categories = "ศัพท์ที่ใช้ในบทร้อยกรอง",
}
labels["สุภาพ"] = {
aliases = {"polite"},
pos_categories = "ศัพท์ที่สุภาพ",
}
labels["post-classical"] = {
aliases = {"Post-classical", "post-Classical", "Post-Classical", "Postclassical", "postclassical"},
display = "post-Classical",
regional_categories = true,
}
labels["prison slang"] = {
display = "[[prison]] [[slang]]",
pos_categories = true,
}
labels["ไม่ควรใช้"] = {
aliases = {"proscribed", "ห้ามใช้", "ต้องห้าม"},
glossary = true,
pos_categories = "ศัพท์ที่ไม่ควรใช้",
}
labels["puristic"] = {
aliases = {"purism"},
Wikipedia = "Linguistic purism",
pos_categories = "puristic terms",
}
labels["radio slang"] = {
display = "[[radio]] [[slang]]",
pos_categories = true,
}
labels["Reddit slang"] = {
display = "[[Reddit]] [[slang]]",
pos_categories = true,
}
labels["พบได้ยาก"] = {
aliases = {"rare", "rare sense", "พบยาก", "พบน้อย", "พบได้น้อย", "หายาก", "ใช้ไม่บ่อย"},
glossary = true,
sense_categories = true,
}
labels["rare term"] = {
display = "rare",
-- see comments about "obsolete"
pos_categories = "rare terms",
}
-- cf Cockney rhyming slang
labels["rhyming slang"] = {
display = "[[rhyming slang]]",
pos_categories = true,
}
labels["religious slur"] = {
aliases = {"sectarian slur"},
display = "[[religious]] [[slur]]",
pos_categories = "religious slurs",
}
labels["นิวัตนาม"] = {
aliases = {"retronym", "retro"},
glossary = true,
pos_categories = "คำนิวัตนาม",
}
labels["reverential"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[reverential]]",
pos_categories = "reverential terms",
}
labels["ราชาศัพท์"] = {
aliases = {"regal", "royal"},
pos_categories = "ราชาศัพท์",
}
labels["rustic"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"rural"},
pos_categories = "rustic terms",
}
labels["เสียดสี"] = {
aliases = {"ประชด", "ประชดประชัน", "เหน็บแนม", "sarcastic", "sarcasm"},
display = "[[เสียดสี]]",
pos_categories = "ศัพท์ที่เสียดสี",
}
labels["school slang"] = {
aliases = {"public school slang"},
display = "[[school]] [[slang]]",
pos_categories = true,
}
labels["self-deprecatory"] = {
aliases = {"self-deprecating"},
display = "[[self-deprecatory]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "self-deprecatory terms",
}
-- Swahili Sheng cant / argot
-- should this be in a language-specific module?
labels["Sheng"] = {
Wikipedia = "Sheng slang",
plain_categories = true,
}
labels["siglum"] = {
aliases = {"sigla"},
glossary = true,
pos_categories = "sigla",
}
labels["สแลง"] = {
aliases = {"slang"},
glossary = true,
pos_categories = true,
}
labels["university slang"] = {
aliases = {"college slang", "student slang"},
display = "[[university]] [[slang]]",
topical_categories = "Universities",
pos_categories = "student slang",
}
labels["Stenoscript"] = {
aliases = {"stenoscript"},
display = "[[Stenoscript]]",
pos_categories = "Stenoscript abbreviations",
}
labels["superseded"] = {
glossary = true
}
labels["swear word"] = {
aliases = {"profanity", "expletive"},
pos_categories = "swear words",
}
labels["syncopated"] = {
aliases = {"syncope", "syncopic", "syncopation"},
glossary = true,
pos_categories = "syncopic forms",
}
labels["synecdochically"] = {
aliases = {"synecdochic", "synecdochical", "synecdoche"},
glossary = true,
pos_categories = "synecdoches",
}
labels["ศัพท์เฉพาะ"] = {
aliases = {"technical"},
display = "[[ศัพท์เฉพาะ]]",
pos_categories = "ศัพท์เฉพาะ",
}
labels["telic"] = {
glossary = true,
}
labels["text messaging"] = {
aliases = {"texting"},
display = "[[text messaging]]",
pos_categories = "text messaging slang",
}
labels["tone indicator"] = {
display = "[[tone indicator]]",
pos_categories = "tone indicators",
}
labels["เครื่องหมายการค้า"] = {
aliases = {"trademark", "ยี่ห้อ"},
display = "[[เครื่องหมายการค้า]]",
pos_categories = true,
}
labels["transferred sense"] = {
glossary = true,
pos_categories = "terms with transferred senses",
}
labels["transferred senses"] = {
display = "[[transferred sense#English|transferred senses]]",
pos_categories = "terms with transferred senses",
}
labels["transgender slang"] = {
aliases = {"trans slang"},
display = "[[transgender]] [[slang]]",
pos_categories = true,
}
labels["Twitch-speak"] = {
display = "[[Twitch-speak]]",
pos_categories = true,
}
labels["uds."] = {
display = "[[Appendix:Spanish pronouns#Ustedes and vosotros|used formally in Spain]]",
}
labels["uncommon"] = {
glossary = true,
sense_categories = true,
}
labels["used only in songs"] = {
aliases = {"only used in songs", "songs"},
pos_categories = "terms used only in songs",
display = "used only in [[song]]s",
}
labels["used only in tales"] = {
aliases = {"only used in tales", "tales"},
pos_categories = "terms used only in tales",
display = "used only in [[tale]]s",
}
labels["verlan"] = {
glossary = true,
plain_categories = true,
}
labels["very rare"] = {
display = "very [[Appendix:Glossary#rare|rare]]",
sense_categories = "rare",
}
labels["หยาบคาย"] = {
aliases = {"vulgar", "coarse", "obscene", "profane", "หยาบ", "ไม่สุภาพ"},
glossary = true,
pos_categories = "ศัพท์ที่หยาบคาย",
}
labels["vesre"] = {
Wikipedia = true,
plain_categories = true,
}
labels["youth slang"] = {
display = "[[youth]] [[slang]]",
pos_categories = "slang",
}
labels["2channel slang"] = {
aliases = {"2channel", "2ch slang"},
display ="[[w:2channel|2channel]] [[slang]]",
pos_categories = {"สแลงอินเทอร์เน็ต" , "2channel slang"},
}
-- for Awetí, Karajá, etc., where men & women use different words
labels["women's speech"] = {
aliases = {"female speech"},
glossary = "women's speech",
pos_categories = "women's speech terms",
}
-- terms applying to Old Norse skaldic poetry
labels["kenning"] = {
aliases = {"Kenning"},
Wikipedia = "Kenning",
pos_categories = "kennings",
}
labels["heiti"] = {
aliases = {"Heiti"},
Wikipedia = "Heiti",
pos_categories = true,
}
return require("Module:labels").finalize_data(labels)
tj1rh04dfzm0hnav33g5ykjv70jh9qt
มอดูล:category tree/หัวข้อ/สังคม
828
44518
5720885
5720684
2026-04-22T03:20:21Z
OctraBot
3198
5720885
Scribunto
text/plain
local labels = {}
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
labels["สังคม"] = {
type = "related-to",
description = "default",
parents = {"หัวข้อทั้งหมด"},
}
labels["society"] = labels["สังคม"]
labels["ปริญญา"] = {
type = "name",
description = "default",
parents = {"การศึกษา"},
}
labels["academic degrees"] = labels["ปริญญา"]
labels["ชั้นเรียน"] = {
type = "set",
description = "default",
parents = {"การศึกษา"},
}
labels["academic grades"] = labels["ชั้นเรียน"]
labels["การบัญชี"] = {
type = "related-to",
description = "default",
parents = {"การเงิน"},
}
labels["accounting"] = labels["การบัญชี"]
labels["administrative divisions"] = {
type = "set",
description = "default",
parents = {"รัฐบาลและการปกครอง"},
}
labels["การโฆษณา"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ", "การตลาด"},
}
labels["advertising"] = labels["การโฆษณา"]
labels["alt-right"] = {
type = "related-to",
description = "=the [[alt-right]], a loosely connected [[far-right]], [[white nationalist]] movement",
parents = {"อนุรักษนิยม", "ลัทธิฟาสซิสต์", "คตินิยม", "white supremacist ideology"},
}
labels["อนาธิปไตย"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "ฝ่ายซ้าย"},
}
labels["anarchism"] = labels["อนาธิปไตย"]
labels["anti-Semitism"] = {
type = "related-to",
description = "default",
parents = {"forms of discrimination"},
}
labels["รางวัล"] = {
type = "name,type",
description = "default",
parents = {"สังคม"},
}
labels["awards"] = labels["รางวัล"]
labels["การธนาคาร"] = {
type = "related-to",
description = "default",
parents = {"การเงิน", "อุตสาหกรรม"},
}
labels["banking"] = labels["การธนาคาร"]
labels["bars"] = {
type = "type",
description = "default",
parents = {"กิจการ", "การดื่ม"},
}
labels["Basque nationalism"] = {
type = "related-to",
description = "default",
parents = {"Basque Country, Spain", "ชาตินิยม"},
}
labels["เครื่องนอน"] = {
type = "related-to",
description = "default",
parents = {"บ้าน"},
}
labels["bedding"] = labels["เครื่องนอน"]
labels["blacksmithing"] = {
type = "related-to",
description = "default",
parents = {"โลหกรรม"},
}
labels["bond market"] = {
type = "related-to",
description = "default with the",
parents = {"การเงิน"},
}
labels["bookbinding"] = {
type = "related-to",
description = "default",
parents = {"publishing"},
}
labels["book sizes"] = {
type = "name",
description = "default",
parents = {"bookbinding"},
}
labels["Brexit"] = {
type = "related-to",
description = "={{w|Brexit}}, i.e. the withdrawal of the {{w|United Kingdom}} from the {{w|European Union}}",
parents = {"ชาตินิยม", "การเมืองยุโรป", "การเมืองสหราชอาณาจักร"},
}
labels["burial"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "ความตาย"},
}
labels["ธุรกิจ"] = {
type = "related-to",
description = "default",
parents = {"เศรษฐศาสตร์", "สังคม"},
}
labels["business"] = labels["ธุรกิจ"]
labels["กิจการ"] = {
type = "type",
description = "=[[business]]es (specific commercial enterprises or establishments)",
parents = {"ธุรกิจ"},
}
labels["businesses"] = labels["กิจการ"]
labels["ทุนนิยม"] = {
type = "related-to",
description = "default",
parents = {"เศรษฐศาสตร์", "คตินิยม"},
}
labels["capitalism"] = labels["ทุนนิยม"]
labels["chairs"] = {
type = "related-to",
description = "default",
parents = {"เครื่องเรือน", "การนั่ง"},
}
labels["child abuse"] = {
type = "related-to",
description = "default",
parents = {"อาชญากรรม", "เด็ก", "ความรุนแรง"},
}
labels["Chinese restaurants"] = {
type = "related-to",
description = "default",
breadcrumb = "Chinese",
parents = {"ร้านอาหาร", "จีน"},
}
labels["cleaning"] = {
type = "related-to",
description = "default",
parents = {"บ้าน"},
}
labels["เหรียญ"] = {
type = "set,related-to",
description = "default",
parents = {"เงิน (ตัวกลาง)"},
}
labels["coins"] = labels["เหรียญ"]
labels["อนุรักษนิยม"] = {
type = "related-to",
description = "=[[conservatism]] or [[traditionalist]] beliefs",
parents = {"คตินิยม"},
}
labels["conservatism"] = labels["อนุรักษนิยม"]
labels["commerce"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["commercial documents"] = {
type = "set",
description = "default",
parents = {"commerce"},
}
labels["commercial law"] = {
type = "related-to",
description = "default",
breacrumb = "commercial",
parents = {"กฎหมาย", "commerce"},
}
labels["competition law"] = {
type = "related-to",
description = "default",
breacrumb = "competition",
parents = {"กฎหมาย"},
}
labels["antitrust law"] = {
description = "default",
breacrumb = "antitrust",
parents = {"competition law"},
}
labels["law of unfair competition"] = {
description = "default with the",
breacrumb = "unfair",
parents = {{name = "competition law", sort = "unfair"}},
}
labels["ลัทธิคอมมิวนิสต์"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "สังคมนิยม", "ฝ่ายซ้าย"},
}
labels["communism"] = labels["ลัทธิคอมมิวนิสต์"]
labels["constitutional law"] = {
type = "related-to",
description = "default",
breadcrumb = "constitutional",
parents = {"กฎหมาย"},
}
labels["ลิขสิทธิ์"] = {
type = "related-to",
description = "default",
parents = {"ทรัพย์สินทางปัญญา"},
}
labels["copyright"] = labels["ลิขสิทธิ์"]
labels["copyright licenses"] = {
type = "name",
description = "=[[license]]s of [[copyright]]",
breadcrumb_and_first_sort_base = "licenses",
parents = {"ลิขสิทธิ์"},
}
labels["corporate law"] = {
type = "related-to",
description = "default",
breadcrumb = "corporate",
parents = {"กฎหมาย"},
}
labels["corruption"] = {
type = "related-to",
description = "default",
parents = {"อาชญากรรม", "การเมือง"},
}
labels["งานฝีมือ"] = {
type = "type",
description = "default",
parents = {"สังคม"},
}
labels["crafts"] = labels["งานฝีมือ"]
labels["อาชญากรรม"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "กฎหมายอาญา"},
}
labels["crime"] = labels["อาชญากรรม"]
labels["crime prevention"] = {
type = "related-to",
description = "default",
parents = {"public safety", "อาชญากรรม"},
}
labels["กฎหมายอาญา"] = {
type = "related-to",
description = "default",
breadcrumb = "criminal",
parents = {"กฎหมาย"},
}
labels["criminal law"] = labels["กฎหมายอาญา"]
labels["crochet"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["cryptocurrency"] = {
type = "related-to",
description = "default",
parents = {"เงินตรา", "วิทยาการรหัสลับ", "เทคโนโลยี"},
}
-- currencies คือเงินตราชนิดต่าง ๆ
labels["สกุลเงิน"] = {
type = "set",
description = "default",
parents = {"เงิน (ตัวกลาง)", "เงินตรา"},
}
labels["currencies"] = labels["สกุลเงิน"]
-- currency คือเงินที่กำหนดตามกฎหมาย มีตราของรัฐ
labels["เงินตรา"] = {
type = "related-to",
description = "default",
parents = {"เงิน (ตัวกลาง)"},
}
labels["currency"] = labels["เงินตรา"]
labels["dairy farming"] = {
type = "related-to",
description = "default",
parents = {"เกษตรกรรม", "อุตสาหกรรม"},
}
labels["ประชาธิปไตย"] = {
type = "related-to",
description = "default",
parents = {"ระบอบการปกครอง"},
}
labels["democracy"] = labels["ประชาธิปไตย"]
labels["diplomacy"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["discrimination"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["drug trafficking"] = {
type = "related-to",
description = "default",
parents = {"อาชญากรรม", "ยา"},
}
labels["การศึกษา"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["education"] = labels["การศึกษา"]
labels["emergency services"] = {
type = "related-to",
description = "default",
parents = {"public safety"},
}
labels["employment"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ", "งาน"},
}
labels["espionage"] = {
type = "related-to",
description = "default",
parents = {"security", "deception", "secrecy"},
}
labels["evil"] = {
type = "related-to",
description = "default",
parents = {"จริยศาสตร์", "ศาสนา"},
}
labels["fame"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "ความรู้"},
}
labels["family law"] = {
type = "related-to",
description = "default",
breadcrumb = "family",
parents = {"กฎหมาย"},
}
labels["ลัทธิฟาสซิสต์"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["fascism"] = labels["ลัทธิฟาสซิสต์"]
labels["farriery"] = {
type = "related-to",
description = "default",
parents = {"blacksmithing", "ม้า"},
}
-- AKA คตินิยมสิทธิสตรี, สตรีสิทธินิยม
labels["สตรีนิยม"] = {
type = "related-to",
description = "default",
parents = {"สถานะเพศ", "เพศหญิง", "คตินิยม", "สังคม", "สังคมวิทยา"},
}
labels["feminism"] = labels["สตรีนิยม"]
labels["feudalism"] = {
type = "related-to",
description = "default",
parents = {"ระบอบการปกครอง"},
}
labels["การเงิน"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["finance"] = labels["การเงิน"]
labels["firefighting"] = {
type = "related-to",
description = "default",
parents = {"emergency services", "ไฟ"},
}
labels["forms of discrimination"] = {
type = "type",
description = "{{{langname}}} terms for [[form]]s of [[discrimination]].",
additional = "{{also|หมวดหมู่:{{{langcode}}}:อคติ|หมวดหมู่:{{{langcode}}}:ทฤษฎีสมคบคิด|หมวดหมู่:{{{langcode}}}:คตินิยม}}",
breadcrumb = "forms",
parents = {"discrimination"},
}
labels["ระบอบการปกครอง"] = {
type = "type",
description = "{{{langname}}} terms for [[form]]s of [[government]].",
breadcrumb = "forms",
parents = {"รัฐบาลและการปกครอง"},
}
labels["forms of government"] = labels["ระบอบการปกครอง"]
labels["อิสรภาพ"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["freedom"] = labels["อิสรภาพ"]
labels["freedom of speech"] = {
type = "related-to",
description = "default",
breadcrumb = "speech",
parents = {{name = "อิสรภาพ", sort = "speech"}, "กฎหมาย"},
}
labels["freemasonry"] = {
type = "related-to",
description = "default",
parents = {"องค์การ"},
}
labels["funeral"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "ความตาย", "อุตสาหกรรม"},
}
labels["เครื่องเรือน"] = {
type = "related-to",
description = "default",
parents = {"บ้าน"},
commonscat = true,
wpcat = true,
}
labels["furniture"] = labels["เครื่องเรือน"]
labels["gender-critical feminism"] = {
type = "related-to",
description = "default",
breadcrumb = "gender-critical",
parents = {"สตรีนิยม", "สถานะเพศ", "transphobia"},
}
labels["glassblowing"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ", "glass"},
}
labels["good"] = {
type = "related-to",
description = "default",
parents = {"จริยศาสตร์", "ศาสนา"},
}
labels["รัฐบาลและการปกครอง"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "การเมือง"},
}
labels["government"] = labels["รัฐบาลและการปกครอง"]
labels["hairdressing"] = {
type = "related-to",
description = "default",
parents = {"ผมและขน", "งานฝีมือ"},
}
labels["สังคมชั้นสูง"] = {
type = "related-to",
description = "=royalty and nobility",
parents = {"สังคม"},
}
labels["high society"] = labels["สังคมชั้นสูง"]
labels["Hindutva"] = {
type = "related-to",
description = "=[[Hindutva]] or {{w|Hindu nationalism}}",
parents = {"อนุรักษนิยม", "ศาสนาฮินดู", "คตินิยม", "การเมืองอินเดีย", "ชาตินิยม", "เทวาธิปไตย"},
}
labels["สกุลเงินในอดีต"] = {
type = "set",
description = "default",
breadcrumb = "historical",
parents = {"สกุลเงิน"},
}
labels["historical currencies"] = labels["สกุลเงินในอดีต"]
labels["บ้าน"] = {
type = "related-to",
description = "default with the",
parents = {"สังคม"},
}
labels["home"] = labels["บ้าน"]
labels["homophobia"] = {
type = "related-to",
description = "default",
parents = {"queerphobia"},
}
labels["hospitality"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["host industry"] = {
type = "related-to",
description = "default",
parents = {"hospitality", "กิจการ"},
}
labels["โรงแรม"] = {
type = "type",
description = "default",
parents = {"กิจการ", "การท่องเที่ยว", "hospitality"},
}
labels["hotels"] = labels["โรงแรม"]
labels["ครัวเรือน"] = {
type = "related-to",
description = "default",
parents = {"บ้าน"},
}
labels["household"] = labels["ครัวเรือน"]
labels["housing"] = {
type = "related-to",
description = "default",
parents = {"บ้าน", "อาคาร"},
}
labels["ทรัพยากรมนุษย์"] = {
type = "related-to",
description = "default no singularize",
parents = {"ธุรกิจ", "สังคมวิทยา"},
}
labels["human resources"] = labels["ทรัพยากรมนุษย์"]
labels["คตินิยม"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "การเมือง"},
}
labels["ideologies"] = labels["คตินิยม"]
labels["imperialism"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["import/export"] = {
type = "related-to",
description = "=[[import]]s and [[export]]s",
parents = {"การค้า", "การคมนาคม"},
}
labels["incel community"] = {
type = "related-to",
description = "=the [[incel]] community",
parents = {"masculism", "เพศ"},
}
labels["incoterms"] = {
type = "related-to",
description = "=[[Incoterm]]s",
parents = {"ธุรกิจ", "import/export"},
}
labels["อุตสาหกรรม"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["industries"] = labels["อุตสาหกรรม"]
labels["inheritance law"] = {
type = "related-to",
description = "default",
breadcrumb = "inheritance",
parents = {"กฤหมาย"},
}
labels["insurance"] = {
type = "related-to",
description = "default",
parents = {"การเงิน", "อุตสาหกรรม"},
}
labels["ทรัพย์สินทางปัญญา"] = {
type = "related-to",
description = "=[[intellectual property]] [[law]]",
parents = {"กฎหมาย"},
}
labels["intellectual property"] = labels["ทรัพย์สินทางปัญญา"]
labels["กฎหมายระหว่างประเทศ"] = {
type = "related-to",
description = "default",
breadcrumb = "international",
parents = {"กฎหมาย"},
}
labels["international law"] = labels["กฎหมายระหว่างประเทศ"]
labels["international relations"] = {
type = "related-to",
description = "default wikify",
parents = {"การเมือง", "โลก"},
}
labels["international relations"] = labels["ความสัมพันธ์ระหว่างประเทศ"]
labels["การเงินอิสลาม"] = {
type = "related-to",
description = "default wikify",
breadcrumb = "Islamic",
parents = {"การเงิน", "การธนาคาร", "ศาสนาอิสลาม"},
}
labels["Islamic finance"] = labels["การเงินอิสลาม"]
labels["กฎหมายอิสลาม"] = {
type = "related-to",
description = "default wikify",
breadcrumb = "กฎหมาย",
parents = {{name = "ศาสนาอิสลาม", sort = "กฎหมาย"}, "กฎหมาย"},
}
labels["Islamic law"] = labels["กฎหมายอิสลาม"]
labels["Islamism"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "อนุรักษนิยม", "ศาสนาอิสลาม", "เทวาธิปไตย"},
}
labels["Juche"] = {
type = "related-to",
description = "default",
parents = {"เกาหลีเหนือ", "communism", "ชาตินิยม"},
}
labels["justice"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["เคเอฟซี"] = {
type = "related-to",
description = "=the {{w|Kentucky Fried Chicken}} [[chain]] of [[fast-food]] [[restaurant]]s",
parents = {"ร้านอาหาร"},
}
labels["Kentucky Fried Chicken"] = labels["เคเอฟซี"]
labels["knitting"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["Ku Klux Klan"] = {
type = "related-to",
description = "default with the",
parents = {"องค์การ", "white supremacist ideology"},
}
labels["kyabakura industry"] = {
type = "related-to",
description = "default",
parents = {"hospitality", "กิจการ"},
}
labels["labour"] = {
type = "related-to",
description = "=[[labour]] or the {{w|labour movement}}",
parents = {"งาน", "ฝ่ายซ้าย"},
}
labels["laundry"] = {
type = "related-to",
description = "default",
parents = {"cleaning"},
}
labels["กฎหมาย"] = {
type = "related-to",
description = "=the [[science]] and [[practice]] of [[law]]",
parents = {"justice"},
}
labels["law"] = labels["กฎหมาย"]
labels["การบังคับใช้กฎหมาย"] = {
type = "related-to",
description = "default",
parents = {"crime prevention", "emergency services", "กฎหมาย"},
}
labels["law enforcement"] = labels["การบังคับใช้กฎหมาย"]
labels["law of obligations"] = {
type = "related-to",
description = "default with the no singularize",
breadcrumb = "obligations",
parents = {"กฎหมาย"},
}
labels["leatherworking"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["ฝ่ายซ้าย"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["leftism"] = labels["ฝ่ายซ้าย"]
labels["เสรีนิยม"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["liberalism"] = labels["เสรีนิยม"]
labels["อิสรนิยม"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["libertarianism"] = labels["อิสรนิยม"]
labels["logistics"] = {
type = "related-to",
description = "default no singularize",
parents = {"operations"},
}
labels["การจัดการ"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["management"] = labels["การจัดการ"]
labels["ลัทธิเหมา"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "ลัทธิคอมมิวนิสต์", "ลัทธิมากซ์"},
}
labels["Maoism"] = labels["ลัทธิเหมา"]
labels["การตลาด"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["marketing"] = labels["การตลาด"]
labels["ลัทธิมากซ์"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "สังคมนิยม"},
}
labels["Marxism"] = labels["ลัทธิมากซ์"]
labels["masculism"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "เพศชาย"},
}
labels["metalworking"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ", "โลหกรรม"},
}
labels["McDonald's"] = {
type = "related-to",
description = "=the {{w|McDonald's}} [[chain]] of [[fast-food]] [[restaurant]]s",
parents = {"ร้านอาหาร"},
}
labels["micronationalism"] = {
type = "related-to",
description = "default",
parents = {"ระบอบการปกครอง", "คตินิยม"},
}
labels["การทหาร"] = {
type = "related-to",
description = "default with the",
parents = {"สังคม"},
}
labels["military"] = labels["การทหาร"]
labels["military units"] = {
type = "related-to",
description = "default",
parents = {"การทหาร", "อาชีพ"},
}
labels["mining"] = {
type = "related-to",
description = "default",
parents = {"อุตสาหกรรม"},
}
labels["กษัตริย์นิยม"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "ราชาธิปไตย"},
}
labels["monarchism"] = labels["กษัตริย์นิยม"]
labels["ราชาธิปไตย"] = {
type = "related-to",
description = "default",
parents = {"ระบอบการปกครอง", "สังคมชั้นสูง"},
}
labels["monarchy"] = labels["ราชาธิปไตย"]
-- money คือรวมทั้งเงินตราและไม่ใช่เงินตรา
labels["เงิน (ตัวกลาง)"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["money"] = labels["เงิน (ตัวกลาง)"]
labels["museums"] = {
type = "related-to",
description = "default",
parents = {"กิจการ", "การท่องเที่ยว", "ศิลปะ"},
}
labels["ชาตินิยม"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม"},
}
labels["nationalism"] = labels["ชาตินิยม"]
labels["ลัทธินาซี"] = {
type = "related-to",
description = "default",
parents = {"ลัทธิฟาสซิสต์", "white supremacist ideology", "คตินิยม"},
}
labels["Nazism"] = labels["ลัทธินาซี"]
labels["ลัทธินาซีใหม่"] = { -- Adjacent to Nazism, but not quite the same thing.
type = "related-to",
description = "default",
parents = {"ลัทธินาซี", "ลัทธิฟาสซิสต์", "white supremacist ideology", "คตินิยม"},
}
labels["neo-Nazism"] = labels["ลัทธินาซีใหม่"]
labels["Nobel Prize"] = {
type = "related-to",
description = "default with the",
parents = {"รางวัล"},
}
labels["Objectivism"] = {
type = "related-to",
description = "=the political philosophy of {{w|Objectivism}} developed by {{w|Ayn Rand}}",
parents = {"คตินิยม", "อิสรนิยม"},
}
labels["offices"] = {
type = "type",
description = "=offices, in the sense \"position of responsibility of some authority within an organisation\"",
parents = {"รัฐบาลและการปกครอง"},
}
labels["อุตสาหกรรมน้ำมัน"] = {
type = "related-to",
description = "default with the",
breadcrumb = "oil",
parents = {"อุตสาหกรรม", "ปิโตรเลียม"},
}
labels["oil industry"] = labels["อุตสาหกรรมน้ำมัน"]
labels["operations"] = {
type = "related-to",
description = "{{{langname}}} terms covering all operational matters in [[production]], [[logistics]], or [[services]].",
parents = {"การจัดการ", "systems theory"},
}
labels["องค์การ"] = {
type = "name",
description = "default",
parents = {"สังคม"},
}
labels["organizations"] = labels["องค์การ"]
labels["papermaking"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ", "อุตสาหกรรม"},
}
labels["กฎหมายสิทธิบัตร"] = {
type = "related-to",
description = "default",
breadcrumb = "patent",
parents = {"กฎหมาย"},
}
labels["patent law"] = labels["กฎหมายสิทธิบัตร"]
labels["peace"] = {
type = "related-to",
description = "default",
parents = {"security"},
}
labels["pensions"] = {
type = "related-to",
description = "default",
parents = {"การเงิน"},
}
labels["philanthropy"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["Philmont Scout Ranch"] = {
type = "related-to",
description = "={{w|Philmont Scout Ranch}}, a Scouting ranch in the United States",
parents = {"Scouting"},
}
labels["piracy"] = {
type = "related-to",
description = "default",
parents = {"อาชญากรรม", "การเดินเรือ"},
}
labels["การเมือง"] = {
type = "related-to",
description = "default no singularize",
parents = {"สังคม"},
}
labels["politics"] = labels["การเมือง"]
labels["poverty"] = {
type = "related-to",
description = "default",
parents = {"wealth"},
}
--ภาษาไทยไม่ต้องผันรูป
for _, country_demonym in ipairs {
{"อาร์เจนตินา"},
{"ออสเตรเลีย"},
{"บังกลาเทศ"},
{"บราซิล"},
{"แคนาดา"},
{"ชิลี"},
{"จีน"},
{"ยุโรป"},
{"สหภาพยุโรป", nil, nil, "การเมืองยุโรป"},
{"ฝรั่งเศส", nil, nil, "การเมืองยุโรป"},
{"เยอรมนี", nil, nil, "การเมืองยุโรป"},
{"ฮ่องกง"},
{"ฮังการี", nil, nil, "การเมืองยุโรป"},
{"อินเดีย"},
{"อินโดนีเซีย"},
{"ไอร์แลนด์", nil, nil, "การเมืองยุโรป"},
{"ญี่ปุ่น"},
{"มาเลเซีย"},
{"เม็กซิโก"},
{"นิวซีแลนด์"},
{"ไนจีเรีย"},
{"ปากีสถาน"},
{"ปาเลสไตน์"},
{"เปรู"},
{"ฟิลิปปินส์"},
{"โปแลนด์", nil, nil, "การเมืองยุโรป"},
{"โปรตุเกส", nil, nil, "การเมืองยุโรป"},
{"รัสเซีย"},
{"สิงคโปร์"},
{"เซาท์แอฟริกา"},
{"เกาหลีใต้"},
{"สเปน", nil, nil, "การเมืองยุโรป"},
{"สวิตเซอร์แลนด์", nil, nil, "การเมืองยุโรป"},
{"ไต้หวัน"},
{"ยูเครน"},
{"สหราชอาณาจักร"},
{"สหรัฐอเมริกา"},
{"เวเนซุเอลา"},
{"เวียดนาม"},
} do
local country, demonym, full_country, parent = unpack(country_demonym)
labels["การเมือง" .. country] = { -- ภาษาไทยใช้คำเดียวกันหมด
type = "related-to",
description = ("=the {{w|politics of %s}}"):format(full_country or country),
parents = {parent or "การเมือง", country},
}
end
labels["การพิมพ์"] = {
type = "related-to",
description = "default",
parents = {"อุตสาหกรรม"},
}
labels["printing"] = labels["การพิมพ์"]
labels["prison"] = {
type = "related-to",
description = "default",
parents = {"การบังคับใช้กฎหมาย", "อาคาร"},
}
labels["กฎหมายวิธีพิจารณาความ"] = {
type = "related-to",
description = "default",
breadcrumb = "procedural",
parents = {"กฎหมาย"},
}
labels["procedural law"] = labels["กฎหมายวิธีพิจารณาความ"]
labels["property law"] = {
type = "related-to",
description = "default",
breadcrumb = "property",
parents = {"กฎหมาย"},
}
labels["public administration"] = {
type = "related-to",
description = "=the field of [[public]] [[administration]]",
parents = {"รัฐบาลและการปกครอง"},
}
labels["public safety"] = {
type = "related-to",
description = "=the field of [[public]] [[safety]]",
parents = {"public administration", "security"},
}
labels["publishing"] = {
type = "related-to",
description = "default",
parents = {"อุตสาหกรรม", "สื่อมวลชน"},
}
labels["QAnon"] = {
type = "related-to",
description = "=the [[QAnon]] movement",
parents = {"alt-right", "ทฤษฎีสมคบคิด", "Donald Trump", "pedophilia"},
}
labels["queerphobia"] = {
type = "related-to",
description = "default",
parents = {"forms of discrimination", "แอลจีบีทีคิว"},
}
labels["เชื้อชาตินิยม"] = {
type = "related-to",
description = "default",
parents = {"forms of discrimination"},
}
labels["racism"] = labels["เชื้อชาตินิยม"]
labels["rape"] = {
type = "related-to",
description = "=the field of [[sexual violence]]",
parents = {"เพศ", "อาชญากรรม", "ความรุนแรง"},
}
labels["อสังหาริมทรัพย์"] = {
type = "related-to",
description = "default",
parents = {"อุตสาหกรรม", "housing"},
}
labels["real estate"] = labels["อสังหาริมทรัพย์"]
labels["ร้านอาหาร"] = {
type = "related-to",
description = "=[[restaurant]]s (including [[pub]]s, [[café]]s etc.)",
parents = {"กิจการ", "อาหารและเครื่องดื่ม"},
}
labels["restaurants"] = labels["ร้านอาหาร"]
labels["royal residences"] = {
type = "related-to",
description = "default",
parents = {"housing", "ราชาธิปไตย"},
}
labels["โรงเรียน"] = {
type = "related-to",
description = "default",
parents = {"การศึกษา", "อาคาร"},
}
labels["schools"] = labels["โรงเรียน"]
-- Note: this is the usual term, not "Scottish law".
labels["Scots law"] = {
type = "related-to",
description = "default",
breadcrumb = "Scots",
parents = {"กฎหมาย", "สกอตแลนด์"},
}
labels["Scouting"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["security"] = {
type = "related-to",
description = "default",
parents = {"สังคม"},
}
labels["sexism"] = {
type = "related-to",
description = "default",
parents = {"forms of discrimination", "สถานะเพศ"},
}
labels["sewing"] = {
type = "related-to",
description = "=[[sewing]], sewing tools, sewing [[technique]]s and so on",
parents = {"งานฝีมือ"},
}
labels["shoemaking"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["slavery"] = {
type = "related-to",
description = "default",
parents = {"สังคม", "งาน"},
}
labels["สังคมนิยม"] = {
type = "related-to",
description = "default",
parents = {"เศรษฐศาสตร์", "คตินิยม", "ฝ่ายซ้าย"},
}
labels["socialism"] = labels["สังคมนิยม"]
labels["social justice"] = {
type = "related-to",
description = "default",
parents = {"การเมือง", "สังคม", "สัคมวิทยา", "ฝ่ายซ้าย"},
}
labels["social security"] = {
type = "related-to",
description = "default",
parents = {"รัฐบาลและการปกครอง", "กฎหมาย", "เงิน (ตัวกลาง)"},
}
labels["spinning"] = {
type = "related-to",
description = "=[[spinning]], the process of making [[yarn]] or [[string]] from raw [[fiber]]",
parents = {"งานฝีมือ"},
}
labels["square dancing"] = {
type = "related-to",
description = "default",
parents = {"dance"},
}
labels["standards of identity"] = {
type = "related-to",
description = "default",
parents = {"กฎหมาย", "อาหารและเครื่องดื่ม"},
}
labels["ตลาดหลักทรัพย์"] = {
type = "related-to",
description = "default with the",
parents = {"การเงิน"},
}
labels["stock market"] = labels["ตลาดหลักทรัพย์"]
labels["stock symbols for companies"] = {
type = "name",
description = "=[[stock symbol]]s for [[company|companies]]",
parents = {"การค้า"},
}
labels["supply chain"] = {
type = "related-to",
description = "default no singularize",
parents = {"operations"},
}
labels["ภาษีอากร"] = {
type = "related-to",
description = "default",
parents = {"รัฐบาลและการปกครอง", "กฎหมาย", "เงิน (ตัวกลาง)"},
}
labels["taxation"] = labels["ภาษีอากร"]
labels["theft"] = {
type = "related-to",
description = "default",
parents = {"อาชญากรรม"},
}
labels["เทวาธิปไตย"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "ศาสนา"},
}
labels["theocracy"] = labels["เทวาธิปไตย"]
labels["อุตสาหกรรมป่าไม้"] = {
type = "related-to",
description = "default with the",
breadcrumb = "timber",
parents = {"อุตสาหกรรม"},
}
labels["timber industry"] = labels["อุตสาหกรรมป่าไม้"]
labels["เครื่องหมายการค้า"] = {
type = "related-to",
description = "=[[trademark]] [[law]]",
parents = {"ทรัพย์สินทางปัญญา"},
}
labels["trademark"] = labels["เครื่องหมายการค้า"]
labels["การค้า"] = {
type = "related-to",
description = "default",
parents = {"ธุรกิจ"},
}
labels["transphobia"] = {
type = "related-to",
description = "default",
parents = {"forms of discrimination", "transgender"},
}
labels["trust"] = {
type = "related-to",
description = "default",
parents = {"security"},
}
labels["types of settlements"] = {
type = "type",
topic = "การตั้งถิ่นฐาน",
description = "=[[การตั้งถิ่นฐาน]]",
parents = {"รัฐบาลและการปกครอง"},
}
labels["สหประชาชาติ"] = {
type = "related-to",
description = "=the [[United Nations Organization]]",
parents = {"องค์การ"},
}
labels["United Nations"] = labels["สหประชาชาติ"]
labels["มหาวิทยาลัย"] = {
type = "related-to",
description = "default",
parents = {"โรงเรียน"},
}
labels["universities"] = labels["มหาวิทยาลัย"]
labels["voting systems"] = {
type = "related-to",
description = "default",
parents = {"ประชาธิปไตย", "ระบบ"},
}
labels["wealth"] = {
type = "related-to",
description = "default",
parents = {"เศรษฐศาสตร์"},
}
labels["weaving"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["white supremacist ideology"] = {
type = "related-to",
description = "default",
parents = {"เชื้อชาตินิยม", "anti-Semitism", "คตินิยม"},
}
labels["woodworking"] = {
type = "related-to",
description = "default",
parents = {"งานฝีมือ"},
}
labels["Zionism"] = {
type = "related-to",
description = "default",
parents = {"คตินิยม", "ศาสนายูดาย", "อิสราเอล", "ชาตินิยม"},
}
return labels
2dkvdjobauhpty0wrig93b1kwz2to00
มอดูล:category tree/คำหลัก
828
48105
5720953
5688351
2026-04-22T11:36:23Z
OctraBot
3198
5720953
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local handlers = {}
local ucfirst = require("Module:string utilities").ucfirst
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
local diminutive_augmentative_poses = {
"คำคุณศัพท์",
"คำกริยาวิเศษณ์",
"ตัวกำหนด",
"คำอุทาน",
"คำนาม",
"เลข",
"อุปสรรค",
"คำวิสามานยนาม",
"คำสรรพนาม",
"ปัจจัย",
"คำกริยา"
}
labels["คำหลัก"] = {
description = "[[วิกิพจนานุกรม:คำหลัก|คำหลัก]]{{{langcat}}} ที่จัดแบ่งหมวดหมู่ตามวจีวิภาค",
umbrella_parents = "มูลฐาน",
parents = {{name = "{{{langcat}}}", raw = true, sort = " "}},
}
labels["lemmas"] = labels["คำหลัก"]
labels["action nouns"] = {
description = "{{{langname}}} nouns denoting action of a verb or verbal root that it is derived from.",
parents = {"คำนาม"},
}
labels["act-related adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดง the motive or other background information for an action.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["adjective concords"] = {
description = "{{{langname}}} concords that are prefixed to adjective stems.",
parents = {"concords"},
}
labels["คำคุณศัพท์"] = {
description = "ศัพท์{{{langcat}}} ที่กำหนดคุณลักษณะให้กับคำนาม ซึ่งขยายความหมายของคำนาม",
parents = {"คำหลัก"},
}
labels["adjectives"] = labels["คำคุณศัพท์"]
labels["adverbial accusatives"] = {
description = "Accusative case-forms in {{{langname}}} used as adverbs.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["คำกริยาวิเศษณ์"] = {
description = "ศัพท์{{{langcat}}} ที่ขยายอนุประโยค ประโยค และวลีโดยตรง",
parents = {"คำหลัก"},
}
labels["adverbs"] = labels["คำกริยาวิเศษณ์"]
-- คนละอันกับ หน่วยคำ (morpheme)
labels["หน่วยคำเติม"] = {
description = "Morphemes attached to existing คำ{{{langcat}}}.",
parents = {"หน่วยคำ"},
}
labels["affixes"] = labels["หน่วยคำเติม"]
labels["คำนามผู้กระทำ"] = {
description = "{{{langname}}} nouns that denote an agent that performs the action denoted by the verb from which the noun is derived.",
parents = {"คำนาม"},
}
labels["agent nouns"] = labels["คำนามผู้กระทำ"]
labels["คำกังขาบท"] = {
description = "{{{langname}}} adpositions that can occur either before or after their objects.",
parents = {"คำหลัก"},
}
labels["ambipositions"] = labels["คำกังขาบท"]
labels["ambitransitive verbs"] = {
description = "คำกริยา{{{langcat}}} that may or may not direct actions, occurrences or states to grammatical objects.",
parents = {"คำกริยา", "คำสกรรมกริยา", "คำอกรรมกริยา"},
}
labels["animal commands"] = {
description = "{{{langname}}} words used to communicate with animals.",
parents = {"คำอุทาน"},
}
labels["คำกำกับนาม"] = {
description = "ศัพท์{{{langcat}}} ที่กำหนดและระบุคำนาม",
parents = {"ตัวกำหนด"},
}
labels["articles"] = labels["คำกำกับนาม"]
labels["aspect adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that express [[w:Grammatical aspect|grammatical aspect]], describing the flow of time in relation to a statement.",
parents = {"คำกริยาวิเศษณ์"},
}
for _, pos in ipairs(diminutive_augmentative_poses) do
labels[pos .. "บอกความใหญ่"] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey big size or big intensity.",
parents = {pos},
}
end
labels["attenuative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event is performed or takes place gently, lightly, partially, perfunctorily or to an otherwise reduced extent.",
parents = {"คำกริยา"},
}
labels["autobenefactive verbs"] = {
description = "{{{langname}}} verbs that indicate that the agent of an action is also its benefactor.",
parents = {"คำกริยา"},
}
labels["automative verbs"] = {
description = "{{{langname}}} verbs that indicate actions directed at or a change of state of the grammatical subject.",
parents = {"คำกริยา"},
}
labels["คำกริยาช่วย"] = {
description = "คำกริยา{{{langcat}}} that provide additional conjugations for other verbs.",
parents = {"คำกริยา"},
}
labels["auxiliary verbs"] = labels["คำกริยาช่วย"]
labels["biaspectual verbs"] = {
description = "คำกริยา{{{langcat}}} that can be both imperfective and perfective.",
parents = {"คำกริยา"},
}
labels["คำกริยาก่อเหตุ"] = {
description = "คำกริยา{{{langcat}}} that express causing actions or states rather than performing or being them directly. Use this only for separate verbs: causative forms that are part of the inflection of verbs have their own category (see [[:Category:Verb causative forms by language]]).",
parents = {"คำกริยา"},
}
labels["causative verbs"] = labels["คำกริยาก่อเหตุ"]
labels["หน่วยคำเติมคร่อม"] = {
description = "Affixes attached to both the beginning and the end of คำ{{{langcat}}}, together as single units.",
parents = {"หน่วยคำ"},
}
labels["circumfixes"] = labels["หน่วยคำเติมคร่อม"]
labels["circumpositions"] = {
description = "{{{langname}}} adpositions that appear on both sides of their objects.",
parents = {"คำหลัก"},
}
labels["คำลักษณนาม"] = {
description = "ศัพท์{{{langcat}}} ที่จำแนกประเภทของคำนามตามความหมายของคำนาม",
parents = {"คำหลัก"},
}
labels["classifiers"] = labels["คำลักษณนาม"]
labels["counters"] = labels["คำลักษณนาม"]
labels["clitics"] = {
description = "{{{langname}}} morphemes ที่ทำหน้าที่เป็น independent words, but are always attached to another word.",
parents = {"หน่วยคำ"},
}
--[[ ภาษาไทยใช้ต่างกัน ดูข้างล่าง
for _, pos in ipairs { "คำนาม", "ปัจจัย" } do
labels["collective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that indicate groups of related things or beings, without the need of grammatical pluralization.",
parents = {pos},
}
end
--]]
labels["คำสมุหนาม"] = {
description = "คำนาม{{{langcat}}} that indicate groups of related things or beings, without the need of grammatical pluralization.",
parents = {"คำนาม"},
}
labels["สมุหปัจจัย"] = {
description = "ปัจจัย{{{langcat}}} that indicate groups of related things or beings, without the need of grammatical pluralization.",
parents = {"ปัจจัย"},
}
labels["combining forms"] = {
description = "Forms of คำ{{{langcat}}} that do not occur independently, but are used when joined with other words.",
parents = {"หน่วยคำ"},
}
labels["คำคุณศัพท์เปรียบเทียบได้"] = {
description = "คำคุณศัพท์{{{langname}}}ที่สามารถผันได้เพื่อแสดงระดับขั้นต่าง ๆ ของการเปรียบเทียบ",
parents = {"คำคุณศัพท์"},
}
labels["comparable adjectives"] = labels["คำคุณศัพท์เปรียบเทียบได้"]
labels["คำกริยาวิเศษณ์เปรียบเทียบได้"] = {
description = "คำกริยาวิเศษณ์{{{langname}}}ที่สามารถผันได้เพื่อแสดงระดับขั้นต่าง ๆ ของการเปรียบเทียบ",
parents = {"คำกริยาวิเศษณ์"},
}
labels["comparable adverbs"] = labels["คำกริยาวิเศษณ์เปรียบเทียบได้"]
labels["completive verbs"] = {
description = "{{{langname}}} verbs which refer to the completion of an action which has already commenced or which has already been performed upon a subset of the entities which it affects.",
parents = {"คำกริยา"},
}
labels["concords"] = {
description = "อุปสรรค{{{langcat}}} attached to words to show agreement with a noun or pronoun.",
parents = {"อุปสรรค"},
}
labels["คำสันธาน"] = {
description = "ศัพท์{{{langcat}}} ที่เชื่อมคำ วลี หรืออนุประโยค เข้าด้วยกัน",
parents = {"คำหลัก"},
}
labels["conjunctions"] = labels["คำสันธาน"]
labels["conjunctive adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that connect two independent clauses together.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["continuative verbs"] = {
description = "คำกริยา{{{langcat}}} that express continuing action.",
parents = {"คำกริยาไม่สมบูรณ์", "คำกริยา"},
}
labels["control verbs"] = {
description = "คำกริยา{{{langcat}}} that take multiple arguments, one of which is another verb. One of the control verb's arguments is syntactically both an argument of the control verb and an argument of the other verb.",
parents = {"คำกริยา"},
}
labels["cooperative verbs"] = {
description = "{{{langname}}} verbs that indicate cooperation",
parents = {"คำกริยา"},
}
labels["coordinating conjunctions"] = {
description = "คำสันธาน{{{langcat}}} ที่แสดง equal syntactic importance between connected items.",
parents = {"คำสันธาน"},
}
labels["copulative verbs"] = {
description = "คำกริยา{{{langcat}}} that may take adjectives as their complement.",
parents = {"คำกริยา"},
}
for _, pos in ipairs { "คำนาม", "คำวิสามานยนาม" } do
labels[pos .. "นับได้"] = {
description = "{{{langname}}} " .. pos .. " that can be quantified directly by numerals.",
parents = {pos},
}
end
labels["เลขนับได้"] = {
description = "{{{langname}}} numerals that can be quantified directly by other numerals.",
parents = {"เลข"},
}
labels["ปัจจัยนับได้"] = {
description = "{{{langname}}} suffixes that can be used to form nouns that can be quantified directly by numerals.",
parents = {"เลข"},
}
--[[ อันเดียวกับ classifiers
labels["counters"] = {
description = "ศัพท์{{{langcat}}} that combine with numerals to express quantity of nouns.",
parents = {"คำหลัก"},
}
--]]
labels["cumulative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event gradually yields a certain or significant quantity or effect.",
parents = {"คำกริยา"},
}
labels["degree adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that express a particular degree to which the word they modify applies.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["delimitative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event is performed or takes place briefly or to an otherwise reduced extent.",
parents = {"คำกริยา"},
}
labels["demonstrative adjectives"] = {
description = "คำคุณศัพท์{{{langcat}}} that refer to nouns, comparing them to external references.",
parents = {"คำคุณศัพท์", {name = "demonstrative pro-forms", sort = "คำคุณศัพท์"}},
}
labels["demonstrative adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that refer to other adverbs, comparing them to external references.",
parents = {"คำกริยาวิเศษณ์", {name = "demonstrative pro-forms", sort = "คำกริยาวิเศษณ์"}},
}
labels["denominal verbs"] = { -- in [[Appendix:Glossary]]; "denominative" more frequent?
description = "{{{langname}}} verbs that derive from nouns.",
parents = { "คำกริยา" },
}
labels["demonstrative determiners"] = {
description = "ตัวกำหนด{{{langcat}}} that refer to nouns, comparing them to external references.",
parents = {"ตัวกำหนด", {name = "demonstrative pro-forms", sort = "ตัวกำหนด"}},
}
labels["คำสรรพนามระบุเฉพาะ"] = {
description = "คำสรรพนาม{{{langcat}}} that refer to nouns, comparing them to external references.",
parents = {"คำสรรพนาม", {name = "demonstrative pro-forms", sort = "คำสรรพนาม"}},
}
labels["demonstrative pronouns"] = labels["คำสรรพนามระบุเฉพาะ"]
labels["deponent verbs"] = {
description = "คำกริยา{{{langcat}}} that have active meanings but are not conjugated in the active voice.",
parents = {"คำกริยา"},
}
labels["derivational prefixes"] = {
description = "{{{langname}}} prefixes that are used to create new words.",
parents = {"อุปสรรค"},
}
labels["derivational suffixes"] = {
description = "{{{langname}}} suffixes that are used to create new words.",
parents = {"ปัจจัย"},
}
labels["derivative verbs"] = {
description = "คำกริยา{{{langcat}}} that are derived from nouns and adjectives.",
parents = {"คำกริยา"},
}
labels["desiderative verbs"] = {
description = "{{{langname}}} verbs with the following morphology: verbal root xxx + [[desiderative]] suffix, and the following semantics: to wish to do the action xxx.",
parents = {"คำกริยา"},
}
labels["determinatives"] = {
description = "ศัพท์{{{langcat}}} ที่กำหนด the general class to which the following logogram belongs.",
parents = {"คำหลัก"},
}
labels["ตัวกำหนด"] = {
description = "ศัพท์{{{langcat}}} that reference nouns, expressing their contexts directly.",
parents = {"คำหลัก"},
}
labels["determiners"] = labels["ตัวกำหนด"]
labels["คำนามบอกความเล็กเท่านั้น"] = {
description = "{{{langname}}} nouns or noun senses that are mostly or exclusively used in the diminutive form.",
parents = {"คำนาม"},
}
labels["diminutiva tantum"] = labels["คำนามบอกความเล็กเท่านั้น"]
for _, pos in ipairs(diminutive_augmentative_poses) do
labels[pos .. "บอกความเล็ก"] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey endearment, small size or small intensity.",
parents = {pos},
}
end
labels["discourse particles"] = {
description = "{{{langname}}} particles that manage the flow and structure of discourse.",
parents = {"คำอนุภาค"},
}
labels["distributive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event involves multiple participants or a large quantity of an uncountable mass, usually as the grammatical subject in the case of intransitive verbs and as the grammatical object in the case of transitive verbs.",
parents = {"imperfective verbs", "คำกริยา"},
}
labels["คำทวิกรรมกริยา"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง actions, occurrences or states of two grammatical objects simultaneously, one direct and one indirect.",
parents = {"คำกริยา", "คำสกรรมกริยา"},
}
labels["ditransitive verbs"] = labels["คำทวิกรรมกริยา"]
labels["คำนามทวิพจน์เท่านั้น"] = {
description = "คำนาม{{{langcat}}}ที่ใช้ในรูปทวิพจน์โดยเฉพาะหรือเป็นส่วนใหญ่",
parents = {"คำนาม"},
}
labels["dualia tantum"] = labels["คำนามทวิพจน์เท่านั้น"]
labels["duration adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that express duration in time.",
parents = {"time adverbs"},
}
labels["ergative verbs"] = {
description = "คำกริยา{{{langcat}}} intransitive verbs that become causatives when used transitively.",
parents = {"คำกริยา", "คำอกรรมกริยา", "คำสกรรมกริยา"},
}
labels["excessive verbs"] = {
description = "{{{langname}}} verbs that indicate that an action is performed to an excessive extent.",
parents = {"คำกริยา"},
}
labels["enclitics"] = {
description = "{{{langname}}} clitics that attach to the preceding word.",
parents = {"clitics"},
}
labels["nouns with other-gender equivalents"] = {
description = "{{{langname}}} nouns that refer to gendered concepts (e.g. [[actor]] vs. [[actress]], [[king]] vs. [[queen]]) and have corresponding other-gender equivalent terms.",
parents = {"คำนาม"},
}
labels["female equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to female beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["neuter equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to neuter beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["female equivalent suffixes"] = {
description = "{{{langname}}} suffixes that refer to female beings with the same characteristics as the base suffix.",
parents = {"ปัจจัยสร้างคำนาม"},
}
labels["focus adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดง [[w:Focus (linguistics)|focus]] within the sentence.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["frequency adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that express repetition with a certain frequency or interval.",
parents = {"time adverbs"},
}
labels["frequentative verbs"] = {
description = "คำกริยา{{{langcat}}} that express repeated action.",
parents = {"คำกริยา"},
}
labels["general pronouns"] = {
description = "{{{langname}}} pronouns that refer to all persons, things, abstract ideas and their characteristics.",
parents = {"คำสรรพนาม"},
}
labels["generational moieties"] = {
description = "{{{langname}}} moieties that alternate every generation.",
parents = {"moieties"},
}
labels["ideophones"] = {
description = "{{{langname}}} terms that evoke an idea, especially a sensation or impression, with a sound.",
parents = {"คำหลัก"},
}
labels["คำกริยาไม่สมบูรณ์"] = {
description = "คำกริยา{{{langcat}}} that express actions considered as ongoing or continuous, as opposed to completed events.",
parents = {"คำกริยา"},
}
labels["imperfective verbs"] = labels["คำกริยาไม่สมบูรณ์"]
labels["คำอบุรุษกริยา"] = {
description = "คำกริยา{{{langcat}}} that do not indicate actions, occurrences or states of any specific grammatical subject.",
parents = {"คำกริยา"},
}
labels["impersonal verbs"] = labels["คำอบุรุษกริยา"]
labels["inchoative verbs"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง that an action is soon to begin.",
parents = {"คำกริยา"},
}
labels["คำคุณศัพท์ไม่ชี้เฉพาะ"] = {
description = "คำคุณศัพท์{{{langcat}}} that refer to unspecified adjective meanings.",
parents = {"คำคุณศัพท์", {name = "indefinite pro-forms", sort = "คำคุณศัพท์"}},
}
labels["indefinite adjectives"] = labels["คำคุณศัพท์ไม่ชี้เฉพาะ"]
labels["คำกริยาวิเศษณ์ไม่ชี้เฉพาะ"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that refer to unspecified adverbial meanings.",
parents = {"คำกริยาวิเศษณ์", {name = "indefinite pro-forms", sort = "คำกริยาวิเศษณ์"}},
}
labels["indefinite adverbs"] = labels["คำกริยาวิเศษณ์ไม่ชี้เฉพาะ"]
labels["ตัวกำหนดไม่ชี้เฉพาะ"] = {
description = "ตัวกำหนด{{{langcat}}} that designate an unidentified noun.",
parents = {"ตัวกำหนด", {name = "indefinite pro-forms", sort = "ตัวกำหนด"}},
}
labels["indefinite determiners"] = labels["ตัวกำหนดไม่ชี้เฉพาะ"]
labels["คำสรรพนามไม่ชี้เฉพาะ"] = {
description = "คำสรรพนาม{{{langcat}}} that refer to unspecified nouns.",
parents = {"คำสรรพนาม", {name = "indefinite pro-forms", sort = "คำสรรพนาม"}},
}
labels["indefinite pronouns"] = labels["คำสรรพนามไม่ชี้เฉพาะ"]
labels["อาคม"] = {
description = "Affixes inserted inside คำ{{{langcat}}}.",
parents = {"หน่วยคำ"},
}
labels["infixes"] = labels["อาคม"]
labels["inflectional prefixes"] = {
description = "อุปสรรค{{{langcat}}} that are used as inflectional beginnings in noun, adjective or verb paradigms.",
parents = {"อุปสรรค"},
}
labels["inflectional suffixes"] = {
description = "ปัจจัย{{{langcat}}} that are used as inflectional endings in noun, adjective or verb paradigms.",
parents = {"ปัจจัย"},
}
labels["intensive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed vigorously, enthusiastically, forcefully or to an otherwise enlarged extent.",
parents = {"คำกริยา"},
}
labels["หน่วยคำเติมเชื่อม"] = {
description = "หน่วยคำเติม{{{langcat}}}ที่ใช้เชื่อมคำหรือหน่วยคำสองคำเข้าด้วยกัน",
parents = {"หน่วยคำ"},
}
labels["interfixes"] = labels["หน่วยคำเติมเชื่อม"]
labels["คำอุทาน"] = {
description = "ศัพท์{{{langcat}}} ที่แสดงอารมณ์ เสียง หรืออื่น ๆ เป็นการอุทาน",
parents = {"คำหลัก"},
}
labels["interjections"] = labels["คำอุทาน"]
labels["คำคุณศัพท์คำถาม"] = {
description = "คำคุณศัพท์{{{langcat}}} that indicate questions.",
parents = {"คำคุณศัพท์", {name = "interrogative pro-forms", sort = "คำคุณศัพท์"}},
}
labels["interrogative adjectives"] = labels["คำคุณศัพท์คำถาม"]
labels["คำกริยาวิเศษณ์คำถาม"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดงคำถาม",
parents = {"คำกริยาวิเศษณ์", {name = "interrogative pro-forms", sort = "คำกริยาวิเศษณ์"}},
}
labels["interrogative adverbs"] = labels["คำกริยาวิเศษณ์คำถาม"]
labels["ตัวกำหนดคำถาม"] = {
description = "ตัวกำหนด{{{langcat}}} ที่แสดงคำถาม",
parents = {"ตัวกำหนด", {name = "interrogative pro-forms", sort = "ตัวกำหนด"}},
}
labels["interrogative determiners"] = labels["ตัวกำหนดคำถาม"]
labels["คำอนุภาคคำถาม"] = {
description = "{{{langname}}} particles ที่แสดงคำถาม",
parents = {"คำอนุภาค", {name = "interrogative pro-forms", sort = "คำอนุภาค"}},
}
labels["interrogative particles"] = labels["คำอนุภาคคำถาม"]
labels["คำสรรพนามคำถาม"] = {
description = "คำสรรพนาม{{{langcat}}} ที่แสดงคำถาม",
parents = {"คำสรรพนาม", {name = "interrogative pro-forms", sort = "คำสรรพนาม"}},
}
labels["interrogative pronouns"] = labels["คำสรรพนามคำถาม"]
labels["คำอกรรมกริยา"] = {
description = "คำกริยา{{{langcat}}} that don't require any grammatical objects.",
parents = {"คำกริยา"},
}
labels["intransitive verbs"] = labels["คำอกรรมกริยา"]
labels["iterative verbs"] = {
description = "คำกริยา{{{langcat}}} that express the repetition of an event.",
parents = {"คำกริยา"},
}
labels["location adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดง location.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["male equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to male beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["manner adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดง the manner, way or style in which an action is performed.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["modal adverbs"] = {
description = "{{{langname}}} particles that express [[w:Linguistic modality|linguistic modality]], indicating the mood or attitude of the speaker with respect to what is being said.",
parents = {"sentence adverbs"},
}
labels["modal particles"] = {
description = "{{{langname}}} particles that reflect the mood or attitude of the speaker, without changing the basic meaning of the sentence.",
parents = {"คำอนุภาค"},
}
labels["modal verbs"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง [[grammatical mood]].",
parents = {"คำกริยาช่วย"},
}
labels["moieties"] = {
description = "{{{langname}}} pairs of abstract categories separating people and the environment.",
parents = {"คำหลัก"},
}
labels["momentane verbs"] = {
description = "{{{langname}}} verbs that express a sudden and brief action.",
parents = {"คำกริยาสมบูรณ์", "คำกริยา"},
}
-- คนละอันกับ หน่วยคำเติม (affix)
labels["หน่วยคำ"] = {
description = "ส่วนประกอบของคำ{{{langcat}}} ที่ใช้สร้างคำเต็ม",
parents = {"คำหลัก"},
}
labels["morphemes"] = labels["หน่วยคำ"]
labels["movement adverbs"] = {
description = "{{{langname}}} adverbs that express movement in space, such as (in English) [[hither]], [[that way]], [[down]] and [[eastwards]].",
additional = "Compare [[:Category:{{{langname}}} position adverbs]].",
parents = {"location adverbs"},
umbrella = {
additional = "Compare [[:Category:Position adverbs by language]].",
},
}
labels["multiword terms"] = {
description = "{{{langname}}} lemmas that are an [[WT:CFI#Idiomaticity|idiomatic]] combination of multiple words.",
parents = {"คำหลัก"},
}
labels["คำกริยาปฏิเสธ"] = {
description = "{{{langname}}} verbs that indicate the lack of an action.",
parents = {"คำกริยา"},
}
labels["negative verbs"] = labels["คำกริยาปฏิเสธ"]
labels["คำอนุภาคปฏิเสธ"] = {
description = "{{{langname}}} particles ที่แสดง negation.",
parents = {"คำอนุภาค"},
}
labels["negative particles"] = labels["คำอนุภาคปฏิเสธ"]
labels["คำสรรพนามปฏิเสธ"] = {
description = "คำสรรพนาม{{{langcat}}} that refer to negative or non-existent references.",
parents = {"คำสรรพนาม"},
}
labels["negative pronouns"] = labels["คำสรรพนามปฏิเสธ"]
labels["nominalized adjectives"] = {
description = "คำคุณศัพท์{{{langcat}}} that are used as nouns.",
parents = {"คำนาม", "คำคุณศัพท์"},
}
labels["non-constituents"] = {
description = "ศัพท์{{{langcat}}} that are not grammatical [[constituent]]s, and therefore need to be combined with additional terms to form a complete phrase.",
parents = {"วลี"},
}
-- คนละอันกับ prenouns
labels["นามอุปสรรค"] = {
description = "อุปสรรค{{{langcat}}} attached to a noun that display its noun class.",
parents = {"อุปสรรค"},
}
labels["noun prefixes"] = labels["นามอุปสรรค"]
labels["คำนาม"] = {
description = "ศัพท์{{{langcat}}} ที่แสดงบุคคล สิ่งมีชีวิต สิ่งของ สถานที่ ปรากฏการณ์ ปริมาณ หรือความคิด",
parents = {"คำหลัก"},
}
labels["nouns"] = labels["คำนาม"]
labels["คำนามแบ่งตามคำลักษณนาม"] = {
description = "{{{langname}}} nouns organized by the classifier they are used with.",
parents = {{name = "คำนาม", sort = "คำลักษณนาม"}},
}
labels["nouns by classifier"] = labels["คำนามแบ่งตามคำลักษณนาม"]
-- number = จำนวน; numeral = เลข; numeral symbol = ตัวเลข
labels["เลข"] = {
description = "ศัพท์{{{langcat}}} ที่แสดงปริมาณของคำนาม",
parents = {"คำหลัก"},
}
labels["numerals"] = labels["เลข"]
labels["object concords"] = {
description = "{{{langname}}} concords used to show the grammatical object.",
parents = {"concords"},
}
labels["คำสรรพนามกรรม"] = {
description = "คำสรรพนาม{{{langcat}}} that refer to grammatical objects.",
parents = {"คำสรรพนาม"},
}
labels["object pronouns"] = labels["คำสรรพนามกรรม"]
labels["คำอนุภาค"] = {
description = "ศัพท์{{{langcat}}} ที่ไม่จัดเป็นชนิดของคำทางไวยากรณ์ชนิดใด ซึ่งมักจะขาดหน้าที่ทางไวยากรณ์ของมันเอง และมีไว้สร้างวจีวิภาคอื่นหรือแสดงความสัมพันธ์ระหว่างอนุประโยค",
parents = {"คำหลัก"},
}
labels["particles"] = labels["คำอนุภาค"]
labels["คำกริยาสมบูรณ์"] = {
description = "คำกริยา{{{langcat}}} that express actions considered as completed events, as opposed to ongoing or continuous.",
parents = {"คำกริยา"},
}
labels["perfective verbs"] = labels["คำกริยาสมบูรณ์"]
labels["คำบุรุษสรรพนาม"] = {
description = "คำสรรพนาม{{{langcat}}} that are used as substitutes for known nouns.",
parents = {"คำสรรพนาม"},
}
labels["personal pronouns"] = labels["คำบุรุษสรรพนาม"]
labels["คำกริยาเชิงวลี"] = {
description = "คำกริยา{{{langcat}}} accompanied by particles, such as prepositions and adverbs.",
parents = {"คำกริยา", "วลี"},
}
labels["phrasal verbs"] = labels["คำกริยาเชิงวลี"]
-- คนละอันกับ prepositional phrases
labels["คำบุพบทเชิงวลี"] = {
description = "คำบุพบท{{{langcat}}} formed with combinations of other terms.",
parents = {"คำบุพบท", "วลี"},
}
labels["phrasal prepositions"] = labels["คำบุพบทเชิงวลี"]
labels["คำนามพหูพจน์เท่านั้น"] = {
description = "คำนาม{{{langcat}}}ที่ใช้ในรูปพหูพจน์โดยเฉพาะหรือเป็นส่วนใหญ่",
parents = {"คำนาม"},
}
labels["pluralia tantum"] = labels["คำนามพหูพจน์เท่านั้น"]
labels["point-in-time adverbs"] = {
description = "{{{langname}}} adverbs that reference a specific point in time, e.g. {{m|en|yesterday}}, {{m+|es|anoche||last night}} or {{m+|hu|egykor||at one o'clock}}.",
parents = {"time adverbs"},
}
labels["position adverbs"] = {
description = "{{{langname}}} adverbs that express position in space, such as (in English) [[here]], [[next door]], [[cater-corner]] and [[on deck]].",
additional = "Compare [[:Category:{{{langname}}} movement adverbs]].",
parents = {"location adverbs"},
umbrella = {
additional = "Compare [[:Category:Movement adverbs by language]].",
},
}
labels["possessable nouns"] = {
description = "{{{langname}}} nouns can have their possession indicated directly by possessive pronouns.",
parents = {"คำนาม"},
umbrella = {
description = "Categories with nouns that can have their possession indicated directly by possessive pronouns and, in some languages, be transformed into adjectives.",
parents = {"หมวดหมู่ย่อยของคำหลักแบ่งตามภาษา"},
breadcrumb = "Possessable nouns by language",
},
}
labels["possessional adjectives"] = {
description = "{{{langname}}} adjectives that indicate that a noun is in possession of something.",
parents = {"คำคุณศัพท์"},
}
labels["คำคุณศัพท์เจ้าของ"] = {
description = "คำคุณศัพท์{{{langcat}}} ที่แสดง ownership.",
parents = {"คำคุณศัพท์"},
}
labels["possessive adjectives"] = labels["คำคุณศัพท์เจ้าของ"]
labels["possessive concords"] = {
description = "{{{langname}}} concords used to show possession.",
parents = {"concords"},
}
labels["ตัวกำหนดเจ้าของ"] = {
description = "ตัวกำหนด{{{langcat}}} ที่แสดงความเป็นเจ้าของ",
parents = {"ตัวกำหนด"},
}
labels["possessive determiners"] = labels["ตัวกำหนดเจ้าของ"]
labels["คำสรรพนามเจ้าของ"] = {
description = "คำสรรพนาม{{{langcat}}} ที่แสดงความเป็นเจ้าของ",
parents = {"คำสรรพนาม"},
}
labels["possessive pronouns"] = labels["คำสรรพนามเจ้าของ"]
labels["วลีปัจฉบท"] = {
description = "{{{langname}}} phrases headed by a postposition.",
parents = {"วลี", "คำปัจฉบท"},
}
labels["postpositional phrases"] = labels["วลีปัจฉบท"]
labels["คำปัจฉบท"] = {
description = "แอดโพซิชัน (adposition) {{{langname}}} ที่วางไว้หลังกรรมของตัวแอดโพซิชันเอง",
parents = {"คำหลัก"},
}
labels["postpositions"] = labels["คำปัจฉบท"]
labels["predicatives"] = {
description = "{{{langname}}} elements of the predicate that supplement the subject or object of a sentence via the verb.",
parents = {"คำหลัก"},
}
labels["อุปสรรค"] = {
description = "Affixes attached to the beginning of คำ{{{langcat}}}.",
parents = {"หน่วยคำ"},
}
labels["prefixes"] = labels["อุปสรรค"]
-- คนละอันกับ phrasal prepositions
labels["วลีบุพบท"] = {
description = "วลี{{{langcat}}} headed by a preposition.",
parents = {"วลี", "คำบุพบท"},
}
labels["prepositional phrases"] = labels["วลีบุพบท"]
labels["คำบุพบท"] = {
description = "แอดโพซิชัน (adposition) {{{langname}}} ที่วางไว้หน้ากรรมของตัวแอดโพซิชันเอง",
parents = {"คำหลัก"},
}
labels["prepositions"] = labels["คำบุพบท"]
labels["matrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's mother.",
parents = {"moieties"},
}
labels["patrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's father.",
parents = {"moieties"},
}
labels["pejorative suffixes"] = {
description = "{{{langname}}} suffixes that [[belittle]] (lessen in value).",
parents = {"ปัจจัย"},
}
-- คนละอันกับ noun prefixes
labels["คำนามเติมหน้า"] = {
description = "อุปสรรค{{{langname}}} of various kinds that are attached to nouns.",
parents = {"อุปสรรค"},
}
labels["prenouns"] = labels["คำนามเติมหน้า"]
labels["คำกริยาเติมหน้า"] = {
description = "อุปสรรค{{{langcat}}} of various kinds that are attached to verbs.",
parents = {"อุปสรรค"},
}
labels["preverbs"] = labels["คำกริยาเติมหน้า"]
labels["privative verbs"] = {
description = "{{{langname}}} verbs that indicate that the grammatical object is deprived of something or that something is removed from the object.",
parents = {"คำกริยา"},
}
labels["pronominal adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that are formed by combining a pronoun with a preposition.",
parents = {"คำกริยาวิเศษณ์", "คำบุพบท", "คำสรรพนาม"},
}
labels["pronominal concords"] = {
description = "{{{langname}}} concords that are prefixed to pronominal stems.",
parents = {"concords"},
}
labels["คำสรรพนาม"] = {
description = "ศัพท์{{{langcat}}} ที่อ้างถึงคำนาม และใช้แทนคำนาม",
parents = {"คำหลัก"},
}
labels["pronouns"] = labels["คำสรรพนาม"]
labels["คำวิสามานยนาม"] = {
description = "คำนาม{{{langcat}}} ที่แสดงตัวตนที่เป็นเอกเทศ อย่างเช่นชื่อของบุคคล สถานที่ หรือองค์การ",
parents = {"คำหลัก"},
}
labels["proper nouns"] = labels["คำวิสามานยนาม"]
labels["raising verbs"] = {
description = "{{{langname}}} verbs that, in a matrix or main clause, take an argument from an embedded or subordinate clause; in other words, a raising verb appears with a syntactic argument that is not its semantic argument, but is rather the semantic argument of an embedded predicate.",
parents = {"คำกริยา"},
}
labels["reciprocal pronouns"] = {
description = "คำสรรพนาม{{{langcat}}} that refer back to a plural subject and express an action done in two or more directions.",
parents = {"คำสรรพนาม", "คำบุรุษสรรพนาม"},
}
labels["reciprocal verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed from multiple subjects to each other.",
parents = {"คำกริยา"},
}
labels["คำสรรพนามสะท้อน"] = {
description = "คำสรรพนาม{{{langcat}}} that refer back to the subject.",
parents = {"คำสรรพนาม", "คำบุรุษสรรพนาม"},
}
labels["reflexive pronouns"] = labels["คำสรรพนามสะท้อน"]
labels["คำกริยาสะท้อน"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง actions, occurrences or states directed from the grammatical subjects to themselves.",
parents = {"คำกริยา"},
}
labels["reflexive verbs"] = labels["คำกริยาสะท้อน"]
labels["คำคุณศัพท์สัมพันธ์"] = {
description = "{{{langname}}} adjectives that stand in place of a noun when modifying another noun.",
parents = {"คำคุณศัพท์"},
}
labels["relational adjectives"] = labels["คำคุณศัพท์สัมพันธ์"]
labels["คำนามสัมพันธ์"] = {
description = "{{{langname}}} nouns used to indicate a relation between other two nouns by means of possession.",
parents = {"คำนาม"},
}
labels["relational nouns"] = labels["คำนามสัมพันธ์"]
labels["relative adjectives"] = {
description = "คำคุณศัพท์{{{langcat}}} used to indicate [[relative clause]]s.",
parents = {"คำคุณศัพท์", {name = "relative pro-forms", sort = "คำคุณศัพท์"}},
}
labels["relative adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} used to indicate [[relative clause]]s.",
parents = {"คำกริยาวิเศษณ์", {name = "relative pro-forms", sort = "คำกริยาวิเศษณ์"}},
}
labels["relative determiners"] = {
description = "ตัวกำหนด{{{langcat}}} used to indicate [[relative clause]]s.",
parents = {"ตัวกำหนด", {name = "relative pro-forms", sort = "ตัวกำหนด"}},
}
labels["relative concords"] = {
description = "{{{langname}}} concords that are prefixed to relative stems.",
parents = {"concords"},
}
labels["คำประพันธสรรพนาม"] = {
description = "คำสรรพนาม{{{langcat}}} used to indicate [[relative clause]]s.",
parents = {"คำสรรพนาม", {name = "relative pro-forms", sort = "คำสรรพนาม"}},
}
labels["relative pronouns"] = labels["คำประพันธสรรพนาม"]
labels["relatives"] = {
description = "ศัพท์{{{langcat}}} that give attributes to nouns, acting grammatically as relative clauses.",
parents = {"คำหลัก"},
}
labels["repetitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions or events which are performed or occur again, anew or differently.",
parents = {"คำกริยา"},
}
labels["resultative verbs"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง a result of some action",
parents = {"คำกริยา"},
}
labels["reversative verbs"] = {
description = "{{{langname}}} verbs that indicate that the reversal or undoing of an action, event or state.",
parents = {"คำกริยา"},
}
labels["saturative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed to the point of saturation or satisfaction.",
parents = {"คำกริยา"},
}
labels["semelfactive verbs"] = {
description = "คำกริยา{{{langcat}}} that are punctual (instantaneous, momentive), perfective (treated as a unitary whole with no explicit internal temporal structure), and telic (having a boundary out of which the activity cannot be said to have taken place or continue).",
parents = {"คำกริยา"},
}
labels["sentence adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} that modify an entire clause or sentence.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["sequence adverbs"] = {
description = "{{{langname}}} conjunctive adverbs that express sequence in space or time.",
parents = {"conjunctive adverbs"},
}
labels["simulfixes"] = {
description = "Affixes replacing positions in {{{langname}}} words.",
parents = {"หน่วยคำ"},
}
labels["singulative nouns"] = {
description = "{{{langname}}} nouns that indicate a single item of a group of related things or beings.",
parents = {"คำนาม"},
}
labels["คำนามเอกพจน์เท่านั้น"] = {
description = "คำนาม{{{langcat}}}ที่ใช้ในรูปเอกพจน์โดยเฉพาะหรือเป็นส่วนใหญ่",
parents = {"คำนาม"},
}
labels["singularia tantum"] = labels["คำนามเอกพจน์เท่านั้น"]
labels["solitary pronouns"] = {
description = "{{{langname}}} pronouns that refer to specific people in particular and sets them apart from anyone else.",
parents = {"คำสรรพนาม", "personal pronouns"},
}
labels["คำสภาวกริยา"] = {
description = "คำกริยา{{{langcat}}} that define a state through means of a verb",
parents = {"คำกริยา"},
}
labels["stative verbs"] = labels["คำสภาวกริยา"]
labels["stems"] = {
description = "Morphemes from which {{{langname}}} words are formed.",
parents = {"หน่วยคำ"},
}
labels["subordinating conjunctions"] = {
description = "คำสันธาน{{{langcat}}} ที่แสดง relations of syntactic dependence between connected items.",
parents = {"คำสันธาน"},
}
labels["subject concords"] = {
description = "{{{langname}}} concords used to show the grammatical subject.",
parents = {"concords"},
}
labels["คำสรรพนามประธาน"] = {
description = "คำสรรพนาม{{{langcat}}} that refer to grammatical subjects.",
parents = {"คำสรรพนาม"},
}
labels["subject pronouns"] = labels["คำสรรพนามประธาน"]
labels["ปัจจัย"] = {
description = "Affixes attached to the end of คำ{{{langcat}}}.",
parents = {"หน่วยคำ"},
}
labels["suffixes"] = labels["ปัจจัย"]
labels["splitting verbs"] = {
description = "{{{langname}}} bisyllabic verbs that obligatorily split around a direct object or pronoun.",
parents = {"คำกริยา"},
}
labels["terminative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event ceases.",
parents = {"คำกริยา"},
}
labels["time adverbs"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}} ที่แสดง time.",
parents = {"คำกริยาวิเศษณ์"},
}
labels["หน่วยคำเติมแทรก"] = {
description = "Discontinuous affixes inserted within a word root.",
parents = {"หน่วยคำ"},
}
labels["transfixes"] = labels["หน่วยคำเติมแทรก"]
labels["transformative verbs"] = {
description = "{{{langname}}} verbs that indicate a change of state or nature, in the subject for intransitive verbs and in the object for transitive verbs.",
parents = {"คำกริยา"},
}
labels["คำสกรรมกริยา"] = {
description = "คำกริยา{{{langcat}}} ที่แสดง actions, occurrences or states directed to one or more grammatical objects.",
parents = {"คำกริยา"},
}
labels["transitive verbs"] = labels["คำสกรรมกริยา"]
labels["คำคุณศัพท์เปรียบเทียบไม่ได้"] = {
description = "คำคุณศัพท์{{{langcat}}}ที่ไม่ได้ผันเพื่อแสดงระดับขั้นต่าง ๆ ของการเปรียบเทียบ",
parents = {"คำคุณศัพท์"},
}
labels["uncomparable adjectives"] = labels["คำคุณศัพท์เปรียบเทียบไม่ได้"]
labels["คำกริยาวิเศษณ์เปรียบเทียบไม่ได้"] = {
description = "คำกริยาวิเศษณ์{{{langcat}}}ที่ไม่ได้ผันเพื่อแสดงระดับขั้นต่าง ๆ ของการเปรียบเทียบ",
parents = {"คำกริยาวิเศษณ์"},
}
labels["uncomparable adverbs"] = labels["คำกริยาวิเศษณ์เปรียบเทียบไม่ได้"]
labels["คำนามนับไม่ได้"] = {
description = "คำนาม{{{langcat}}} ที่แสดง qualities, ideas, unbounded mass or other abstract concepts that cannot be quantified directly by numerals.",
parents = {"คำนาม"},
}
labels["uncountable nouns"] = labels["คำนามนับไม่ได้"]
labels["เลขนับไม่ได้"] = {
description = "{{{langname}}} numerals that cannot be quantified directly by other numerals.",
parents = {"เลข"},
}
labels["uncountable numerals"] = labels["เลขนับไม่ได้"]
labels["คำวิสามานยนามนับไม่ได้"] = {
description = "{{{langname}}} proper nouns that cannot be quantified directly by numerals.",
parents = {"คำวิสามานยนาม"},
}
labels["uncountable proper nouns"] = labels["คำวิสามานยนามนับไม่ได้"]
labels["ปัจจัยนับไม่ได้"] = {
description = "{{{langname}}} suffixes that can be used to form nouns that cannot be quantified directly by numerals.",
parents = {"เลข"},
}
labels["uncountable suffixes"] = labels["ปัจจัยนับไม่ได้"]
labels["unpossessable nouns"] = {
description = "{{{langname}}} nouns that cannot have their possession indicated directly by possessive pronouns.",
parents = {"คำนาม"},
umbrella = {
description = "Categories with nouns that cannot have their possession indicated directly by possessive pronouns or, in some languages, be transformed into adjectives.",
parents = {"หมวดหมู่ย่อยของคำหลักแบ่งตามภาษา"},
breadcrumb = "Unpossessable nouns by language",
},
}
labels["คำกริยานาม"] = {
description = "คำนาม{{{langcat}}} morphologically related to a verb and similar to it in meaning.",
parents = {"คำนาม"},
}
labels["verbal nouns"] = labels["คำกริยานาม"]
labels["verbal adjectives"] = {
description = "{{{langname}}} adjectives describing the condition or state resulting from the action of the verb from which it is derived. ",
parents = {"คำคุณศัพท์"},
}
-----------------------------------------------------------------------------
labels["คำกริยา"] = {
description = "ศัพท์{{{langcat}}} ที่แสดงการกระทำ เหตุการณ์ หรือสถานะ",
parents = {"คำหลัก"},
}
labels["verbs"] = labels["คำกริยา"]
for _, voice in pairs{
"กรรตุวาจก",
"มัธยกรรมวาจก",
"กรรมวาจก",
} do
labels["คำกริยา" .. voice] = {
description = "{{{langname}}} verbs that are predominantly used in the {{w|" .. voice .. " voice}}.",
parents = {"คำกริยา"},
}
labels["คำกริยา" .. voice .. "เท่านั้น"] = {
description = "{{{langname}}} verbs that can only be used in the {{w|" .. voice .. " voice}}.",
parents = {"คำกริยา" .. voice, "คำกริยา"},
}
end
labels["verbs of movement"] = {
description = "{{{langname}}} verbs that indicate physical movement of the grammatical subject across a trajectory, with a starting point and an endpoint.",
parents = {"คำกริยา"},
}
-----------------------------------------------------------------------------
for pos, desc in pairs{
["คำบุพบท"] = "following",
["คำปัจฉบท"] = "preceding"
} do
for _, case in ipairs{
"อปาทานการก",
"กรรมการก",
"สัมปทานการก",
"สัมพันธการก",
"กรณการก",
"อธิกรณการก",
"กรรตุการก",
"เชิงบุพบท",
"สัมโพธนการก",
} do
labels[pos .. case] = {
breadcrumb = ucfirst(case),
description = ("{{{langname}}} %s that cause the %s noun to be in the %s case."):format(pos, desc, case),
parents = {pos},
}
end
end
-- Add "X-only categories for degrees.
for _, pos in pairs{
"คำคุณศัพท์",
"คำกริยาวิเศษณ์",
"ตัวกำหนด",
"คำสรรพนาม",
} do
for _, comp in pairs{
"ขั้นกว่า",
"ขั้นสุด",
"elative",
"ขั้นเท่า",
} do
labels[pos .. comp .. "เท่านั้น"] = {
description = "{{{langname}}} " .. pos .. " that are only used in their " .. comp .. " forms.",
parents = {pos},
}
end
end
-- Add "POS-forming suffixes".
for _, pos in pairs{
"คำคุณศัพท์",
"คำกริยาวืเศษณ์",
"คำนาม",
"เลข",
"รูปกริยาขยาย",
"คำสรรพนาม",
"คำวิสามานยนาม",
"คำกริยา",
} do
labels["ปัจจัยสร้าง" .. pos] = {
description = "{{{langname}}} suffixes that are used to derive " .. pos .. "s from other words.",
parents = {"derivational suffixes"},
}
end
local labels2 = {}
-- Add "reconstructed" subcategories; add 'umbrella_parents' key if not
-- already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "หมวดหมู่ย่อยของคำหลักแบ่งตามภาษา"
end
labels2[key .. "ที่สืบสร้าง"] = {
description = "{{{langname}}} " .. key .. " that have been linguistically [[Wiktionary:Reconstructed terms|reconstructed]].",
umbrella_parents = "หมวดหมู่ย่อยของคำหลักแบ่งตามภาษา",
parents = {key, {name = "ศัพท์ที่สืบสร้าง", sort = key}}
}
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["หมวดหมู่ย่อยของคำหลักแบ่งตามภาษา"] = {
description = "Umbrella categories covering topics related to lemmas.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
{name = "คำหลัก", is_label = true, sort = " "},
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
-- Handler for e.g. [[:Category:English phrasal verbs formed with "aback"]].
table.insert(handlers, function(data)
local particle = data.label:match("^phrasal verbs formed with \"(.-)\"$")
if particle then
local tagged_text = require("Module:script utilities").tag_text(particle, data.lang, nil, "term")
local link = require("Module:links").full_link({ term = particle, lang = data.lang }, "term")
return {
description = "{{{langname}}} {{w|phrasal verb}}s formed with the adverb or preposition " .. link .. ".",
displaytitle = '{{{langname}}} phrasal verbs formed with "' .. particle .. '"',
breadcrumb = tagged_text,
parents = {{ name = "คำกริยาเชิงวลี", sort = particle }},
umbrella = false,
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
dtob875qpjjpx1rl881xs6sl5k1h0l9
メートル
0
135427
5720823
5720182
2026-04-21T13:01:05Z
OctraBot
3198
บอต: แทนที่ข้อความโดยอัตโนมัติ (-\|มาตราวัด\}\} +|หน่วยวัด}})
5720823
wikitext
text/x-wiki
{{also/auto}}
==ภาษาญี่ปุ่น==
===รากศัพท์===
จาก{{der|ja|fr|mètre}}
===การออกเสียง===
{{ja-pron}}
*{{คำอ่านไทย|เม–โตะ–รุ}}
===คำนาม===
{{ja-noun}}
# [[เมตร]], [[หน่วยฐาน]]ของ[[ความยาว]]ใน[[ระบบหน่วยวัดระหว่างประเทศ]] ([[SI]])
====คำพ้องความ====
* [[米]]
===ดูเพิ่ม===
* [[平方メートル]]
* [[立方メートル]]
{{topics|ja|หน่วยวัด}}
lqm16o9jevum2diqku3zpe7rzylqvcs
ミリ
0
135430
5720824
5720181
2026-04-21T13:01:06Z
OctraBot
3198
บอต: แทนที่ข้อความโดยอัตโนมัติ (-\|มาตราวัด\}\} +|หน่วยวัด}})
5720824
wikitext
text/x-wiki
{{also/auto}}
==ภาษาญี่ปุ่น==
===การออกเสียง===
{{ja-pron}}
*{{คำอ่านไทย|มิ–ริ}}
===คำอุปสรรค===
{{ja-pos|prefix}}
# [[มิลลิ]]-
{{topics|ja|หน่วยวัด}}
ldlhgqlsvtluu88dwhvositf6a3stqb
センチ
0
135432
5720825
5720151
2026-04-21T13:01:06Z
OctraBot
3198
บอต: แทนที่ข้อความโดยอัตโนมัติ (-\|มาตราวัด\}\} +|หน่วยวัด}})
5720825
wikitext
text/x-wiki
{{also/auto}}
==ภาษาญี่ปุ่น==
===การออกเสียง===
{{ja-pron}}
*{{คำอ่านไทย|เซ็น–ชิ}}
===คำนาม===
{{ja-noun}}
# [[เซนติเมตร]]
===คำอุปสรรค===
{{ja-pos|prefix}}
# [[เซนติ]]-
{{topics|ja|หน่วยวัด}}
bhxv2x3qdxjj1mz67nhlhd2l51ddqx6
インチ
0
135433
5720826
5720136
2026-04-21T13:01:07Z
OctraBot
3198
บอต: แทนที่ข้อความโดยอัตโนมัติ (-\|มาตราวัด\}\} +|หน่วยวัด}})
5720826
wikitext
text/x-wiki
{{character info|㌅}}
== ภาษาญี่ปุ่น ==
=== คำนาม ===
{{ja-noun}}
# [[นิ้ว]] (หน่วยความยาว)
{{topics|ja|หน่วยวัด}}
02dqfejrliwx4y11y1uk3q9ri3h7c9w
แม่แบบ:mk-noun
10
247875
5720955
1060913
2026-04-22T11:40:36Z
OctraBot
3198
แทนที่เนื้อหาด้วย "{{#invoke:mk-headword|show|คำนาม}}<noinclude>{{documentation}}</noinclude>"
5720955
wikitext
text/x-wiki
{{#invoke:mk-headword|show|คำนาม}}<noinclude>{{documentation}}</noinclude>
5fhi3j207qpa2nnq2l6zncf8xid038s
caife
0
258982
5720864
1773073
2026-04-22T01:53:37Z
OctraBot
3198
/* ภาษาไอริช */ เก็บกวาด
5720864
wikitext
text/x-wiki
== ภาษาไอริช ==
=== รูปแบบอื่น ===
* {{alter|ga|caifí}}<ref>{{R:ga:Corpas|h}}</ref>
=== รากศัพท์ ===
{{bor+|ga|it|caffè}}, จาก{{der|ga|ota|قهوه|tr=kahve}}, จาก{{der|ga|ar|قَهْوَة|t=กาแฟ}}; {{doublet|ga|caifé}}
=== การออกเสียง ===
* {{IPA|ga|/ˈkafʲə/|/ˈkɑfʲə/|ref2={{R:ga:Finck|II|146}}}}
* {{IPA|ga|a=Mayo|/ˈkɑfʲiː/|ref1={{R:ga:Achill|page=175|section=1082}}|qq=corresponding to the form {{m|ga|caifí}}}}
=== คำนาม ===
{{ga-noun|m|~|caifí}}
# [[กาแฟ]]
# {{alternative form of|ga|caifé|t=คาเฟ่}}
==== การผันรูป ====
{{ga-decl-m4|c|aife|aifí}}
==== ลูกคำ ====
{{col|ga
|briseadh caife<g:m><t:coffee break>
|sos caife<g:m><t:coffee break>
|caifechupán<g:m><t:coffee cup>
|cupán caife<g:m><t:coffee cup>
|caife mhoca<g:m><t:mocha>
|caife oighrithe<g:m><t:iced coffee>
|dríodar caife<g:m><t:coffee-grounds>
|meilteoir caife<g:m><t:coffee-grinder>
|muileann caife<g:m><t:coffee-mill>
|pónaire chaife<g:f><t:coffee bean>
|síol caife<g:m><t:coffee bean>
|pota caife<g:m><t:coffee-pot>
|síothlán caife<g:m><t:percolator>
|siopa caife<g:m><t:coffee shop>
|tábla caife<g:m><t:coffee table>
}}
==== คำเกี่ยวข้อง ====
* {{l|ga|caiféin|g=f|t=คาเฟอีน}}
=== การกลายรูป ===
{{ga-mut}}
=== อ้างอิง ===
{{reflist|size=smaller}}
=== อ่านเพิ่ม ===
* {{R:ga:Ó Dónaill}}
* {{R:ga:EID}}
* {{R:ga:NEID}}
{{C|ga|กาแฟ}}
trkm106m2cepctprhj2c5nlp4gw672e
มอดูล:labels/data/topical
828
261904
5720886
5720602
2026-04-22T03:20:58Z
OctraBot
3198
5720886
Scribunto
text/plain
local labels = {}
-- This file is split into two sections: topical labels and labels for set-type categories.
-- Each section is sorted alphabetically.
-- Topical labels
labels["ABDL"] = {
display = "[[ABDL]]",
Wikipedia = true,
topical_categories = true,
}
labels["ศาสนาอับราฮัม"] = {
aliases = {"Abrahamism", "อับราฮัม"},
display = "[[ศาสนาอับราฮัม]]",
topical_categories = true,
}
labels["การบัญชี"] = {
aliases = {"accounting", "acc", "บัญชี"},
display = "[[การบัญชี]]",
topical_categories = true,
}
labels["สวนศาสตร์"] = {
aliases = {"acoustics"},
display = "[[สวนศาสตร์]]",
topical_categories = true,
}
labels["acting"] = {
display = "[[acting#Noun|acting]]",
topical_categories = true,
}
labels["การโฆษณา"] = {
aliases = {"advertising"},
display = "[[การโฆษณา]]",
topical_categories = true,
}
labels["อากาศยานศาสตร์"] = {
aliases = {"aeronautics"},
display = "[[อากาศยานศาสตร์]]",
topical_categories = true,
}
labels["aerospace"] = {
display = "[[aerospace]]",
topical_categories = true,
}
labels["aesthetic"] = {
aliases = {"aesthetics"},
display = "[[aesthetic]]",
topical_categories = "Aesthetics",
}
labels["เกษตรกรรม"] = {
aliases = {"agriculture", "farming", "เกษตร", "กสิกรรม", "กสิ"},
display = "[[เกษตรกรรม]]",
topical_categories = true,
}
labels["Ahmadiyya"] = {
aliases = {"Ahmadiyyat", "Ahmadi"},
display = "[[Ahmadiyya]]",
topical_categories = true,
}
labels["อากาศยาน"] = {
aliases = {"aircraft"},
display = "[[อากาศยาน]]",
topical_categories = true,
}
labels["การเล่นแร่แปรธาตุ"] = {
aliases = {"alchemy", "รสายนเวท", "รสายนวิทยา", "เล่นแร่แปรธาตุ", "การแปรธาตุ", "แปรธาตุ"},
display = "[[การเล่นแร่แปรธาตุ]]",
topical_categories = true,
}
labels["เครื่องดื่มแอลกอฮอล์"] = {
aliases = {"alcoholic beverages", "alcohol"},
display = "[[เครื่องดื่มแอลกอฮอล์]]",
topical_categories = true,
}
labels["โรคพิษสุรา"] = {
aliases = {"alcoholism"},
display = "[[โรคพิษสุรา]]",
topical_categories = true,
}
labels["พีชคณิต"] = {
aliases = {"algebra"},
display = "[[พีชคณิต]]",
topical_categories = true,
}
labels["เรขาคณิตเชิงพีชคณิต"] = {
aliases = {"algebraic geometry"},
display = "[[เรขาคณิตเชิงพีชคณิต]]",
topical_categories = true,
}
labels["ทอพอโลยีเชิงพีชคณิต"] = {
aliases = {"algebraic topology"},
display = "[[ทอพอโลยีเชิงพีชคณิต]]",
topical_categories = true,
}
labels["alt-right"] = {
aliases = {"Alt-right", "altright", "Altright"},
display = "[[alt-right]]",
topical_categories = true,
}
labels["แพทยศาสตร์ทางเลือก"] = {
aliases = {"alternative medicine"},
display = "[[แพทยศาสตร์ทางเลือก]]",
topical_categories = true,
}
labels["วิทยุสมัครเล่น"] = {
aliases = {"amateur radio", "ham radio"},
display = "[[วิทยุสมัครเล่น]]",
topical_categories = true,
}
labels["อเมริกันฟุตบอล"] = {
aliases = {"American football"},
display = "[[อเมริกันฟุตบอล]]",
topical_categories = true,
}
labels["analytic geometry"] = {
display = "[[analytic geometry]]",
topical_categories = "Geometry",
}
labels["เคมีวิเคราะห์"] = {
aliases = {"analytical chemistry"},
display = "เคมีวิเคราะห์",
topical_categories = true,
}
labels["อนาธิปไตย"] = {
aliases = {"anarchism"},
display = "[[อนาธิปไตย]]",
topical_categories = true,
}
labels["กายวิภาคศาสตร์"] = {
aliases = {"anatomy", "กายวิภาค"},
display = "[[กายวิภาคศาสตร์]]",
topical_categories = true,
}
labels["กรีซโบราณ"] = {
aliases = {"Ancient Greece"},
display = "[[กรีซโบราณ]]",
topical_categories = true,
}
labels["โรมโบราณ"] = {
aliases = {"Ancient Rome"},
display = "[[โรมโบราณ]]",
topical_categories = true,
}
labels["Anglicanism"] = {
aliases = {"Anglican"},
display = "[[Anglicanism]]",
topical_categories = true,
}
labels["แอนิเมชัน"] = {
aliases = {"animation"},
display = "[[แอนิเมชัน]]",
topical_categories = true,
}
labels["อะนิเมะ"] = {
aliases = {"anime"},
display = "[[อะนิเมะ]]",
topical_categories = "บันเทิงคดีญี่ปุ่น",
}
labels["มานุษยวิทยา"] = {
aliases = {"anthropology"},
display = "[[มานุษยวิทยา]]",
topical_categories = true,
}
labels["วิทยาแมงมุม"] = {
aliases = {"arachnology", "แมงมุม"},
display = "[[วิทยาแมงมุม]]",
topical_categories = true,
}
labels["Arabian god"] = {
display = "[[Arabian]] [[mythology]]",
topical_categories = "Arabian deities",
}
labels["archaeological culture"] = {
aliases = {"archeological culture", "archaeological cultures", "archeological cultures"},
display = "[[archaeology]]",
topical_categories = "Archaeological cultures",
}
labels["โบราณคดี"] = {
aliases = {"archaeology", "archeology"},
display = "[[โบราณคดี]]",
topical_categories = true,
}
labels["การยิงธนู"] = {
aliases = {"ยิงธนู", "ธนู", "archery"},
display = "[[การยิงธนู]]",
topical_categories = true,
}
labels["สถาปัตยกรรม"] = {
aliases = {"architecture", "สถาปัตย์"},
display = "[[สถาปัตยกรรม]]",
topical_categories = true,
}
labels["เลขคณิต"] = {
aliases = {"arithmetic"},
display = "[[เลขคณิต]]",
topical_categories = true,
}
labels["Armenian mythology"] = {
display = "[[Armenian]] [[mythology]]",
topical_categories = true,
}
labels["ศิลปะ"] = {
aliases = {"art", "arts", "ศิลป์", "ศิลปกรรม"},
display = "[[ศิลปะ]]",
topical_categories = true,
}
labels["ปัญญาประดิษฐ์"] = {
aliases = {"artificial intelligence", "AI", "เอไอ"},
display = "[[ปัญญาประดิษฐ์]]",
topical_categories = true,
}
labels["artillery"] = {
display = "[[weaponry]]",
topical_categories = true,
}
labels["Arthurian legend"] = {
aliases = {"Arthurian mythology"},
display = "[[w:Arthurian legend|Arthurian legend]]",
Wikipedia = true,
topical_categories = "Arthurian mythology",
}
labels["โหราศาสตร์"] = {
aliases = {"astrology", "โหร", "โหรา", "horoscope", "ดวงชะตา", "ดวง", "zodiac", "ราศี"},
display = "[[โหราศาสตร์]]",
topical_categories = true,
}
labels["อวกาศยานศาสตร์"] = {
aliases = {"astronautics", "rocketry"},
display = "[[อวกาศยานศาสตร์]]",
topical_categories = true,
}
labels["ดาราศาสตร์"] = {
aliases = {"astronomy", "ดารา"},
display = "[[ดาราศาสตร์]]",
topical_categories = true,
}
labels["ฟิสิกส์ดาราศาสตร์"] = {
aliases = {"astrophysics"},
display = "[[ฟิสิกส์ดาราศาสตร์]]",
topical_categories = true,
}
labels["Asturian mythology"] = {
display = "[[Asturian]] [[mythology]]",
topical_categories = true,
}
labels["กรีฑา"] = {
aliases = {"athletics"},
display = "[[กรีฑา]]",
topical_categories = true,
}
labels["Australian Aboriginal mythology"] = {
display = "[[w:Australian Aboriginal mythology|Australian Aboriginal mythology]]",
Wikipedia = true,
topical_categories = true,
}
labels["Australian rules football"] = {
display = "[[Australian rules football]]",
topical_categories = true,
}
labels["autism"] = {
display = "[[autism]]",
Wikipedia = true,
topical_categories = true,
}
labels["ยานยนต์"] = {
aliases = {"automotive", "automotives"},
display = "[[ยานยนต์]]",
topical_categories = true,
}
labels["auto parts"] = {
display = "[[ยานยนต์]]",
topical_categories = true,
}
labels["การบิน"] = {
aliases = {"aviation", "air transport"},
display = "[[การบิน]]",
topical_categories = true,
}
labels["backgammon"] = {
display = "[[backgammon]]",
topical_categories = true,
}
labels["แบคทีเรีย"] = {
aliases = {"bacteria"},
display = "[[วิทยาแบคทีเรีย]]",
topical_categories = true,
}
labels["วิทยาแบคทีเรีย"] = {
aliases = {"bacteriology"},
display = "[[วิทยาแบคทีเรีย]]",
topical_categories = true,
}
labels["แบดมินตัน"] = {
aliases = {"badminton"},
display = "[[แบดมินตัน]]",
topical_categories = true,
}
labels["baking"] = {
display = "[[baking#Noun|baking]]",
topical_categories = true,
}
labels["กีฬาใช้บอล"] = {
aliases = {"ball games", "ball sports"},
display = "[[กีฬาใช้บอล]]",
topical_categories = true,
}
labels["ballet"] = {
display = "[[ballet]]",
topical_categories = true,
}
labels["Bangladeshi politics"] = {
display = "[[w:Politics of Bangladesh|Bangladeshi politics]]",
topical_categories = true,
}
labels["การธนาคาร"] = {
aliases = {"banking"},
display = "[[การธนาคาร]]",
topical_categories = true,
}
labels["เบสบอล"] = {
aliases = {"baseball"},
display = "[[เบสบอล]]",
topical_categories = true,
}
labels["บาสเกตบอล"] = {
aliases = {"basketball"},
display = "[[บาสเกตบอล]]",
topical_categories = true,
}
labels["บีดีเอสเอ็ม"] = {
aliases = {"BDSM"},
display = "[[บีดีเอสเอ็ม]]",
topical_categories = true,
}
labels["beekeeping"] = {
display = "[[beekeeping]]",
topical_categories = true,
}
labels["เบียร์"] = {
aliases = {"beer"},
display = "[[เบียร์]]",
topical_categories = true,
}
labels["betting"] = {
display = "[[gambling#Noun|gambling]]",
topical_categories = true,
}
labels["ไบเบิล"] = {
aliases = {"biblical", "Bible", "bible", "Biblical"},
display = "[[ไบเบิล]]",
topical_categories = true,
}
labels["billiards"] = {
display = "[[billiards]]",
topical_categories = true,
}
labels["บิงโก"] = {
aliases = {"bingo"},
display = "[[บิงโก]]",
topical_categories = true,
}
labels["ชีวเคมี"] = {
aliases = {"biochemistry", "biochem"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["ชีววิทยา"] = {
aliases = {"ชีว", "biology", "bio"},
display = "[[ชีววิทยา]]",
topical_categories = true,
}
labels["เทคโนโลยีชีวภาพ"] = {
aliases = {"ไบโอเทค", "biotechnology", "biotech"},
display = "[[biotechnology]]",
topical_categories = true,
}
labels["birdwatching"] = {
display = "[[birdwatching#Noun|birdwatching]]",
topical_categories = true,
}
labels["blacksmithing"] = {
display = "[[blacksmithing]]",
topical_categories = true,
}
labels["blogging"] = {
display = "[[blogging#Noun|blogging]]",
topical_categories = "อินเทอร์เน็ต",
}
labels["เกมกระดาน"] = {
aliases = {"board games", "board game"},
display = "[[เกมกระดาน]]",
topical_categories = true,
}
labels["board sports"] = {
display = "[[boardsport|board sports]]",
topical_categories = true,
}
labels["bodybuilding"] = {
display = "[[bodybuilding#Noun|bodybuilding]]",
topical_categories = true,
}
labels["พฤกษศาสตร์"] = {
aliases = {"botany", "พฤกษ"},
display = "[[พฤกษศาสตร์]]",
topical_categories = true,
}
labels["bowling"] = {
display = "[[bowling#Noun|bowling]]",
topical_categories = true,
}
labels["bowls"] = {
aliases = {"lawn bowls", "crown green bowls"},
display = "[[bowls]]",
topical_categories = "Bowls (game)",
}
labels["มวย"] = {
aliases = {"boxing"},
display = "[[มวย]]",
topical_categories = true,
}
labels["brewing"] = {
display = "[[brewing#Noun|brewing]]",
topical_categories = true,
}
labels["bridge"] = {
display = "[[bridge#English:_game|bridge]]",
topical_categories = true,
}
labels["broadcasting"] = {
display = "[[broadcasting#Noun|broadcasting]]",
topical_categories = true,
}
labels["ไบรโอโลยี"] = {
aliases = {"bryology"},
display = "[[ไบรโอโลยี]]",
topical_categories = true,
}
labels["ศาสนาพุทธ"] = {
aliases = {"Buddhism", "พุทธศาสนา", "พระพุทธศาสนา", "พุทธ"},
display = "[[ศาสนาพุทธ]]",
topical_categories = true,
}
labels["Buddhist deity"] = {
aliases = {"Buddhist goddess", "Buddhist god"},
display = "[[ศาสนาพุทธ]]",
topical_categories = "Buddhist deities",
}
labels["bullfighting"] = {
display = "[[bullfighting]]",
topical_categories = true,
}
labels["ธุรกิจ"] = {
aliases = {"business", "professional"},
display = "[[ธุรกิจ]]",
topical_categories = true,
}
labels["Byzantine Empire"] = {
display = "[[Byzantine Empire]]",
topical_categories = true,
}
labels["แคลคูลัส"] = {
aliases = {"calculus"},
display = "[[แคลคูลัส]]",
topical_categories = true,
}
labels["calligraphy"] = {
display = "[[calligraphy]]",
topical_categories = true,
}
labels["Canadian football"] = {
display = "[[Canadian football]]",
topical_categories = true,
}
labels["canoeing"] = {
display = "[[canoeing#Noun|canoeing]]",
topical_categories = "Water sports",
}
labels["ทุนนิยม"] = {
aliases = {"capitalism"},
display = "[[ทุนนิยม]]",
topical_categories = true,
}
labels["เกมไพ่"] = {
aliases = {"card games", "card game", "เกมการ์ด", "cards", "ไพ่", "การ์ด", "playing card", "ไพ่ป๊อก"},
display = "[[ไพ่|เกมไพ่]]",
topical_categories = true,
}
labels["หทัยวิทยา"] = {
aliases = {"cardiology", "วิทยาหัวใจ", "วิทยาโรคหัวใจ", "หัวใจ"},
display = "[[หทัยวิทยา]]",
topical_categories = true,
}
labels["carpentry"] = {
display = "[[carpentry]]",
topical_categories = true,
}
labels["การทำแผนที่"] = {
aliases = {"cartography", "map", "แผนที่"},
display = "[[การทำแผนที่]]",
topical_categories = true,
}
labels["cartomancy"] = {
display = "[[cartomancy]]",
topical_categories = true,
}
labels["castells"] = {
display = "[[castells]]",
topical_categories = true,
}
labels["category theory"] = {
display = "[[category theory]]",
topical_categories = true,
}
labels["Catholicism"] = {
aliases = {"catholicism", "Catholic", "catholic"},
display = "[[Catholicism]]",
topical_categories = true,
}
labels["caving"] = {
display = "[[caving#Noun|caving]]",
topical_categories = true,
}
labels["cellular automata"] = {
display = "[[cellular automata]]",
topical_categories = true,
}
labels["Celtic mythology"] = {
display = "[[Celtic]] [[mythology]]",
topical_categories = true,
}
labels["ceramics"] = {
display = "[[ceramics]]",
topical_categories = true,
}
labels["cheerleading"] = {
display = "[[cheerleading#Noun|cheerleading]]",
topical_categories = true,
}
labels["ธาตุเคมี"] = {
aliases = {"chemical element", "ธาตุ"},
display = "[[เคมี]]",
topical_categories = {"ธาตุเคมี"},
}
labels["chemical engineering"] = {
display = "[[chemical engineering]]",
topical_categories = true,
}
labels["เคมี"] = {
aliases = {"chemistry", "chem"},
display = "[[เคมี]]",
topical_categories = {"เคมี"},
}
labels["หมากรุกสากล"] = {
aliases = {"chess", "หมากรุกฝรั่ง"},
display = "[[หมากรุกสากล]]",
topical_categories = {"หมากรุกสากล"},
}
labels["children's games"] = {
display = "[[children|children's]] [[game]]s",
topical_categories = true,
}
labels["Church of England"] = {
aliases = {"C of E", "CofE"},
Wikipedia = "Church of England",
topical_categories = true,
}
labels["ดาราศาสตร์จีน"] = {
aliases = {"Chinese astronomy"},
display = "[[ดาราศาสตร์]][[จีน]]",
topical_categories = true,
}
labels["Chinese calligraphy"] = {
display = "[[Chinese]] [[calligraphy]]",
topical_categories = "Calligraphy",
}
labels["Chinese constellation"] = {
display = "[[Chinese]] [[astronomy]]",
topical_categories = "Constellations",
}
labels["Chinese folk religion"] = {
display = "[[Chinese]] [[folk religion]]",
topical_categories = "Religion",
}
labels["ภาษาศาสตร์จีน"] = {
aliases = {"Chinese linguistics"},
display = "[[ภาษาศาสตร์]][[จีน]]",
topical_categories = "ภาษาศาสตร์",
}
labels["ปรัมปราวิทยาจีน"] = {
aliases = {"Chinese mythology"},
display = "[[ปรัมปราวิทยา]][[จีน]]",
topical_categories = true,
}
labels["ปรัชญาจีน"] = {
aliases = {"Chinese philosophy"},
display = "[[ปรัชญา]][[จีน]]",
topical_categories = true,
}
labels["สัทศาสตร์จีน"] = {
aliases = {"Chinese phonetics"},
display = "[[สัทศาสตร์]][[จีน]]",
topical_categories = true,
}
labels["Chinese religion"] = {
display = "[[Chinese]] [[religion]]",
topical_categories = "Religion",
}
labels["Chinese star"] = {
display = "[[Chinese]] [[astronomy]]",
topical_categories = "Stars",
}
labels["ศาสนาคริสต์"] = {
aliases = {"Christianity", "christianity", "คริสตศาสนา", "คริสต์ศาสนา", "คริสต์"},
display = "[[ศาสนาคริสต์]]",
topical_categories = {"ศาสนาคริสต์"},
}
labels["Church of the East"] = {
display = "[[Church of the East]]",
topical_categories = true,
}
labels["การถ่ายภาพยนตร์"] = {
aliases = {"cinematography", "filmology", "การถ่ายทำภาพยนตร์", "วิชาการภาพยนตร์"},
display = "[[การถ่ายภาพยนตร์]]",
topical_categories = true,
}
labels["cladistics"] = {
display = "[[cladistics]]",
topical_categories = "Taxonomy",
}
labels["classical mechanics"] = {
display = "[[classical mechanics]]",
topical_categories = true,
}
labels["classical studies"] = {
display = "[[classical studies]]",
topical_categories = true,
}
labels["climatology"] = {
display = "[[climatology]]",
topical_categories = true,
}
labels["climate change"] = {
display = "[[climate change]]",
topical_categories = true,
}
labels["climbing"] = {
aliases = {"rock climbing"},
display = "[[climbing#Noun|climbing]]",
topical_categories = true,
}
labels["จิตวิทยาคลินิก"] = {
aliases = {"clinical psychology"},
display = "[[จิตวิทยาคลินิก]]",
topical_categories = true,
}
labels["เครื่องนุ่งห่ม"] = {
aliases = {"clothing", "เสื้อผ้า"},
display = "[[เครื่องนุ่งห่ม]]",
topical_categories = true,
}
labels["cloud computing"] = {
display = "[[cloud computing]]",
topical_categories = "Computing",
}
labels["collectible card games"] = {
aliases = {"trading card games", "collectible cards", "trading cards"},
display = "collectible card games",
topical_categories = true,
}
labels["combinatorics"] = {
display = "[[combinatorics]]",
topical_categories = true,
}
labels["comedy"] = {
display = "[[comedy]]",
topical_categories = true,
}
labels["commercial law"] = {
display = "[[commercial#Adjective|commercial]] [[law]]",
topical_categories = true,
}
labels["comics"] = {
display = "[[comics]]",
topical_categories = true,
}
labels["communication"] = {
aliases = {"communications"},
display = "[[communication]]",
topical_categories = true,
}
labels["communism"] = {
aliases = {"Communism"},
display = "[[communism]]",
topical_categories = true,
}
labels["compilation"] = {
aliases = {"compiler"},
display = "[[software]] [[compilation]]",
topical_categories = true,
}
labels["complex analysis"] = {
display = "[[complex analysis]]",
topical_categories = true,
}
labels["ภาษาศาสตร์คอมพิวเตอร์"] = {
aliases = {"computational linguistics"},
display = "[[ภาษาศาสตร์คอมพิวเตอร์]]",
topical_categories = true,
}
labels["computer chess"] = {
display = "[[computer chess]]",
topical_categories = true,
}
labels["เกมคอมพิวเตอร์"] = {
aliases = {"computer games", "computer game", "computer gaming", "เกมคอม"},
display = "[[เกมคอมพิวเตอร์]]",
topical_categories = "วิดีโอเกม",
}
labels["computer graphics"] = {
display = "[[computer graphics]]",
topical_categories = true,
}
labels["computer hardware"] = {
display = "[[computer]] [[hardware]]",
topical_categories = true,
}
labels["ภาษาคอมพิวเตอร์"] = {
aliases = {"computer languages", "programming language", "ภาษาโปรแกรม"},
display = "[[ภาษาคอมพิวเตอร์]]",
topical_categories = {"ภาษาคอมพิวเตอร์"},
}
labels["วิทยาการคอมพิวเตอร์"] = {
aliases = {"computer science", "comp sci", "CompSci", "compsci"},
display = "[[วิทยาการคอมพิวเตอร์]]",
topical_categories = true,
}
labels["computer security"] = {
display = "[[computer security]]",
topical_categories = true,
}
labels["การคอมพิวเตอร์"] = {
aliases = {"computing", "computer", "computers", "คอมพิวเตอร์", "คอม"},
display = "[[การคอมพิวเตอร์]]",
topical_categories = {"การคอมพิวเตอร์"},
}
labels["computing theory"] = {
aliases = {"comptheory"},
display = "[[computing#Noun|computing]] [[theory]]",
topical_categories = "Theory of computing",
}
labels["conchology"] = {
display = "[[conchology]]",
topical_categories = true,
}
labels["ศาสนาขงจื๊อ"] = {
aliases = {"Confucianism", "ขงจื๊อ"},
display = "[[ศาสนาขงจื๊อ]]",
topical_categories = {"ศาสนาขงจื๊อ"},
}
labels["conlanging"] = {
aliases = {"constructed languages", "constructed language"},
display = "[[conlanging]]",
topical_categories = true,
}
labels["conservatism"] = {
display = "[[conservatism]]",
topical_categories = true,
}
labels["construction"] = {
display = "[[construction]]",
topical_categories = true,
}
labels["การทำอาหาร"] = {
aliases = {"culinary", "cuisine", "cookery", "gastronomy", "การปรุงอาหาร"},
display = "[[การทำอาหาร]]",
topical_categories = true,
}
labels["copyright"] = {
aliases = {"copyright law", "intellectual property", "intellectual property law", "IP law"},
display = "[[copyright]] [[law]]",
topical_categories = true,
}
labels["cosmetics"] = {
aliases = {"cosmetology"},
display = "[[cosmetics]]",
topical_categories = true,
}
labels["จักรวาลวิทยา"] = {
aliases = {"cosmology"},
display = "[[จักรวาลวิทยา]]",
topical_categories = true,
}
labels["creationism"] = {
aliases = {"baraminology"},
display = "[[creationism#English|creationism]]",
topical_categories = true,
}
labels["cribbage"] = {
display = "[[cribbage]]",
topical_categories = true,
}
labels["คริกเกต"] = {
aliases = {"คริกเก็ต", "cricket"},
display = "[[คริกเกต]]",
topical_categories = true,
}
labels["อาชญากรรม"] = {
aliases = {"crime"},
display = "[[อาชญากรรม]]",
topical_categories = true,
}
labels["กฎหมายอาญา"] = {
aliases = {"criminal law"},
display = "[[กฎหมายอาญา]]",
topical_categories = true,
}
labels["อาชญาวิทยา"] = {
aliases = {"criminology"},
display = "[[criminology]]",
topical_categories = true,
}
labels["crochet"] = {
display = "[[crochet]]",
topical_categories = true,
}
labels["croquet"] = {
display = "[[croquet]]",
topical_categories = true,
}
labels["crosswording"] = {
aliases = {"crosswords","cruciverbalism","cryptic crosswords", "crossword puzzles"},
display = "[[crosswording]]",
topical_categories = true,
}
labels["cryptocurrencies"] = {
aliases = {"cryptocurrency"},
display = "[[cryptocurrency|cryptocurrencies]]",
topical_categories = "Cryptocurrency",
}
labels["วิทยาการรหัสลับ"] = {
aliases = {"cryptography", "วิทยาการเข้ารหัสลับ"},
display = "[[วิทยาการรหัสลับ]]",
topical_categories = true,
}
labels["cryptozoology"] = {
display = "[[cryptozoology]]",
topical_categories = true,
}
labels["crystallography"] = {
display = "[[crystallography]]",
topical_categories = true,
}
labels["cultural anthropology"] = {
display = "[[cultural anthropology]]",
topical_categories = true,
}
labels["curling"] = {
display = "[[curling]]",
topical_categories = true,
}
labels["cybernetics"] = {
display = "[[cybernetics]]",
topical_categories = true,
}
labels["cybersecurity"] = {
display = "[[cybersecurity]]",
topical_categories = "Networking",
}
labels["cycle racing"] = {
display = "[[w:cycle sport|cycle racing]]",
topical_categories = true,
}
labels["cycling"] = {
aliases = {"bicycling"},
display = "[[cycling#Noun|cycling]]",
topical_categories = true,
}
labels["วิทยาเซลล์"] = {
aliases = {"เซลล์วิทยา", "ชีววิทยาเซลล์", "cytology", "cell biology", "cellular biology"},
display = "[[วิทยาเซลล์]]",
topical_categories = true,
}
labels["dance"] = {
aliases = {"dancing"},
display = "[[dance#Noun|dance]]",
topical_categories = true,
}
labels["darts"] = {
display = "[[darts]]",
topical_categories = true,
}
labels["data management"] = {
display = "[[data management]]",
topical_categories = true,
}
labels["data modeling"] = {
display = "[[data modeling]]",
topical_categories = true,
}
labels["databases"] = {
aliases = {"database"},
display = "[[database]]s",
topical_categories = true,
}
labels["decision theory"] = {
display = "[[decision theory]]",
topical_categories = true,
}
labels["deltiology"] = {
display = "[[deltiology]]",
topical_categories = true,
}
labels["demography"] = {
display = "[[demography]]",
topical_categories = true,
}
labels["demoscene"] = {
topical_categories = true,
}
labels["ทันตแพทยศาสตร์"] = {
aliases = {"dentistry", "ทันตแพทย์", "ทันตะ", "ทันต", "หมอฟัน"},
display = "[[ทันตแพทยศาสตร์]]",
topical_categories = true,
}
labels["ตัจวิทยา"] = {
aliases = {"dermatology", "ตจวิทยา", "ผิวหนัง", "วิทยาผิวหนัง", "วิทยาโรคผิวหนัง"},
display = "[[ตัจวิทยา]]",
topical_categories = true,
}
labels["design"] = {
display = "[[design#Noun|design]]",
topical_categories = true,
}
labels["dice games"] = {
aliases = {"dice"},
display = "[[dice game]]s",
topical_categories = true,
}
labels["dictation"] = {
display = "[[dictation]]",
topical_categories = true,
}
labels["differential geometry"] = {
display = "[[differential geometry]]",
topical_categories = true,
}
labels["diplomacy"] = {
display = "[[diplomacy]]",
topical_categories = true,
}
labels["disc golf"] = {
display = "[[disc golf]]",
topical_categories = true,
}
labels["divination"] = {
display = "[[divination]]",
topical_categories = true,
}
labels["diving"] = {
display = "[[diving#Noun|diving]]",
topical_categories = true,
}
labels["dominoes"] = {
display = "[[dominoes]]",
topical_categories = true,
}
labels["dou dizhu"] = {
display = "[[w:Dou dizhu|dou dizhu]]",
Wikipedia = true,
topical_categories = true,
}
labels["drama"] = {
display = "[[drama]]",
topical_categories = true,
}
labels["dressage"] = {
display = "[[dressage]]",
topical_categories = true,
}
labels["earth science"] = {
display = "[[earth science]]",
topical_categories = "Earth sciences",
}
labels["Eastern Catholicism"] = {
aliases = {"Eastern Catholic"},
display = "[[w:Eastern Catholicism]]",
Wikipedia = true,
topical_categories = true,
}
labels["Eastern Orthodoxy"] = {
aliases = {"Eastern Orthodox"},
display = "[[Eastern Orthodoxy]]",
topical_categories = true,
}
labels["eating disorders"] = {
aliases = {"eating disorder"},
display = "[[eating disorder]]s",
topical_categories = true,
}
labels["ecclesiastical"] = {
display = "[[ecclesiastical]]",
topical_categories = "Christianity",
}
labels["ecology"] = {
display = "[[ecology]]",
topical_categories = true,
}
labels["เศรษฐศาสตร์"] = {
aliases = {"economics", "เศรษฐ"},
display = "[[เศรษฐศาสตร์]]",
topical_categories = true,
}
labels["การศึกษา"] = {
aliases = {"education", "ศึกษา"},
display = "[[การศึกษา]]",
topical_categories = true,
}
labels["Egyptian god"] = {
aliases = {"Egyptian goddess", "Egyptian deity"},
display = "[[Egyptian]] [[mythology]]",
topical_categories = "Egyptian deities",
}
labels["Egyptian mythology"] = {
display = "[[Egyptian]] [[mythology]]",
topical_categories = true,
}
labels["Egyptology"] = {
display = "[[Egyptology]]",
topical_categories = "Ancient Egypt",
}
labels["electrencephalography"] = {
display = "[[electrencephalography]]",
topical_categories = true,
}
labels["electrical engineering"] = {
display = "[[electrical engineering]]",
topical_categories = true,
}
labels["ไฟฟ้า"] = {
aliases = {"electricity", "electric"},
display = "[[ไฟฟ้า]]",
topical_categories = true,
}
labels["electrodynamics"] = {
display = "[[electrodynamics]]",
topical_categories = true,
}
labels["แม่เหล็กไฟฟ้า"] = {
aliases = {"electromagnetism", "แม่เหล็ก"},
display = "[[แม่เหล็กไฟฟ้า]]",
topical_categories = true,
}
labels["อิเล็กทรอนิกส์"] = {
aliases = {"electronics", "electronic"},
display = "[[อิเล็กทรอนิกส์]]",
topical_categories = true,
}
labels["embryology"] = {
display = "[[embryology]]",
topical_categories = true,
}
labels["emergency services"] = {
display = "[[emergency services]]",
topical_categories = true,
}
labels["emergency medicine"] = {
display = "[[emergency medicine]]",
topical_categories = true,
}
labels["endocrinology"] = {
display = "[[endocrinology]]",
topical_categories = true,
}
labels["engineering"] = {
display = "[[engineering#Noun|engineering]]",
topical_categories = true,
}
labels["enterprise engineering"] = {
display = "[[enterprise engineering]]",
topical_categories = true,
}
labels["entomology"] = {
display = "[[entomology]]",
topical_categories = true,
}
labels["epidemiology"] = {
display = "[[epidemiology]]",
topical_categories = true,
}
labels["epistemology"] = {
display = "[[epistemology]]",
topical_categories = true,
}
labels["equestrianism"] = {
aliases = {"equestrian", "horses", "horsemanship"},
display = "[[equestrianism]]",
topical_categories = true,
}
labels["espionage"] = {
display = "[[espionage]]",
topical_categories = true,
}
labels["จริยศาสตร์"] = {
aliases = {"ethics", "จริยธรรม", "จริย"},
display = "[[จริยศาสตร์]]",
topical_categories = true,
}
labels["ethnography"] = {
display = "[[ethnography]]",
topical_categories = true,
}
labels["ethology"] = {
display = "[[ethology]]",
topical_categories = true,
}
labels["European folklore"] = {
display = "[[European]] [[folklore]]",
topical_categories = true,
}
labels["European Union"] = {
aliases = {"EU"},
display = "[[European Union]]",
topical_categories = true,
}
labels["evolutionary theory"] = {
aliases = {"evolutionary biology"},
display = "[[evolutionary theory]]",
topical_categories = true,
}
labels["การออกกำลังกาย"] = {
aliases = {"ออกกำลังกาย", "ออกกำลัง", "การออกกำลัง", "กายบริหาร", "exercise"},
display = "[[การออกกำลังกาย]]",
topical_categories = true,
}
labels["eye color"] = {
display = "[[eye]] [[color]]",
topical_categories = "Eye colors",
}
labels["falconry"] = {
display = "[[falconry]]",
topical_categories = true,
}
labels["fantasy"] = {
display = "[[fantasy]]",
topical_categories = true,
}
labels["farriery"] = {
display = "[[farriery]]",
topical_categories = true,
}
labels["fascism"] = {
display = "[[fascism]]",
topical_categories = true,
}
labels["fashion"] = {
display = "[[fashion]]",
topical_categories = true,
}
labels["feminism"] = {
display = "[[feminism]]",
topical_categories = true,
}
labels["fencing"] = {
display = "[[fencing#Noun|fencing]]",
topical_categories = true,
}
labels["feudalism"] = {
display = "[[feudalism|feudalism]]",
topical_categories = true,
}
labels["บันเทิงคดี"] = {
aliases = {"fiction", "fictional"},
display = "[[บันเทิงคดี]]",
topical_categories = true,
}
labels["field hockey"] = {
display = "[[field hockey]]",
topical_categories = true,
}
labels["figure skating"] = {
display = "[[figure skating]]",
topical_categories = true,
}
labels["file format"] = {
display = "[[file format]]",
topical_categories = "File formats",
}
labels["film"] = {
display = "[[film#Noun|film]]",
topical_categories = true,
}
labels["ประเภทภาพยนตร์"] = {
aliases = {"cinema", "film genre"},
display = "[[ภาพยนตร์]]",
topical_categories = "ประเภทภาพยนตร์",
}
labels["การเงิน"] = {
aliases = {"finance"},
display = "[[การเงิน]]",
topical_categories = true,
}
labels["Finnic mythology"] = {
aliases = {"Finnish mythology"},
display = "[[Finnic]] [[mythology]]",
topical_categories = true,
}
labels["ปืน"] = {
aliases = {"firearms", "firearm"},
display = "[[ปืน]]",
topical_categories = true,
}
labels["firefighting"] = {
display = "[[firefighting]]",
topical_categories = true,
}
labels["การตกปลา"] = {
aliases = {"fishing", "angling"},
display = "[[การตกปลา]]",
topical_categories = true,
}
labels["flamenco"] = {
display = "[[flamenco]]",
topical_categories = true,
}
labels["fluid dynamics"] = {
display = "[[fluid dynamics]]",
topical_categories = true,
}
labels["fluid mechanics"] = {
display = "[[fluid mechanics]]",
topical_categories = "Mechanics",
}
labels["folklore"] = {
display = "[[folklore]]",
topical_categories = true,
}
labels["forestry"] = {
display = "[[forestry]]",
topical_categories = true,
}
labels["Forteana"] = {
display = "[[Forteana]]",
topical_categories = true,
}
labels["Freemasonry"] = {
aliases = {"freemasonry"},
display = "[[Freemasonry]]",
topical_categories = true,
}
labels["functional analysis"] = {
display = "[[functional analysis]]",
topical_categories = true,
}
labels["furniture"] = {
display = "[[furniture]]",
topical_categories = true,
}
labels["furry fandom"] = {
display = "[[furry#Noun|furry]] [[fandom]]",
topical_categories = true,
}
labels["fuzzy logic"] = {
display = "[[fuzzy logic]]",
topical_categories = true,
}
labels["Gaelic football"] = {
display = "[[Gaelic football]]",
topical_categories = true,
}
labels["การพนัน"] = {
aliases = {"gambling", "พนัน"},
display = "[[การพนัน]]",
topical_categories = true,
}
labels["game theory"] = {
display = "[[game theory]]",
topical_categories = true,
}
labels["games"] = {
aliases = {"game"},
display = "[[game#Noun|games]]",
topical_categories = true,
}
labels["gaming"] = {
display = "[[gaming#Noun|gaming]]",
topical_categories = true,
}
labels["genealogy"] = {
display = "[[genealogy]]",
topical_categories = true,
}
labels["general semantics"] = {
display = "[[general semantics]]",
topical_categories = true,
}
labels["พันธุศาสตร์"] = {
aliases = {"genetics"},
display = "[[พันธุศาสตร์]]",
topical_categories = true,
}
labels["ภูมิศาสตร์"] = {
aliases = {"geography", "ภูมิ"},
display = "[[ภูมิศาสตร์]]",
topical_categories = true,
}
labels["ธรณีวิทยา"] = {
aliases = {"geology", "ธรณี"},
display = "[[ธรณีวิทยา]]",
topical_categories = true,
}
labels["geological period"] = {
Wikipedia = true,
topical_categories = "Geological periods",
}
labels["เรขาคณิต"] = {
aliases = {"geometry", "geometric", "geometrical", "เรขา"},
display = "[[เรขาคณิต]]",
topical_categories = true,
}
labels["geomorphology"] = {
display = "[[geomorphology]]",
topical_categories = true,
}
labels["ภูมิรัฐศาสตร์"] = {
aliases = {"geopolitics"},
display = "[[ภูมิรัฐศาสตร์]]",
topical_categories = true,
}
labels["gerontology"] = {
display = "[[gerontology]]",
topical_categories = true,
}
labels["gladiatorial combat"] = {
Wikipedia = true,
topical_categories = true,
}
labels["glassblowing"] = {
display = "[[glassblowing]]",
topical_categories = true,
}
labels["Gnosticism"] = {
aliases = {"gnosticism"},
display = "[[Gnosticism]]",
topical_categories = true,
}
labels["go"] = {
aliases = {"Go", "game of go", "game of Go"},
display = "{{l|en|go|id=game}}",
topical_categories = true,
}
labels["กอล์ฟ"] = {
aliases = {"golf"},
display = "[[กอล์ฟ]]",
topical_categories = true,
}
labels["government"] = {
display = "[[government]]",
topical_categories = true,
}
labels["ไวยากรณ์"] = {
aliases = {"grammar", "ไว"},
display = "[[ไวยากรณ์]]",
topical_categories = true,
}
labels["grammatical case"] = {
display = "[[grammar]]",
topical_categories = "Grammatical cases",
}
labels["grammatical mood"] = {
display = "[[grammar]]",
topical_categories = "Grammatical moods",
}
labels["graph theory"] = {
display = "[[graph theory]]",
topical_categories = true,
}
labels["graphic design"] = {
display = "[[graphic design]]",
topical_categories = true,
}
labels["graphical user interface"] = {
aliases = {"GUI"},
display = "[[graphical user interface]]",
topical_categories = true,
}
labels["Greek mythology"] = {
display = "[[Greek]] [[mythology]]",
topical_categories = true,
}
labels["group theory"] = {
display = "[[group theory]]",
topical_categories = true,
}
labels["gun mechanisms"] = {
aliases = {"firearm mechanism", "firearm mechanisms", "gun mechanism"},
display = "[[firearm]]s",
topical_categories = true,
}
labels["gun sports"] = {
aliases = {"shooting sports"},
display = "[[gun]] [[sport]]s",
topical_categories = true,
}
labels["gymnastics"] = {
display = "[[gymnastics]]",
topical_categories = true,
}
labels["gynaecology"] = {
aliases = {"gynecology"},
display = "[[gynaecology]]",
topical_categories = true,
}
labels["hair color"] = {
display = "[[hair]] [[color]]",
topical_categories = "Hair colors",
}
labels["hairdressing"] = {
display = "[[hairdressing]]",
topical_categories = true,
}
labels["handball"] = {
display = "[[handball]]",
topical_categories = true,
}
labels["Hawaiian mythology"] = {
display = "[[Hawaiian]] [[mythology]]",
topical_categories = true,
}
labels["เครื่องสวมหัว"] = {
aliases = {"headwear"},
display = "เครื่องนุ่งห่ม",
topical_categories = true,
}
labels["healthcare"] = {
display = "[[healthcare]]",
topical_categories = true,
}
labels["helminthology"] = {
display = "[[helminthology]]",
topical_categories = true,
}
labels["โลหิตวิทยา"] = {
aliases = {"hematology", "haematology"},
display = "[[โลหิตวิทยา]]",
topical_categories = true,
}
labels["มุทราศาสตร์"] = {
aliases = {"heraldry"},
display = "[[มุทราศาสตร์]]",
topical_categories = true,
}
labels["herbalism"] = {
display = "[[herbalism]]",
topical_categories = true,
}
labels["herpetology"] = {
display = "[[herpetology]]",
topical_categories = true,
}
labels["ศาสนาฮินดู"] = {
aliases = {"Hinduism", "ฮินดู", "Brahmanism", "พราหมณ์", "ศาสนาพราหมณ์"},
display = "[[ศาสนาฮินดู]]",
topical_categories = true,
}
labels["Hindutva"] = {
display = "[[Hindutva]]",
topical_categories = true,
}
labels["historiography"] = {
display = "[[historiography]]",
topical_categories = true,
}
labels["history"] = {
display = "[[history]]",
topical_categories = true,
}
labels["historical linguistics"] = {
display = "[[historical linguistics]]",
topical_categories = "Linguistics",
}
labels["hockey"] = {
display = "[[field hockey]] or [[ice hockey]]",
topical_categories = {"Field hockey", "Ice hockey"},
}
labels["homeopathy"] = {
display = "[[homeopathy]]",
topical_categories = true,
}
labels["horse color"] = {
display = "[[horse]] [[color]]",
topical_categories = "Horse colors",
}
labels["horse racing"] = {
display = "[[horse racing]]",
topical_categories = true,
}
labels["horticulture"] = {
aliases = {"gardening"},
display = "[[horticulture]]",
topical_categories = true,
}
labels["HTML"] = {
display = "[[Hypertext Markup Language|HTML]]",
topical_categories = true,
}
labels["human resources"] = {
display = "[[human resources]]",
topical_categories = true,
}
labels["humanities"] = {
display = "[[humanities]]",
topical_categories = true,
}
labels["hunting"] = {
display = "[[hunting#Noun|hunting]]",
topical_categories = true,
}
labels["hurling"] = {
display = "[[hurling#Noun|hurling]]",
topical_categories = true,
}
labels["hydroacoustics"] = {
Wikipedia = true,
topical_categories = true,
}
labels["อุทกวิทยา"] = {
aliases = {"hydrology"},
display = "[[อุทกวิทยา]]",
topical_categories = true,
}
labels["ice hockey"] = {
display = "[[ice hockey]]",
topical_categories = true,
}
labels["ichthyology"] = {
display = "[[ichthyology]]",
topical_categories = true,
}
labels["idol fandom"] = {
display = "[[idol]] [[fandom]]",
topical_categories = true,
}
labels["immunochemistry"] = {
display = "[[immunochemistry]]",
topical_categories = true,
}
labels["immunology"] = {
display = "[[immunology]]",
topical_categories = true,
}
labels["import/export"] = {
display = "[[import#Noun|import]]/[[export#Noun|export]]",
topical_categories = true,
}
labels["Indo-European studies"] = {
aliases = {"indo-european studies"},
display = "[[Indo-European studies]]",
topical_categories = true,
}
labels["information science"] = {
display = "[[information science]]",
topical_categories = true,
}
labels["information theory"] = {
display = "[[information theory]]",
topical_categories = true,
}
labels["เทคโนโลยีสารสนเทศ"] = {
aliases = {"information technology", "IT", "ไอที"},
display = "[[เทคโนโลยีสารสนเทศ]]",
topical_categories = "การคอมพิวเตอร์",
}
labels["inheritance law"] = {
display = "[[inheritance law]]",
topical_categories = true,
}
labels["inorganic chemistry"] = {
display = "[[inorganic chemistry]]",
topical_categories = true,
}
labels["insurance"] = {
display = "[[insurance]]",
topical_categories = true,
}
labels["กฎหมายระหว่างประเทศ"] = {
aliases = {"international law", "กฎหมายนานาชาติ"},
display = "[[กฎหมายระหว่างประเทศ]]",
topical_categories = true,
}
labels["ความสัมพันธ์ระหว่างประเทศ"] = {
aliases = {"international relations"},
display = "[[ความสัมพันธ์ระหว่างประเทศ]]",
topical_categories = true,
}
labels["international standards"] = {
aliases = {"international standard", "ISO", "International Organization for Standardization", "International Organisation for Standardisation"},
Wikipedia = "International standard",
}
labels["อินเทอร์เน็ต"] = {
aliases = {"Internet", "internet", "online", "ออนไลน์"},
display = "[[อินเทอร์เน็ต]]",
topical_categories = true,
}
labels["Iranian mythology"] = {
display = "[[Iranian]] [[mythology]]",
topical_categories = true,
}
labels["Irish mythology"] = {
display = "[[Irish]] [[mythology]]",
topical_categories = true,
}
labels["ศาสนาอิสลาม"] = {
aliases = {"Islam", "islam", "Islamic", "อิสลาม", "Muslim", "มุสลิม"},
display = "[[ศาสนาอิสลาม]]",
topical_categories = true,
}
labels["การเงินอิสลาม"] = {
aliases = {"Islamic finance", "Islamic banking", "Muslim finance", "Muslim banking", "Sharia-compliant finance"},
Wikipedia = true,
topical_categories = true,
}
labels["กฎหมายอิสลาม"] = {
aliases = {"Islamic law", "Islamic legal", "Sharia"},
Wikipedia = true,
topical_categories = true,
}
labels["Jainism"] = {
display = "[[Jainism]]",
Wikipedia = true,
topical_categories = true,
}
labels["บันเทิงคดีญี่ปุ่น"] = {
-- aliases = {"anime", "manga", "anime and manga", "manga and anime"},
aliases = {"Japanese fiction"},
display = "[[บันเทิงคดี]][[ญี่ปุ่น]]",
Wikipedia = true,
topical_categories = true,
}
labels["Japanese god"] = {
display = "[[Japanese#Adjective|Japanese]] [[mythology]]",
topical_categories = "Japanese deities",
}
labels["Japanese mythology"] = {
display = "[[Japanese#Adjective|Japanese]] [[mythology]]",
topical_categories = true,
}
labels["Japanese pornography"] = {
aliases = {"Japanese porn", "hentai", "adult anime", "erotic anime", "ero anime"},
display = "[[Japanese#Adjective|Japanese]] [[pornography]]",
Wikipedia = true,
topical_categories = true,
}
labels["Java programming language"] = {
aliases = {"JavaPL", "Java PL"},
display = "[[w:Java (programming language)|Java programming language]]",
Wikipedia = "Java (programming language)",
topical_categories = true,
}
labels["jazz"] = {
display = "[[jazz#Noun|jazz]]",
topical_categories = true,
}
labels["jewelry"] = {
aliases = {"jewellery"},
display = "[[jewelry]]",
topical_categories = true,
}
labels["Jewish law"] = {
aliases = {"Halacha", "Halachah", "Halakha", "Halakhah", "halacha", "halachah", "halakha", "halakhah", "Jewish Law", "jewish law"},
display = "[[Jewish]] [[law]]",
topical_categories = true,
}
labels["Germanic paganism"] = {
aliases = {"Asatru", "Ásatrú", "Germanic neopaganism", "Germanic Paganism", "Heathenry", "heathenry", "Norse neopaganism", "Norse paganism"},
display = "[[Germanic#Adjective|Germanic]] [[paganism]]",
topical_categories = true,
}
labels["journalism"] = {
display = "[[journalism]]",
topical_categories = "Mass media",
}
labels["Judaism"] = {
display = "[[Judaism]]",
topical_categories = true,
}
labels["judo"] = {
display = "[[judo]]",
topical_categories = true,
}
labels["juggling"] = {
display = "[[juggling#Noun|juggling]]",
topical_categories = true,
}
labels["karuta"] = {
display = "[[karuta]]",
topical_categories = true,
}
labels["kendo"] = {
display = "[[kendo]]",
topical_categories = true,
}
labels["knitting"] = {
display = "[[knitting#Noun|knitting]]",
topical_categories = true,
}
labels["labour"] = {
aliases = {"labor", "labour movement", "labor movement"},
display = "[[labour]]",
topical_categories = true,
}
labels["lacrosse"] = {
display = "[[lacrosse]]",
topical_categories = true,
}
labels["กฎหมาย"] = {
aliases = {"law", "legal", "กฎ", "นิติ", "นิติศาสตร์"},
display = "[[กฎหมาย]]",
topical_categories = true,
}
labels["law enforcement"] = {
aliases = {"police", "policing"},
display = "[[law enforcement]]",
topical_categories = true,
}
labels["leatherworking"] = {
display = "[[leatherworking]]",
topical_categories = true,
}
labels["leftism"] = {
display = "[[leftism]]",
topical_categories = true,
}
labels["letterpress"] = {
aliases = {"metal type", "metal typesetting"},
display = "[[letterpress]] [[typography]]",
topical_categories = "การเรียงพิมพ์",
}
labels["ศัพทานุกรมศาสตร์"] = {
aliases = {"ศัพทานุกรม", "lexicography"},
display = "[[ศัพทานุกรมศาสตร์]]",
topical_categories = true,
}
labels["แอลจีบีทีคิว"] = {
aliases = {"แอลจีบีที", "แอลจีบีทีคิวไอเอ", "LGBT", "LGBT+", "LGBT*", "LGBTQ", "LGBTQ+", "LGBTQ*", "LGBTQIA", "LGBTQIA+", "LGBTQIA*"},
display = "[[แอลจีบีทีคิว]]",
topical_categories = true,
}
labels["liberalism"] = {
display = "[[liberalism]]",
topical_categories = true,
}
labels["บรรณารักษศาสตร์"] = {
aliases = {"library science"},
display = "[[บรรณารักษศาสตร์]]",
topical_categories = true,
}
labels["lichenology"] = {
display = "[[lichenology]]",
topical_categories = true,
}
labels["limnology"] = {
display = "[[limnology]]",
topical_categories = "Ecology",
}
labels["ลิพิด"] = {
aliases = {"lipid"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["linear algebra"] = {
aliases = {"vector algebra"},
display = "[[linear algebra]]",
topical_categories = true,
}
labels["linguistic morphology"] = {
display = "[[linguistic]] [[morphology]]",
topical_categories = true,
}
labels["ภาษาศาสตร์"] = {
aliases = {"linguistics", "linguistic", "philology", "นิรุกติศาสตร์", "นิรุกติ"},
display = "[[ภาษาศาสตร์]]",
topical_categories = true,
}
labels["วรรณกรรม"] = {
aliases = {"literature", "วรรณ", "วรรณคดี"},
display = "[[วรรณกรรม]]",
topical_categories = true,
}
labels["ตรรกศาสตร์"] = {
aliases = {"logic", "ตรรก", "ตรรกะ", "ลอจิก"},
display = "[[ตรรกศาสตร์]]",
topical_categories = true,
}
labels["logistics"] = {
display = "[[logistics]]",
topical_categories = true,
}
labels["luge"] = {
display = "[[luge]]",
topical_categories = true,
}
labels["machining"] = {
display = "[[machining#Noun|machining]]",
topical_categories = true,
}
labels["machine learning"] = {
aliases = {"ML"},
display = "[[machine learning]]",
topical_categories = true,
}
labels["macroeconomics"] = {
display = "[[macroeconomics]]",
topical_categories = "Economics",
}
labels["mahjong"] = {
display = "[[mahjong]]",
topical_categories = true,
}
labels["malacology"] = {
display = "[[malacology]]",
topical_categories = true,
}
labels["mammalogy"] = {
display = "[[mammalogy]]",
topical_categories = true,
}
labels["management"] = {
display = "[[management]]",
topical_categories = true,
}
labels["มังงะ"] = {
aliases = {"manga"},
display = "[[มังงะ]]",
topical_categories = "บันเทิงคดีญี่ปุ่น",
}
labels["manhua"] = {
display = "[[manhua]]",
topical_categories = "บันเทิงคดีจีน",
}
labels["manhwa"] = {
display = "[[manhwa]]",
topical_categories = "บันเทิงคดีเกาหลี",
}
labels["Manichaeism"] = {
display = "[[Manichaeism]]",
topical_categories = true,
}
labels["manufacturing"] = {
display = "[[manufacturing#Noun|manufacturing]]",
topical_categories = true,
}
labels["Maoism"] = {
display = "[[Maoism]]",
topical_categories = true,
}
labels["marching"] = {
display = "[[marching#Noun|marching]]",
topical_categories = true,
}
labels["marine biology"] = {
aliases = {"coral science"},
display = "[[marine biology]]",
topical_categories = true,
}
labels["การตลาด"] = {
aliases = {"marketing"},
display = "[[การตลาด]]",
topical_categories = true,
}
labels["ศิลปะการต่อสู้ป้องกันตัว"] = {
aliases = {"martial arts", "martial art", "ศิลปะการป้องกันตัว", "ศิลปะการต่อสู้"},
display = "[[ศิลปะการต่อสู้ป้องกันตัว]]",
topical_categories = true,
}
labels["Marxism"] = {
display = "[[Marxism]]",
topical_categories = true,
}
labels["masonry"] = {
display = "[[masonry]]",
topical_categories = true,
}
labels["massage"] = {
display = "[[massage]]",
topical_categories = true,
}
labels["materials science"] = {
display = "[[materials science]]",
topical_categories = true,
}
labels["mathematical analysis"] = {
aliases = {"analysis"},
display = "[[mathematical analysis]]",
topical_categories = true,
}
labels["คณิตศาสตร์"] = {
aliases = {"mathematics", "math", "maths", "คณิต"},
display = "[[คณิตศาสตร์]]",
topical_categories = true,
}
labels["measure theory"] = {
display = "[[measure theory]]",
topical_categories = true,
}
labels["mechanical engineering"] = {
display = "[[mechanical engineering]]",
topical_categories = true,
}
labels["mechanics"] = {
display = "[[mechanics]]",
topical_categories = true,
}
labels["media"] = {
display = "[[media]]",
topical_categories = true,
}
labels["mediaeval folklore"] = {
aliases = {"medieval folklore"},
display = "[[mediaeval]] [[folklore]]",
topical_categories = "European folklore",
}
labels["medical genetics"] = {
display = "[[medical]] [[genetics]]",
topical_categories = true,
}
labels["medical sign"] = {
display = "[[medicine]]",
topical_categories = "Medical signs and symptoms",
}
labels["แพทยศาสตร์"] = {
aliases = {"medicine", "medical", "แพทย์", "การแพทย์"},
display = "[[แพทยศาสตร์]]",
topical_categories = true,
}
labels["Meitei god"] = {
display = "[[Meitei]] [[mythology]]",
topical_categories = "Meitei deities",
}
labels["mental health"] = {
display = "[[mental health]]",
topical_categories = true,
}
labels["Mesopotamian mythology"] = {
display = "[[Mesopotamian]] [[mythology]]",
topical_categories = true,
}
labels["metadata"] = {
display = "[[metadata]]",
topical_categories = "Data management",
}
labels["โลหวิทยา"] = {
aliases = {"metallurgy"},
display = "[[โลหวิทยา]]",
topical_categories = true,
}
labels["metalworking"] = {
display = "[[metalworking]]",
topical_categories = true,
}
labels["metaphysics"] = {
display = "[[metaphysics]]",
topical_categories = true,
}
labels["อุตุนิยมวิทยา"] = {
aliases = {"meteorology", "อุตุนิยม", "อุตุ"},
display = "[[อุตุนิยมวิทยา]]",
topical_categories = true,
}
labels["Methodism"] = {
aliases = {"Methodist", "methodism", "methodist"},
display = "[[Methodism]]",
topical_categories = true,
}
labels["มาตรวิทยา"] = {
aliases = {"metrology", "มาตร"},
display = "[[มาตรวิทยา]]",
topical_categories = true,
}
labels["microbiology"] = {
display = "[[microbiology]]",
topical_categories = true,
}
labels["microelectronics"] = {
display = "[[microelectronics]]",
topical_categories = true,
}
labels["micronationalism"] = {
display = "[[micronationalism]]",
topical_categories = true,
}
labels["microscopy"] = {
display = "[[microscopy]]",
topical_categories = true,
}
labels["milling"] = {
display = "[[milling]]",
topical_categories = true,
}
labels["การทหาร"] = {
aliases = {"military", "ทหาร"},
display = "[[การทหาร]]",
topical_categories = true,
}
labels["Minecraft"] = {
display = "''[[Minecraft]]''",
topical_categories = true,
}
labels["วิทยาแร่"] = {
aliases = {"mineralogy", "แร่วิทยา"},
display = "[[วิทยาแร่]]",
topical_categories = true,
}
labels["mining"] = {
display = "[[mining#Noun|mining]]",
topical_categories = true,
}
labels["molecular biology"] = {
display = "[[molecular biology]]",
topical_categories = true,
}
labels["ราชาธิปไตย"] = {
aliases = {"monarchy"},
display = "[[ราชาธิปไตย]]",
topical_categories = true,
}
labels["money"] = {
display = "[[money]]",
topical_categories = true,
}
labels["Mormonism"] = {
display = "[[Mormonism]]",
topical_categories = true,
}
labels["motorcycling"] = {
aliases = {"motorcycle", "motorcycles", "motorbike"},
display = "[[motorcycling#Noun|motorcycling]]",
topical_categories = "Motorcycles",
}
-- There are other types of racing, but 99% of the time "racing" on its own refers to motorsports
labels["motor racing"] = {
aliases = {"motor sport", "motorsport", "motorsports", "racing"},
display = "[[motor racing]]",
topical_categories = true,
}
labels["multiplicity"] = {
display = "{{l|en|multiplicity|id=multiple personalities}}",
topical_categories = "Multiplicity (psychology)",
}
labels["ดนตรี"] = {
aliases = {"music"},
display = "[[ดนตรี]]",
topical_categories = true,
}
labels["music industry"] = {
Wikipedia = true,
topical_categories = true,
}
labels["musicology"] = {
display = "[[musicology]]",
topical_categories = "ดนตรี",
}
labels["mycology"] = {
display = "[[mycology]]",
topical_categories = true,
}
labels["mythology"] = {
display = "[[mythology]]",
topical_categories = true,
}
labels["นาโนเทคโนโลยี"] = {
aliases = {"nanotechnology", "nanotech", "nano", "เทคโนโลยีนาโน", "นาโนเทค", "นาโน"},
display = "[[นาโนเทคโนโลยี]]",
topical_categories = true,
}
labels["narratology"] = {
display = "[[narratology]]",
topical_categories = true,
}
labels["การเดินเรือ"] = {
aliases = {"nautical"},
display = "[[การเดินเรือ]]",
topical_categories = true,
}
labels["navigation"] = {
display = "[[navigation]]",
topical_categories = true,
}
labels["ลัทธินาซี"] = { -- see also Neo-Nazism
aliases = {"Nazism", "nazism", "Nazi", "nazi", "Nazis", "nazis", "นาซี"},
Wikipedia = true,
topical_categories = true,
}
labels["nematology"] = {
display = "[[nematology]]",
topical_categories = "Zoology",
}
labels["ลัทธินีโอ-นาซี"] = { -- Often used to indicate Nazi-used jargon; compare "white supremacist ideology"
aliases = {"neo-Nazism", "Neo-Nazism", "Neo-nazism", "neo-nazism", "Neo-Nazi", "Neo-nazi", "neo-Nazi", "neo-nazi", "Neo-Nazis", "Neo-nazis", "neo-Nazis", "neo-nazis", "NeoNazism", "Neonazism", "neoNazism", "neonazism", "NeoNazi", "Neonazi", "neoNazi", "neonazi", "NeoNazis", "Neonazis", "neoNazis", "neonazis", "ลัทธินีโอนาซี", "นีโอ-นาซี", "นีโอนาซี"},
Wikipedia = true,
topical_categories = true,
}
labels["netball"] = {
display = "[[netball]]",
topical_categories = true,
}
labels["networking"] = {
display = "[[networking#Noun|networking]]",
topical_categories = true,
}
labels["neuroanatomy"] = {
display = "[[neuroanatomy]]",
topical_categories = true,
}
labels["neurology"] = {
display = "[[neurology]]",
topical_categories = true,
}
labels["neuroscience"] = {
display = "[[neuroscience]]",
topical_categories = true,
}
labels["neurosurgery"] = {
display = "[[neurosurgery]]",
topical_categories = true,
}
labels["หนังสือพิมพ์"] = {
aliases = {"newspapers", "newspaper", "นสพ"},
display = "[[หนังสือพิมพ์]]",
topical_categories = true,
}
labels["Norse god"] = {
aliases = {"Norse goddess", "Norse deity"},
display = "[[Norse]] [[mythology]]",
topical_categories = "Norse deities",
}
labels["Norse mythology"] = {
display = "[[Norse]] [[mythology]]",
topical_categories = true,
}
labels["nuclear energy"] = {
display = "[[nuclear energy]]",
topical_categories = true,
}
labels["nuclear physics"] = {
display = "[[nuclear physics]]",
topical_categories = true,
}
labels["number theory"] = {
display = "[[number theory]]",
topical_categories = true,
}
labels["กษาปณวิทยา"] = {
aliases = {"numismatics", "กษาปณ์"},
display = "[[กษาปณวิทยา]]",
topical_categories = "Currency",
}
labels["โภชนาการ"] = {
aliases = {"nutrition", "โภชนศาสตร์", "โภชนวิทยา", "โภชน์"},
display = "[[โภชนาการ]]",
topical_categories = true,
}
labels["object-oriented programming"] = {
aliases = {"object-oriented", "OOP"},
display = "[[object-oriented programming]]",
topical_categories = true,
}
labels["obstetrics"] = {
aliases = {"obstetric"},
display = "[[obstetrics]]",
topical_categories = true,
}
labels["occult"] = {
display = "[[occult]]",
topical_categories = true,
}
labels["oceanography"] = {
display = "[[oceanography]]",
topical_categories = true,
}
labels["oenology"] = {
display = "[[oenology]]",
topical_categories = true,
}
labels["oil industry"] = {
aliases = {"oil drilling"},
display = "[[w:Petroleum industry|oil industry]]",
Wikipedia = true,
topical_categories = true,
}
labels["oncology"] = {
display = "[[oncology]]",
topical_categories = true,
}
labels["เกมออนไลน์"] = {
aliases = {"online gaming", "online games", "MMO", "MMORPG", "เอ็มเอ็มโอ", "เอ็มเอ็มโออาร์พีจี"},
display = "[[เกม]][[ออนไลน์]]",
topical_categories = "วิดีโอเกม",
}
labels["นามศาสตร์"] = {
aliases = {"onomastics"},
display = "[[นามศาสตร์]]",
topical_categories = true,
}
labels["opera"] = {
display = "[[opera]]",
topical_categories = true,
}
labels["ระบบปฏิบัติการ"] = {
aliases = {"operating systems", "OS", "โอเอส"},
display = "[[ระบบปฏิบัติการ]]",
topical_categories = "ซอฟต์แวร์",
}
labels["ophthalmology"] = {
display = "[[ophthalmology]]",
topical_categories = true,
}
labels["ทัศนศาสตร์"] = {
aliases = {"optics", "ทัศน"},
display = "[[ทัศนศาสตร์]]",
topical_categories = {"ทัศนศาสตร์"},
}
labels["organic chemistry"] = {
display = "[[organic chemistry]]",
topical_categories = true,
}
labels["ornithology"] = {
display = "[[ornithology]]",
topical_categories = true,
}
labels["orthodontics"] = {
display = "[[orthodontics]]",
topical_categories = "Dentistry",
}
labels["orthography"] = {
display = "[[orthography]]",
topical_categories = true,
}
labels["paganism"] = {
aliases = {"pagan", "neopagan", "neopaganism", "neo-pagan", "neo-paganism"},
display = "[[paganism]]",
topical_categories = true,
}
labels["pain"] = {
display = "[[medicine]]",
topical_categories = true,
}
labels["paintball"] = {
display = "[[paintball]]",
topical_categories = true,
}
labels["painting"] = {
display = "[[painting#Noun|painting]]",
topical_categories = true,
}
labels["อักขรวิทยาโบราณ"] = {
aliases = {"palaeography", "paleography"},
display = "[[อักขรวิทยาโบราณ]]",
topical_categories = true,
}
labels["paleontology"] = {
aliases = {"palaeontology"},
display = "[[paleontology]]",
topical_categories = true,
}
labels["palmistry"] = {
display = "[[palmistry]]",
topical_categories = true,
}
labels["palynology"] = {
display = "[[palynology]]",
topical_categories = true,
}
labels["ปรจิตวิทยา"] = {
aliases = {"parapsychology"},
display = "[[ปรจิตวิทยา]]",
topical_categories = true,
}
labels["parasitology"] = {
display = "[[parasitology]]",
topical_categories = true,
}
labels["particle physics"] = {
display = "[[particle physics]]",
topical_categories = true,
}
labels["pasteurisation"] = {
display = "[[pasteurisation]]",
topical_categories = true,
}
labels["patent law"] = {
aliases = {"patents"},
display = "[[patent#Noun|patent]] [[law]]",
topical_categories = true,
}
labels["พยาธิวิทยา"] = {
aliases = {"พยาธิ", "pathology"},
display = "[[พยาธิวิทยา]]",
topical_categories = {"พยาธิวิทยา"},
}
labels["pensions"] = {
display = "[[pension]]s",
topical_categories = true,
}
labels["pesäpallo"] = {
aliases = {"pesapallo"},
display = "[[pesäpallo]]",
topical_categories = true,
}
labels["petrochemistry"] = {
display = "[[petrochemistry]]",
topical_categories = true,
}
labels["petrology"] = {
display = "[[petrology]]",
topical_categories = true,
}
labels["เภสัชวิทยา"] = {
aliases = {"pharmacology"},
display = "[[เภสัชวิทยา]]",
topical_categories = true,
}
labels["pharmacy"] = {
display = "[[pharmacy]]",
topical_categories = true,
}
labels["pharyngology"] = {
display = "[[pharyngology]]",
topical_categories = true,
}
labels["philately"] = {
display = "[[philately]]",
topical_categories = true,
}
labels["ปรัชญา"] = {
aliases = {"philosophy"},
display = "[[ปรัชญา]]",
topical_categories = true,
}
labels["สัทศาสตร์"] = {
aliases = {"phonetics"},
display = "[[สัทศาสตร์]]",
topical_categories = true,
}
labels["สัทวิทยา"] = {
aliases = {"phonology"},
display = "[[สัทวิทยา]]",
topical_categories = true,
}
labels["การถ่ายรูป"] = {
aliases = {"photography", "การถ่ายภาพ", "ถ่ายรูป", "ถ่ายภาพ"},
display = "[[การถ่ายรูป]]",
topical_categories = true,
}
labels["phrenology"] = {
display = "[[phrenology]]",
topical_categories = true,
}
labels["เคมีเชิงฟิสิกส์"] = {
aliases = {"physical chemistry"},
display = "[[เคมีเชิงฟิสิกส์]]",
topical_categories = true,
}
labels["ฟิสิกส์"] = {
aliases = {"physics"},
display = "[[ฟิสิกส์]]",
topical_categories = true,
}
labels["สรีรวิทยา"] = {
aliases = {"physiology", "สรีร"},
display = "[[สรีรวิทยา]]",
topical_categories = true,
}
labels["phytopathology"] = {
display = "[[phytopathology]]",
topical_categories = true,
}
labels["pinball"] = {
display = "[[pinball]]",
topical_categories = true,
}
labels["วิทยาดาวเคราะห์"] = {
aliases = {"planetology", "ดาวเคราะห์"},
display = "[[วิทยาดาวเคราะห์]]",
topical_categories = true,
}
labels["playground games"] = {
aliases = {"playground game"},
display = "[[playground]] [[game]]s",
topical_categories = true,
}
labels["poetry"] = {
display = "[[poetry]]",
topical_categories = true,
}
labels["โปเกมอน"] = {
aliases = {"Pokémon", "Pokemon"},
display = "''[[w:โปเกมอน|โปเกมอน]]''",
Wikipedia = true,
topical_categories = true,
}
labels["poker"] = {
display = "[[poker]]",
topical_categories = true,
}
labels["poker slang"] = {
display = "[[poker]] [[slang]]",
topical_categories = "Poker",
}
labels["political science"] = {
display = "[[political science]]",
topical_categories = true,
}
labels["การเมือง"] = {
aliases = {"politics", "political"},
display = "[[การเมือง]]",
topical_categories = true,
}
labels["Australian politics"] = {
display = "[[w:Politics of Australia|Australian politics]]",
Wikipedia = "Politics of Australia",
topical_categories = true,
}
labels["Bangladeshi politics"] = {
display = "[[w:Politics of Bangladesh|Bangladeshi politics]]",
Wikipedia = "Politics of Bangladesh",
topical_categories = true,
}
labels["Canadian politics"] = {
display = "[[w:Politics of Canada|Canadian politics]]",
Wikipedia = "Politics of Canada",
topical_categories = true,
}
labels["European politics"] = {
display = "[[w:Politics of Europe|European politics]]",
Wikipedia = "Politics of Europe",
topical_categories = true,
}
labels["EU politics"] = {
display = "[[w:Politics of the European Union|EU politics]]",
Wikipedia = "Politics of the European Union",
topical_categories = true,
}
labels["French politics"] = {
display = "[[w:Politics of France|French politics]]",
Wikipedia = "Politics of France",
topical_categories = true,
}
labels["German politics"] = {
display = "[[w:Politics of Germany|German politics]]",
Wikipedia = "Politics of Germany",
topical_categories = true,
}
labels["Hong Kong politics"] = {
aliases = {"HK politics"},
display = "[[w:Politics of Hong Kong|HK politics]]",
Wikipedia = "Politics of Hong Kong",
topical_categories = true,
}
labels["Indian politics"] = {
display = "[[w:Politics of India|Indian politics]]",
Wikipedia = "Politics of India",
topical_categories = true,
}
labels["Indonesian politics"] = {
aliases = {"Indonesia politics"},
display = "[[w:Politics of Indonesia|Indonesian politics]]",
Wikipedia = "Politics of Indonesia",
topical_categories = true,
}
labels["Irish politics"] = {
display = "[[w:Politics of the Republic of Ireland|Irish politics]]",
Wikipedia = "Politics of the Republic of Ireland",
topical_categories = true,
}
labels["Malaysian politics"] = {
aliases = {"Malaysia politics"},
display = "[[w:Politics of Malaysia|Malaysian politics]]",
Wikipedia = "Politics of Malaysia",
topical_categories = true,
}
labels["New Zealand politics"] = {
display = "[[w:Politics of New Zealand|New Zealand politics]]",
Wikipedia = "Politics of New Zealand",
topical_categories = true,
}
labels["Pakistani politics"] = {
display = "[[w:Politics of Pakistan|Pakistani politics]]",
Wikipedia = "Politics of Pakistan",
topical_categories = true,
}
labels["Palestinian politics"] = {
aliases = {"Palestine politics"},
display = "[[w:Politics of the Palestinian National Authority|Palestinian politics]]",
Wikipedia = "Politics of the Palestinian National Authority",
topical_categories = true,
}
labels["Philippine politics"] = {
aliases = {"Filipino politics"},
display = "[[w:Politics of the Philippines|Philippine politics]]",
Wikipedia = "Politics of the Philippines",
topical_categories = true,
}
labels["Spanish politics"] = {
display = "[[w:Politics of Spain|Spanish politics]]",
Wikipedia = "Politics of Spain",
topical_categories = true,
}
labels["Swiss politics"] = {
display = "[[w:Politics of Switzerland|Swiss politics]]",
Wikipedia = "Politics of the Switzerland",
topical_categories = true,
}
labels["UK politics"] = {
display = "[[w:Politics of the United Kingdom|UK politics]]",
Wikipedia = "Politics of the United Kingdom",
topical_categories = true,
}
labels["US politics"] = {
display = "[[w:Politics of the United States|US politics]]",
Wikipedia = "Politics of the United States",
topical_categories = true,
}
labels["Philmont Scout Ranch"] = {
aliases = {"Philmont"},
display = "[[w:Philmont Scout Ranch|Philmont Scout Ranch]]",
Wikipedia = true,
topical_categories = true,
}
labels["สื่อลามก"] = {
aliases = {"pornography", "porn", "porno", "สื่อลามกอนาจาร", "หนังผู้ใหญ่"},
display = "[[สื่อลามก]]",
topical_categories = true,
}
labels["Portuguese folklore"] = {
display = "[[Portuguese#Adjective|Portuguese]] [[folklore]]",
topical_categories = "European folklore",
}
labels["post"] = {
display = "[[post#Etymology 2|post]]",
topical_categories = true,
}
labels["potential theory"] = {
display = "[[potential theory]]",
topical_categories = true,
}
labels["pottery"] = {
display = "[[pottery]]",
topical_categories = "Ceramics",
}
labels["pragmatics"] = {
display = "[[pragmatics]]",
topical_categories = true,
}
labels["การพิมพ์"] = {
aliases = {"printing"},
display = "[[การพิมพ์]]",
topical_categories = true,
}
labels["probability theory"] = {
display = "[[probability theory]]",
topical_categories = true,
}
labels["professional wrestling"] = {
aliases = {"pro wrestling"},
display = "[[professional wrestling]]",
topical_categories = true,
}
labels["การเขียนโปรแกรม"] = {
aliases = {"programming", "computer programming"},
display = "[[การเขียนโปรแกรม]]",
topical_categories = true,
}
labels["property law"] = {
aliases = {"land law", "real estate law"},
display = "[[property law]]",
topical_categories = true,
}
labels["สัทสัมพันธ์"] = {
aliases = {"prosody", "ฉันทลักษณ์"},
display = "[[สัทสัมพันธ์]]",
topical_categories = true,
}
labels["Protestantism"] = {
aliases = {"protestantism", "Protestant", "protestant"},
display = "[[Protestantism]]",
topical_categories = true,
}
labels["pseudoscience"] = {
display = "[[pseudoscience]]",
topical_categories = true,
}
labels["psychiatry"] = {
display = "[[psychiatry]]",
topical_categories = true,
}
labels["psychoanalysis"] = {
display = "[[psychoanalysis]]",
topical_categories = true,
}
labels["จิตวิทยา"] = {
aliases = {"psychology"},
display = "[[จิตวิทยา]]",
topical_categories = true,
}
labels["จิตบำบัด"] = {
aliases = {"psychotherapy"},
display = "[[จิตบำบัด]]",
topical_categories = true,
}
labels["publishing"] = {
display = "[[publishing#Noun|publishing]]",
topical_categories = true,
}
labels["pulmonology"] = {
display = "[[pulmonology]]",
topical_categories = true,
}
labels["pyrotechnics"] = {
display = "[[pyrotechnics]]",
topical_categories = true,
}
labels["QAnon"] = {
aliases = {"Qanon"},
Wikipedia = true,
topical_categories = true,
}
labels["Quakerism"] = {
display = "[[Quakerism]]",
topical_categories = true,
}
labels["quantum computing"] = {
display = "[[quantum computing]]",
topical_categories = true,
}
labels["quantum mechanics"] = {
aliases = {"quantum physics"},
display = "[[quantum mechanics]]",
topical_categories = true,
}
-- TODO: What kind of topic is "radiation"? Is it specific kinds of radiation? That would be a set-type category.
labels["radiation"] = {
display = "[[physics]]",
topical_categories = true,
}
labels["radio"] = {
display = "[[radio]]",
topical_categories = true,
}
labels["Raëlism"] = {
display = "[[Raëlism]]",
topical_categories = true,
}
labels["rail transport"] = {
aliases = {"rail", "railroading", "railroads"},
display = "[[rail transport]]",
topical_categories = "Rail transportation",
}
labels["Rastafari"] = {
aliases = {"Rasta", "rasta", "Rastafarian", "rastafarian", "Rastafarianism"},
display = "[[Rastafari]]",
topical_categories = true,
}
labels["real estate"] = {
display = "[[real estate]]",
topical_categories = true,
}
labels["real tennis"] = {
display = "[[real tennis]]",
topical_categories = "Tennis",
}
labels["recreational mathematics"] = {
display = "[[recreational mathematics]]",
topical_categories = "Mathematics",
}
labels["Reddit"] = {
display = "[[Reddit]]",
topical_categories = true,
}
labels["regular expressions"] = {
aliases = {"regex"},
display = "[[regular expression]]s",
topical_categories = true,
}
labels["relativity"] = {
display = "[[relativity]]",
topical_categories = true,
}
labels["ศาสนา"] = {
aliases = {"religion", "ศาสนศาสตร์", "ศาสน"},
display = "[[ศาสนา]]",
topical_categories = true,
}
labels["rhetoric"] = {
display = "[[rhetoric]]",
topical_categories = true,
}
labels["road transport"] = {
aliases = {"roads"},
display = "[[w:road transport|road transport]]",
Wikipedia = true,
topical_categories = true,
}
labels["วิทยาการหุ่นยนต์"] = {
aliases = {"robotics"},
display = "[[วิทยาการหุ่นยนต์]]",
topical_categories = true,
}
labels["rock paper scissors"] = {
topical_categories = true,
}
labels["roleplaying games"] = {
aliases = {"role playing games", "role-playing games", "RPG", "RPGs"},
display = "[[roleplaying game]]s",
topical_categories = "Role-playing games",
}
labels["roller derby"] = {
display = "[[roller derby]]",
topical_categories = true,
}
labels["Roman Catholicism"] = {
aliases = {"Roman Catholic", "Roman Catholic Church"},
display = "[[Roman Catholicism]]",
topical_categories = true,
}
labels["Roman Empire"] = {
display = "[[Roman Empire]]",
topical_categories = true,
}
labels["Roman mythology"] = {
display = "[[Roman]] [[mythology]]",
topical_categories = true,
}
labels["Roman numerals"] = {
display = "[[Roman numeral]]s",
topical_categories = true,
}
labels["roofing"] = {
display = "[[roofing#Noun|roofing]]",
topical_categories = true,
}
labels["rosiculture"] = {
display = "[[rosiculture]]",
topical_categories = true,
}
labels["rowing"] = {
display = "[[rowing#Noun|rowing]]",
topical_categories = true,
}
labels["Rubik's Cube"] = {
aliases = {"Rubik's cubes"},
display = "[[Rubik's Cube]]",
topical_categories = true,
}
labels["rugby"] = {
display = "[[rugby]]",
topical_categories = true,
}
labels["rugby league"] = {
display = "[[rugby league]]",
topical_categories = true,
}
labels["rugby union"] = {
display = "[[rugby union]]",
topical_categories = true,
}
labels["sailing"] = {
display = "[[sailing#Noun|sailing]]",
topical_categories = true,
}
labels["บันเทิงคดีแนววิทยาศาสตร์"] = {
aliases = {"science fiction", "scifi", "sci fi", "sci-fi", "นิยายวิทยาศาสตร์", "นิยายไซไฟ", "นิยายไซ-ไฟ", "ไซไฟ", "ไซ-ไฟ"},
display = "[[บันเทิงคดีแนววิทยาศาสตร์]]",
topical_categories = true,
}
labels["วิทยาศาสตร์"] = {
aliases = {"sciences", "science", "scientific", "วิทย์", "วิทยา"},
display = "[[วิทยาศาสตร์]]",
topical_categories = true,
}
labels["Scientology"] = {
display = "[[Scientology]]",
topical_categories = true,
}
-- Note: this is the usual term, not "Scottish law".
labels["Scots law"] = {
aliases = {"Scottish law", "Scotland law", "Scots Law", "Scottish Law", "Scotland Law"},
Wikipedia = true,
topical_categories = true,
}
labels["Scouting"] = {
aliases = {"scouting"},
display = "[[scouting]]",
topical_categories = true,
}
labels["Scrabble"] = {
display = "''[[Scrabble]]''",
Wikipedia = true,
topical_categories = true,
}
labels["scrapbooks"] = {
display = "[[scrapbook]]s",
topical_categories = true,
}
labels["sculpture"] = {
display = "[[sculpture]]",
topical_categories = true,
}
labels["seduction community"] = {
aliases = {"pickup artist", "pickup artists", "pickup artistry", "pickup community"},
display = "[[w:Seduction community|seduction community]]",
Wikipedia = true,
topical_categories = true,
}
labels["วิทยาแผ่นดินไหว"] = {
aliases = {"seismology"},
display = "[[วิทยาแผ่นดินไหว]]",
topical_categories = true,
}
labels["semantics"] = {
display = "[[semantics]]",
topical_categories = true,
}
labels["semiotics"] = {
display = "[[semiotics]]",
topical_categories = true,
}
labels["semiconductors"] = {
display = "[[semiconductor]]s",
topical_categories = true,
}
labels["set theory"] = {
display = "[[set theory]]",
topical_categories = true,
}
labels["sewing"] = {
display = "[[sewing#Noun|sewing]]",
topical_categories = true,
}
labels["sex"] = {
display = "[[sex]]",
topical_categories = true,
}
labels["sexology"] = {
display = "[[sexology]]",
topical_categories = true,
}
labels["sex position"] = {
display = "[[sex]]",
topical_categories = "Sex positions",
}
labels["เพศวิถี"] = {
aliases = {"sexuality"},
display = "[[เพศวิถี]]",
topical_categories = {"เพศวิถี"},
}
labels["Shaivism"] = {
display = "[[Shaivism]]",
topical_categories = true,
}
labels["shamanism"] = {
aliases = {"Shamanism"},
display = "[[shamanism]]",
topical_categories = true,
}
labels["Shi'ism"] = {
aliases = {"Shia", "Shi'ite", "Shi'i"},
display = "[[Shia Islam]]",
topical_categories = true,
}
labels["Shinto"] = {
display = "[[Shinto]]",
topical_categories = true,
}
labels["ship parts"] = {
display = "[[การเดินเรือ]]",
topical_categories = "Ship parts",
}
labels["shipping"] = {
display = "[[shipping#Noun|shipping]]",
topical_categories = true,
}
labels["shoemaking"] = {
display = "[[shoemaking]]",
topical_categories = true,
}
labels["shogi"] = {
display = "[[shogi]]",
topical_categories = true,
}
labels["signal processing"] = {
display = "[[w:Signal processing|signal processing]]",
Wikipedia = true,
topical_categories = true,
}
labels["Sikhism"] = {
display = "[[Sikhism]]",
topical_categories = true,
}
labels["singing"] = {
display = "[[singing#Noun|singing]]",
topical_categories = true,
}
labels["skateboarding"] = {
display = "[[skateboarding#Noun|skateboarding]]",
topical_categories = true,
}
labels["skating"] = {
display = "[[skating#Noun|skating]]",
topical_categories = true,
}
labels["skiing"] = {
display = "[[skiing#Noun|skiing]]",
topical_categories = true,
}
labels["skydiving"] = {
display = "[[skydiving#Noun|skydiving]]",
topical_categories = true,
}
labels["Slavic god"] = {
display = "[[Slavic]] [[mythology]]",
topical_categories = "Slavic deities",
}
labels["Slavic mythology"] = {
display = "[[Slavic]] [[mythology]]",
topical_categories = true,
}
labels["smoking"] = {
display = "[[smoking#Noun|smoking]]",
topical_categories = true,
}
labels["snooker"] = {
display = "[[snooker#Noun|snooker]]",
topical_categories = true,
}
labels["snowboarding"] = {
display = "[[snowboarding#Noun|snowboarding]]",
topical_categories = true,
}
labels["ซอกเกอร์"] = {
aliases = {"ฟุตบอล", "soccer", "football", "association football"},
display = "[[ซอกเกอร์]]",
topical_categories = true,
}
labels["สังคมศาสตร์"] = {
aliases = {"social sciences", "social science", "สังคม"},
display = "[[สังคมศาสตร์]]",
topical_categories = true,
}
labels["socialism"] = {
display = "[[socialism]]",
topical_categories = true,
}
labels["social media"] = {
display = "[[social media]]",
topical_categories = true,
}
labels["ภาษาศาสตร์สังคม"] = {
aliases = {"sociolinguistics"},
display = "[[ภาษาศาสตร์สังคม]]",
topical_categories = true,
}
labels["สังคมวิทยา"] = {
aliases = {"sociology"},
display = "[[สังคมวิทยา]]",
topical_categories = true,
}
labels["softball"] = {
display = "[[softball]]",
topical_categories = true,
}
labels["ซอฟต์แวร์"] = {
aliases = {"software"},
display = "[[ซอฟต์แวร์]]",
topical_categories = true,
}
labels["software architecture"] = {
display = "[[software architecture]]",
topical_categories = {"Software engineering", "การเขียนโปรแกรม"},
}
labels["software engineering"] = {
aliases = {"software development"},
display = "[[software engineering]]",
topical_categories = true,
}
labels["soil science"] = {
display = "[[soil science]]",
topical_categories = true,
}
labels["sound"] = {
display = "[[sound#Noun|sound]]",
topical_categories = true,
}
labels["sound engineering"] = {
display = "[[sound engineering]]",
topical_categories = true,
}
labels["South Korean idol fandom"] = {
display = "[[South Korean]] [[idol]] [[fandom]]",
topical_categories = true,
}
labels["South Park"] = {
display = "''[[w:South Park|South Park]]''",
Wikipedia = true,
topical_categories = true,
}
labels["Soviet Union"] = {
aliases = {"USSR"},
display = "[[Soviet Union]]",
topical_categories = true,
}
labels["space flight"] = {
aliases = {"spaceflight", "space travel"},
display = "[[space flight]]",
topical_categories = "Space",
}
labels["space science"] = {
aliases = {"space"},
display = "[[space science]]",
topical_categories = "Space",
}
labels["spectroscopy"] = {
display = "[[spectroscopy]]",
topical_categories = true,
}
labels["speedrunning"] = {
aliases = {"speedrun", "speedruns"},
display = "[[speedrunning]]",
topical_categories = true,
}
labels["spinning"] = {
display = "[[spinning]]",
topical_categories = true,
}
labels["spiritualism"] = {
display = "[[spiritualism]]",
topical_categories = true,
}
labels["กีฬา"] = {
aliases = {"sports", "sport"},
display = "[[กีฬา]]",
topical_categories = true,
}
labels["square dancing"] = {
aliases = {"square dance"},
display = "[[square dancing]]",
topical_categories = true,
}
labels["squash"] = {
display = "[[w:squash (sport)|squash]]",
Wikipedia = "Squash (sport)",
topical_categories = true,
}
labels["statistical mechanics"] = {
display = "[[statistical mechanics]]",
topical_categories = true,
}
labels["สถิติศาสตร์"] = {
aliases = {"statistics", "สถิติ"},
display = "[[สถิติศาสตร์]]",
topical_categories = true,
}
labels["Star Wars"] = {
display = "''[[Star Wars]]''",
topical_categories = true,
}
labels["stock market"] = {
display = "[[stock market]]",
topical_categories = true,
}
labels["stock ticker symbol"] = {
aliases = {"stock symbol"},
display = "[[stock ticker symbol]]",
topical_categories = "Stock symbols for companies",
}
labels["subculture"] = {
display = "[[subculture]]",
topical_categories = "Culture",
}
labels["Sufism"] = {
aliases = {"Sufi Islam"},
display = "[[w:Sufism|Sufism]]",
Wikipedia = true,
topical_categories = true,
}
labels["sumo"] = {
display = "[[sumo]]",
topical_categories = true,
}
labels["supply chain"] = {
display = "[[supply chain]]",
topical_categories = true,
}
labels["surfing"] = {
display = "[[surfing#Noun|surfing]]",
topical_categories = true,
}
labels["surgery"] = {
display = "[[surgery]]",
topical_categories = true,
}
labels["surveying"] = {
display = "[[surveying#Noun|surveying]]",
topical_categories = true,
}
labels["sushi"] = {
display = "[[sushi]]",
topical_categories = true,
}
labels["swimming"] = {
display = "[[swimming#Noun|swimming]]",
topical_categories = true,
}
labels["swords"] = {
display = "[[sword]]s",
topical_categories = true,
}
labels["systematics"] = {
display = "[[systematics]]",
topical_categories = "Taxonomy",
}
labels["systems engineering"] = {
display = "[[systems engineering]]",
topical_categories = true,
}
labels["systems theory"] = {
display = "[[systems theory]]",
topical_categories = true,
}
labels["table tennis"] = {
display = "[[table tennis]]",
topical_categories = true,
}
labels["ศาสนาเต๋า"] = {
aliases = {"Taoism", "Daoism", "เต๋า"},
display = "[[ศาสนาเต๋า]]",
topical_categories = true,
}
labels["tarot"] = {
display = "[[tarot]]",
topical_categories = "Cartomancy",
}
labels["ภาษีอากร"] = {
aliases = {"taxation", "tax", "taxes", "ภาษี", "อากร"},
display = "[[ภาษีอากร]]",
topical_categories = true,
}
labels["อนุกรมวิธาน"] = {
aliases = {"taxonomy"},
display = "[[อนุกรมวิธาน]]",
topical_categories = true,
}
labels["เทคโนโลยี"] = {
aliases = {"technology"},
display = "[[เทคโนโลยี]]",
topical_categories = true,
}
labels["telecommunications"] = {
aliases = {"telecommunication", "telecom"},
display = "[[telecommunications]]",
topical_categories = true,
}
labels["telegraphy"] = {
display = "[[telegraphy]]",
topical_categories = true,
}
labels["telephony"] = {
aliases = {"telephone", "telephones"},
display = "[[telephony]]",
topical_categories = true,
}
labels["television"] = {
aliases = {"TV"},
display = "[[television]]",
topical_categories = true,
}
labels["Tumblr aesthetic"] = {
display = "[[Tumblr]] aesthetic",
topical_categories = "Aesthetics",
}
labels["tennis"] = {
display = "[[tennis]]",
topical_categories = true,
}
labels["teratology"] = {
display = "[[teratology]]",
topical_categories = true,
}
labels["Tetris"] = {
display = "[[Tetris]]",
topical_categories = true,
}
labels["textiles"] = {
display = "[[textiles]]",
topical_categories = true,
}
labels["theater"] = {
aliases = {"theatre"},
display = "[[theater]]",
topical_categories = true,
}
labels["theology"] = {
display = "[[theology]]",
topical_categories = true,
}
labels["thermodynamics"] = {
display = "[[thermodynamics]]",
topical_categories = true,
}
labels["Tibetan Buddhism"] = {
display = "[[Tibetan Buddhism]]",
topical_categories = "ศาสนาพุทธ",
}
labels["tiddlywinks"] = {
display = "[[tiddlywinks]]",
topical_categories = true,
}
labels["TikTok aesthetic"] = {
display = "[[TikTok]] aesthetic",
topical_categories = "Aesthetics",
}
labels["เวลา"] = {
aliases = {"time"},
display = "[[เวลา]]",
topical_categories = true,
}
labels["topology"] = {
display = "[[topology]]",
topical_categories = true,
}
labels["tort law"] = {
display = "[[tort law]]",
topical_categories = "Law",
}
labels["tourism"] = {
display = "[[tourism]]",
topical_categories = true,
}
labels["toxicology"] = {
display = "[[toxicology]]",
topical_categories = true,
}
labels["trading"] = {
display = "[[trading#Noun|trading]]",
topical_categories = true,
}
labels["trading cards"] = {
display = "[[trading card]]s",
topical_categories = true,
}
labels["traditional Chinese medicine"] = {
aliases = {"TCM", "Chinese medicine"},
display = "[[traditional Chinese medicine]]",
topical_categories = true,
}
labels["traditional Korean medicine"] = {
aliases = {"Korean medicine"},
display = "{{w|traditional Korean medicine}}",
topical_categories = true,
}
labels["transgender"] = {
display = "[[transgender]]",
topical_categories = true,
}
labels["translation studies"] = {
display = "[[translation studies]]",
topical_categories = true,
}
labels["transport"] = {
aliases = {"transportation"},
display = "[[transport]]",
topical_categories = true,
}
labels["traumatology"] = {
display = "[[traumatology]]",
topical_categories = "Emergency medicine",
}
labels["travel"] = {
display = "[[travel]]",
topical_categories = true,
}
labels["trigonometry"] = {
display = "[[trigonometry]]",
topical_categories = true,
}
labels["trigonometric function"] = {
display = "[[trigonometry]]",
topical_categories = "Trigonometric functions",
}
labels["trust law"] = {
display = "[[trust law]]",
topical_categories = "Law",
}
labels["two-up"] = {
display = "[[two-up]]",
topical_categories = true,
}
labels["Twitter"] = {
aliases = {"twitter"},
display = "[[Twitter#Proper noun|Twitter]]",
topical_categories = true,
}
labels["การเรียงพิมพ์"] = {
aliases = {"การจัดตัวอักษร", "typography", "typesetting"},
display = "[[การเรียงพิมพ์]]",
topical_categories = true,
}
labels["ufology"] = {
display = "[[ufology]]",
topical_categories = true,
}
labels["underwater diving"] = {
aliases = {"scuba", "scuba diving"},
display = "[[underwater]] [[diving#Noun|diving]]",
topical_categories = true,
}
labels["สหประชาชาติ"] = {
aliases = {"United Nations", "UN", "ยูเอ็น"},
display = "[[สหประชาชาติ]]",
Wikipedia = true,
topical_categories = true,
}
labels["ยูนิโคด"] = {
aliases = {"Unicode", "Unicode standard"},
Wikipedia = true,
topical_categories = true,
}
labels["urban studies"] = {
aliases = {"urbanism", "urban planning"},
display = "[[urban studies]]",
topical_categories = true,
}
labels["urology"] = {
display = "[[urology]]",
topical_categories = true,
}
labels["Vaishnavism"] = {
display = "[[Vaishnavism]]",
topical_categories = true,
}
labels["Valentinianism"] = {
aliases = {"valentinianism"},
display = "[[w:Valentinianism|Valentinianism]]",
Wikipedia = true,
topical_categories = true,
}
labels["Vedic religion"] = {
aliases = {"Vedic Hinduism", "Ancient Hinduism", "ancient Hinduism", "Vedism", "Vedicism"},
display = "[[w:Historical Vedic religion|Vedic religion]]",
Wikipedia = "Historical Vedic religion",
topical_categories = true,
}
labels["ผัก"] = {
aliases = {"vegetable", "vegetables"},
display = "[[ผัก]]",
topical_categories = true,
}
labels["vehicles"] = {
aliases = {"vehicle"},
display = "[[vehicle]]s",
topical_categories = true,
}
labels["สัตวแพทยศาสตร์"] = {
aliases = {"veterinary medicine", "vet", "สัตวแพทย์"},
display = "[[สัตวแพทยศาสตร์]]",
topical_categories = true,
}
labels["video compression"] = {
display = "[[w:Video compression|video compression]]",
Wikipedia = true,
topical_categories = true,
}
labels["วิดีโอเกม"] = {
aliases = {"video games", "video game", "video gaming"},
display = "[[วิดีโอเกม]]",
topical_categories = true,
}
labels["วิทยาไวรัส"] = {
aliases = {"virology", "ไวรัสวิทยา"},
display = "[[วิทยาไวรัส]]",
topical_categories = true,
}
labels["ไวรัส"] = {
aliases = {"virus"},
display = "[[วิทยาไวรัส]]",
topical_categories = "ไวรัส",
}
labels["viticulture"] = {
display = "[[viticulture]]",
topical_categories = {"Horticulture", "Wine"},
}
labels["วิทยาภูเขาไฟ"] = {
aliases = {"volcanology", "vulcanology", "ภูเขาไฟ"},
display = "[[วิทยาภูเขาไฟ]]",
topical_categories = true,
}
labels["volleyball"] = {
display = "[[volleyball]]",
topical_categories = true,
}
labels["voodoo"] = {
display = "[[voodoo]]",
topical_categories = true,
}
labels["water sports"] = {
aliases = {"watersport", "watersports", "water sport"},
display = "[[watersport|water sports]]",
topical_categories = true,
}
labels["weather"] = {
topical_categories = true,
}
labels["weaving"] = {
display = "[[weaving#Noun|weaving]]",
topical_categories = true,
}
labels["web design"] = {
display = "[[web design]]",
topical_categories = true,
aliases = {"Web design"}
}
labels["web development"] = {
display = "[[web development]]",
topical_categories = {"การเขียนโปรแกรม", "Web design"},
}
labels["weightlifting"] = {
display = "[[weightlifting]]",
topical_categories = true,
}
labels["white supremacy"] = { -- Often used to indicate Nazi-used jargon; compare "neo-Nazism"
aliases = {"white nationalism", "white nationalist", "white power", "white racism", "white supremacist ideology", "white supremacism", "white supremacist"},
Wikipedia = true,
topical_categories = "White supremacist ideology",
}
labels["ไวน์"] = {
aliases = {"wine"},
display = "[[ไวน์]]",
topical_categories = true,
}
labels["winemaking"] = {
display = "[[winemaking]]",
topical_categories = "Wine",
}
labels["woodworking"] = {
display = "[[woodworking]]",
topical_categories = true,
}
labels["สงครามโลกครั้งที่หนึ่ง"] = {
aliases = {"World War I", "World War 1", "WWI", "WW I", "WW1", "WW 1"},
Wikipedia = "สงครามโลกครั้งที่หนึ่ง",
topical_categories = true,
}
labels["สงครามโลกครั้งที่สอง"] = {
aliases = {"World War II", "World War 2", "WWII", "WW II", "WW2", "WW 2"},
Wikipedia = "สงครามโลกครั้งที่สอง",
topical_categories = true,
}
labels["winter sports"] = {
display = "[[winter sport]]s",
topical_categories = true,
}
labels["wrestling"] = {
display = "[[wrestling#Noun|wrestling]]",
topical_categories = true,
}
labels["writing"] = {
display = "[[writing#Noun|writing]]",
topical_categories = true,
}
labels["Yazidism"] = {
aliases = {"Yezidism"},
display = "[[Yazidism]]",
topical_categories = true,
}
labels["yoga"] = {
display = "[[yoga]]",
topical_categories = true,
}
labels["สัตววิทยา"] = {
aliases = {"zoology"},
display = "[[สัตววิทยา]]",
topical_categories = true,
}
labels["zootomy"] = {
display = "[[zootomy]]",
topical_categories = "Animal body parts",
}
labels["Zoroastrianism"] = {
display = "[[Zoroastrianism]]",
topical_categories = true,
}
-- Labels with set-type categories
-- TODO: These are probably misuses of the label template, and should be deprecated
labels["กรดอะมิโน"] = {
aliases = {"amino acid"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["architectural element"] = {
aliases = {"architectural elements"},
display = "[[architecture]]",
topical_categories = "Architectural elements",
}
labels["งานศิลปะ"] = {
aliases = {"artistic work", "งานศิลป์", "งานศิลปกรรม"},
display = "[[ศิลปะ]]",
topical_categories = "งานศิลปะ",
}
labels["asterism"] = {
display = "[[uranography]]",
topical_categories = "Asterisms",
}
labels["biblical character"] = {
aliases = {"Biblical character", "biblical figure", "Biblical figure"},
display = "[[Bible|biblical]]",
topical_categories = "Biblical characters",
}
labels["bibliography"] = {
display = "[[bibliography]]",
topical_categories = true,
}
labels["bicycle parts"] = {
display = "[[w:List of bicycle parts|cycling]]",
topical_categories = true,
}
labels["book of the bible"] = {
display = "[[Bible|biblical]]",
topical_categories = "Books of the Bible",
}
labels["brass instruments"] = {
aliases = {"brass instrument"},
display = "[[music]]",
topical_categories = true,
}
labels["canid"] = {
display = "[[zoology]]",
topical_categories = "Canids",
}
labels["คาร์โบไฮเดรต"] = {
aliases = {"carbohydrate"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["carboxylic acid"] = {
display = "[[organic chemistry]]",
topical_categories = "Carboxylic acids",
}
labels["โคเอนไซม์"] = {
aliases = {"coenzyme"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["conspiracy theories"] = {
aliases = {"conspiracy theory", "conspiracy"},
display = "[[conspiracy theory#Noun|conspiracy theories]]",
topical_categories = true,
}
labels["constellation"] = {
display = "[[astronomy]]",
topical_categories = "Constellations",
}
labels["cookware"] = {
aliases = {"bakeware"},
display = "[[cooking#Noun|cooking]]",
topical_categories = "Cookware and bakeware",
}
labels["copyright license"] = {
aliases = {"copyright licenses", "license", "copyright licence", "copyright licences", "licence"},
display = "[[w:Copyright license|copyright law]]",
topical_categories = "Copyright licenses",
}
labels["currencies"] = { -- Do not merge with "numismatics", as the category is different.
aliases = {"currency"},
display = "[[numismatics]]",
topical_categories = true,
}
labels["dances"] = {
display = "[[dance#Noun|dance]]",
topical_categories = true,
}
labels["ประชานาม"] = {
aliases = {"demonym"},
display = "[[ประชานาม]]",
topical_categories = true,
}
labels["disease"] = {
aliases = {"diseases"},
display = "[[pathology]]",
topical_categories = "Diseases",
}
labels["E number"] = {
display = "[[food]] [[manufacture]]",
plain_categories = "European food additive numbers",
}
labels["Egyptian god"] = {
display = "[[Egyptian]] [[mythology]]",
topical_categories = "Egyptian deities",
}
-- Compare "systematic element symbol" and "obsolete element symbol"
labels["element symbol"] = {
display = "[[chemistry]]",
plain_categories = "Symbols for chemical elements",
}
labels["เอนไซม์"] = {
aliases = {"enzyme"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["fatty acid"] = {
display = "[[organic chemistry]]",
topical_categories = "Fatty acids",
}
labels["felid"] = {
aliases = {"cat"},
display = "[[zoology]]",
topical_categories = "Felids",
}
labels["ตัวละครในบันเทิงคดี"] = {
aliases = {"fictional character"},
display = "[[บันเทิงคดี]]",
topical_categories = "ตัวละครในบันเทิงคดี",
}
labels["figure of speech"] = {
display = "[[rhetoric]]",
topical_categories = "Figures of speech",
}
labels["fish"] = {
display = "[[zoology]]",
topical_categories = true,
}
labels["เครื่องสวมเท้า"] = {
aliases = {"footwear"},
display = "[[เครื่องสวมเท้า]]",
topical_categories = true,
}
labels["functional group prefix"] = {
display = "[[organic chemistry]]",
topical_categories = "Functional group prefixes",
}
labels["functional group suffix"] = {
display = "[[organic chemistry]]",
topical_categories = "Functional group suffixes",
}
labels["functional programming"] = {
display = "[[functional programming]]",
topical_categories = "การเขียนโปรแกรม",
}
labels["galaxy"] = {
display = "[[astronomy]]",
topical_categories = "Galaxies",
}
labels["genetic disorder"] = {
display = "[[medical]] [[genetics]]",
topical_categories = "Genetic disorders",
}
labels["gender critical"] = {
aliases = {"gender-critical", "gender critical feminism", "gender-critical feminism", "GC", "GCF", "trans-exclusionary radical feminism", "TERF", "TERFism"},
display = "[[gender-critical#Adjective|gender critical]]",
Wikipedia = "Gender-critical feminism",
topical_categories = "Gender-critical feminism",
}
labels["Greek god"] = {
aliases = {"Greek goddess"},
display = "[[Greek]] [[mythology]]",
topical_categories = "Greek deities",
}
labels["hand games"] = {
aliases = {"hand game"},
display = "[[hand]] [[game]]s",
topical_categories = true,
}
labels["heraldic charge"] = {
aliases = {"heraldiccharge"},
display = "[[มุทราศาสตร์]]",
topical_categories = "Heraldic charges",
}
labels["Hindu god"] = {
display = "[[Hinduism]]",
topical_categories = "Hindu deities",
}
labels["historical currencies"] = {
aliases = {"historical currency"},
display = "[[numismatics]]",
sense_categories = "historical",
topical_categories = "Historical currencies",
}
labels["historical period"] = {
aliases = {"historical periods"},
display = "[[history]]",
topical_categories = "Historical periods",
}
labels["ฮอร์โมน"] = {
aliases = {"hormone"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["hydrocarbon chain prefix"] = {
display = "[[organic chemistry]]",
topical_categories = "Hydrocarbon chain prefixes",
}
labels["hydrocarbon chain suffix"] = {
display = "[[organic chemistry]]",
topical_categories = "Hydrocarbon chain suffixes",
}
labels["incoterm"] = {
display = "[[Incoterm]]",
topical_categories = "Incoterms",
}
labels["inorganic compound"] = {
display = "[[inorganic chemistry]]",
topical_categories = "Inorganic compounds",
}
labels["isotope"] = {
display = "[[physics]]",
topical_categories = "Isotopes",
}
labels["labour law"] = {
display = "[[labour law]]",
topical_categories = "Law",
}
labels["ธรณีสัณฐาน"] = {
aliases = {"landform", "landforms"},
display = "[[ภูมิศาสตร์]]",
topical_categories = true,
}
labels["logical fallacy"] = {
display = "[[rhetoric]]",
topical_categories = "Logical fallacies",
}
labels["lutherie"] = {
display = "[[lutherie]]",
topical_categories = true,
}
labels["Mesopotamian god"] = {
display = "[[Mesopotamian]] [[mythology]]",
topical_categories = "Mesopotamian deities",
}
labels["metamaterial"] = {
display = "[[physics]]",
topical_categories = "Metamaterials",
}
labels["military ranks"] = {
aliases = {"military rank"},
display = "[[military]]",
topical_categories = true,
}
labels["military unit"] = {
display = "[[military]]",
topical_categories = "Military units",
}
labels["แร่"] = {
aliases = {"mineral"},
display = "[[วิทยาแร่]]",
topical_categories = "แร่",
}
labels["mobile phones"] = {
aliases = {"cell phone", "cell phones", "mobile phone", "mobile telephony"},
display = "[[mobile telephone|mobile telephony]]",
topical_categories = true,
}
labels["muscle"] = {
display = "[[anatomy]]",
topical_categories = "Muscles",
}
labels["mushroom"] = {
aliases = {"mushrooms"},
display = "[[mycology]]",
topical_categories = "Mushrooms",
}
labels["เครื่องดนตรี"] = {
aliases = {"musical instruments", "musical instrument"},
display = "[[ดนตรี]]",
topical_categories = true,
}
labels["ประเภทดนตรี"] = {
aliases = {"music genre"},
display = "[[ดนตรี]]",
topical_categories = "ประเภทดนตรี",
}
labels["musician"] = {
display = "[[music]]",
topical_categories = "Musicians",
}
labels["mysticism"] = {
display = "[[mysticism]]",
topical_categories = true,
}
labels["mythological creature"] = {
aliases = {"mythological creatures"},
display = "[[mythology]]",
topical_categories = "Mythological creatures",
}
labels["neurotoxin"] = {
display = "[[neurotoxicology]]",
topical_categories = "Neurotoxins",
}
labels["สารสื่อประสาท"] = {
aliases = {"neurotransmitter"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["obsolete element symbol"] = {
display = "[[chemistry]], [[obsolete]]",
plain_categories = "Obsolete symbols for chemical elements",
}
labels["organic compound"] = {
display = "[[organic chemistry]]",
topical_categories = "Organic compounds",
}
labels["part of speech"] = {
display = "[[grammar]]",
topical_categories = "Parts of speech",
}
labels["particle"] = {
display = "[[physics]]",
topical_categories = "Subatomic particles",
}
labels["percussion instruments"] = {
aliases = {"percussion instrument"},
display = "[[music]]",
topical_categories = true,
}
labels["pharmaceutical drug"] = {
display = "[[pharmacology]]",
topical_categories = "Pharmaceutical drugs",
}
labels["pharmaceutical effect"] = {
display = "[[pharmacology]]",
topical_categories = "Pharmaceutical effects",
}
labels["พืช"] = {
aliases = {"plant"},
display = "[[พฤกษศาสตร์]]",
topical_categories = true,
}
labels["plant disease"] = {
display = "[[phytopathology]]",
topical_categories = "Plant diseases",
}
labels["พิษ"] = {
aliases = {"poison", "poisons"},
display = "[[พิษ]]",
topical_categories = true,
}
labels["political subdivision"] = {
display = "[[government]]",
topical_categories = "Political subdivisions",
}
labels["โปรตีน"] = {
aliases = {"protein", "proteins"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["rock"] = {
display = "[[petrology]]",
topical_categories = "Rocks",
}
labels["Roman god"] = {
aliases = {"Roman goddess"},
display = "[[Roman]] [[mythology]]",
topical_categories = "Roman deities",
}
labels["schools"] = {
display = "[[education]]",
topical_categories = true,
}
labels["self-harm"] = {
aliases = {"selfharm", "self harm", "self-harm community"},
display = "[[self-harm]]",
topical_categories = true,
}
labels["SEO"] = {
display = "[[search engine optimization|SEO]]",
topical_categories = {"อินเทอร์เน็ต", "การตลาด"},
}
labels["skeleton"] = {
display = "[[anatomy]]",
topical_categories = true,
}
labels["standard of identity"] = {
display = "[[standard of identity|standards of identity]]",
topical_categories = "Standards of identity",
}
labels["star"] = {
display = "[[astronomy]]",
topical_categories = "Stars",
}
labels["สเตอรอยด์"] = {
aliases = {"steroid", "สเตียรอยด์"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["ฮอร์โมนสเตอรอยด์"] = {
aliases = {"steroid hormone", "steroid drug", "ฮอร์โมนสเตียรอยด์", "ยาสเตอรอยด์", "ยาสเตียรอยด์"},
display = "[[ชีวเคมี]], [[สเตอรอยด์]]",
topical_categories = "ฮอร์โมน",
}
labels["string instruments"] = {
aliases = {"string instrument"},
display = "[[music]]",
topical_categories = true,
}
labels["surface feature"] = {
display = "[[วิทยาดาวเคราะห์]]",
topical_categories = "Planetary nomenclature",
}
labels["sugar acid"] = {
display = "[[organic chemistry]]",
topical_categories = "Sugar acids",
}
labels["symptom"] = {
display = "[[medicine]]",
topical_categories = "Medical signs and symptoms",
}
labels["systematic element symbol"] = {
display = "[[chemistry]]",
plain_categories = "Systematic chemical symbols",
}
labels["taxonomic name"] = {
display = "[[taxonomy]]",
topical_categories = "Taxonomic names",
}
labels["tincture"] = {
display = "[[มุทราศาสตร์]]",
topical_categories = "Heraldic tinctures",
}
labels["veterinary disease"] = {
display = "[[veterinary medicine]]",
topical_categories = "Veterinary diseases",
}
labels["ประเภทวิดีโอเกม"] = {
aliases = {"video game genre"},
display = "[[วิดีโอเกม]]",
topical_categories = "ประเภทวิดีโอเกม",
}
labels["วิตามิน"] = {
aliases = {"vitamin", "ไวตามิน"},
display = "[[ชีวเคมี]]",
topical_categories = true,
}
labels["นาวายาน"] = {
aliases = {"เรือ", "watercraft"},
display = "[[การเดินเรือ]]",
topical_categories = true,
}
labels["weaponry"] = {
aliases = {"weapon", "weapons"},
display = "[[weaponry]]",
topical_categories = "Weapons",
}
labels["Wicca"] = {
display = "[[Wicca]]",
topical_categories = true,
}
labels["wiki jargon"] = {
aliases = {"wiki"},
display = "[[wiki]] [[jargon]]",
topical_categories = "Wiki",
}
labels["Wikimedia jargon"] = {
aliases = {"WMF", "WMF jargon", "Wiktionary", "Wiktionary jargon", "Wikipedia", "Wikipedia jargon"},
display = "[[w:Wikimedia Foundation|Wikimedia]] [[jargon]]",
topical_categories = "Wikimedia",
}
labels["wind instruments"] = {
aliases = {"wind instrument"},
display = "[[music]]",
topical_categories = true,
}
labels["woodwind instruments"] = {
aliases = {"woodwind instrument"},
display = "[[music]]",
topical_categories = true,
}
labels["xiangqi"] = {
aliases = {"Chinese chess"},
display = "[[xiangqi]]",
topical_categories = true,
}
labels["yoga pose"] = {
aliases = {"asana"},
display = "[[yoga]]",
topical_categories = "Yoga poses",
}
labels["zodiac constellations"] = {
display = "[[astronomy]]",
topical_categories = "Constellations in the zodiac",
}
-- Deprecated/do not use warning (ambiguous, unsuitable etc)
labels["deprecated label"] = {
aliases = {"emergency", "greekmyth", "industry", "morphology", "musici", "quantum", "vector"},
display = "<span style=\"color:red;\"><b>deprecated label</b></span>",
deprecated = true,
}
return require("Module:labels").finalize_data(labels)
h6hit2qko316ahvbgzm5qqqzfyqx1n1
-in
0
268070
5720844
1650842
2026-04-21T17:12:43Z
Ponpan
693
/* ภาษาเยอรมัน */
5720844
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== รากศัพท์ 1 ===
{{inh+|de|gmh|-inne}}, {{m|gmh|-in}}, จาก{{inh|de|goh|-inna}}, จาก{{inh|got|gem-pro|*-injō}}; ร่วมเชื้อสายกับ{{cog|nl|-in}}, {{cog|sv|-inna}}
==== รูปแบบอื่น ====
* {{alter|de|-inn|-inne||เลิกใช้ทั้งสองแบบ}}
==== การออกเสียง ====
* {{IPA|de|/ɪn/|[ɪn]}}
* {{audio|de|De--in.ogg}}
==== ปัจจัย ====
{{de-noun|f}}
# {{non-gloss definition|ทำให้คำนามเกี่ยวกับสิ่งมีชีวิตเป็นเพศหญิง; คำพยางค์เดียวมักเติม[[อุมเลาท์]] (umlaut) เข้าไป ส่วนคำหลายพยางค์พบการเติมอุมเลาท์น้อยมาก}}
#: {{suffixusex|de|Autor|t1=นักเขียน|Autorin|t2=นักเขียนหญิง}}
#: {{suffixusex|de|Gott|t1=เทพ|Göttin|t2=เทพธิดา}}
#: {{suffixusex|de|Hund|t1=สุนัข|Hündin|t2=สุนัขตัวเมีย}}
#: {{suffixusex|de|Katze|t1=แมว|Kätzin|t2=แมวตัวเมีย}}
#: {{suffixusex|de|Sänger|t1=นักร้อง|Sängerin|t2=นักร้องหญิง}}
#: {{suffixusex|de|Pastor|t1=[[w:ศิษยาภิบาล|ศิษยาภิบาล]]|Pastorin|t2=ศิษยาภิบาลหญิง}}
# {{lb|de|dated}} {{non-gloss definition|เรียกภรรยาของบุคคลนั้น}}
#: {{suffixusex|de|Pastor|t1=ศิษยาภิบาล|Pastorin|t2=ภรรยาของศิษยาภิบาล}}
# {{lb|de|dated}} {{non-gloss definition|เรียกภรรยาหรือลูกสาวตามชื่อบุคคลนั้น}}
#: {{m|de|Schwarz|pos=ชื่อบุคคล}} → {{l|de|Schwarzin}} (''บุคคลเพศหญิงที่มีชื่อ ''Schwarz'' ซึ่งหมายถึงเป็นภรรยาหรือลูกสาวของบุคคลที่ชื่อ ''Schwarz''<nowiki />'')
===== การผันรูป =====
{{de-ndecl|f}}
===== คำสืบทอด =====
* {{desc|eo|-ino|bor=1}}
=== รากศัพท์ 2 ===
{{etymid|de|chemistry}}
จาก{{der|de|la|-īnus}}, จาก{{der|de|grc|-ινος}}
==== การออกเสียง ====
* {{IPA|de|/-ˈiːn/}}
* {{audio|de|De--in2.ogg}}
==== ปัจจัย ====
{{de-noun|n}}
# {{lb|de|เคมี}} [[-yne]] (-ไอน์); [[-ine]] (-อีน)
#: {{uxi|de|[[Alkin]]|[[แอลไคน์]] ([[alkyne]])}}
#: {{uxi|de|[[Koffein]]|[[กาเฟอีน]] ([[caffeine]])}}
===== การผันรูป =====
{{de-ndecl|n}}
axsg57wjd9t5ngn9gtapggioc31qdqj
ބަތް ގޯނބިލި
0
284222
5720830
1365623
2026-04-21T15:03:05Z
Ziv
18038
([[c:GR|GR]]) [[File:Acaciafarnesiana1web.jpg]] → [[File:Starr 030202-0020 Acacia farnesiana.jpg]] → File replacement: changing the name of a duplicate file ([[c:c:GR]])
5720830
wikitext
text/x-wiki
== ภาษามัลดีฟส์ ==
[[ไฟล์:Starr 030202-0020 Acacia farnesiana.jpg|thumb|270px|ބަތް ގޯނބިލި]]
=== คำนาม ===
{{dv-noun}}
# [[คำใต้]] กระถินเทศ หรือกระถินหอม (ไม้ต้นขนาดเล็กชนิด {{species|Vachellia farnesiana}})
{{topics|dv|พืช}}
dnb8hkw481eigw9iysdkibpxf8l1nn2
точка
0
307384
5720991
2021185
2026-04-22T11:50:05Z
OctraBot
3198
5720991
wikitext
text/x-wiki
== ภาษาบัลแกเรีย ==
=== รากศัพท์ ===
{{bor+|bg|ru|то́чка}}
=== การออกเสียง ===
* {{bg-IPA|то́чка}}
=== คำนาม ===
{{bg-noun|то́чка|f|adj=то́чков|dim=то́чица}}
# [[จุด]]
# {{lb|bg|คณิตศาสตร์}} [[จุด]]
# {{lb|bg|also|_|figuratively}} [[จุด]], [[สถานที่]], [[ตำแหน่ง]]
#: {{uxi|bg|[[изходен|и́зходна]] '''то́чка'''|'''จุด'''[[เริ่ม]]}}
#: {{uxi|bg|'''то́чка''' [[на]] [[кипе́не]]|'''จุด'''[[เดือด]]}}
# [[มหัพภาค]] {{gloss|เครื่องหมายวรรคตอน (หัวข้อ)}}
# [[รายการ]] {{i|เช่นในบัญชี}}
==== การผันรูป ====
{{bg-ndecl|то́чка<>}}
{{topics|bg|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษามาซิโดเนีย ==
=== การออกเสียง ===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-{{PAGENAME}}.wav|เสียง}}
=== คำนาม ===
{{mk-noun|f}}
# [[จุด]]
# [[มหัพภาค]]
==== การผันรูป ====
{{mk-decl-noun-f|точк}}
=== คำกริยา ===
'''точка''' (<span lang="mk-Latn" class="headword-tr tr Latn">točka</span>) ''{{Abbr|impf|imperfective aspect}}'' (''perfective'' '''[[источка]]''')
# {{lb|mk|transitive}} ใส่จุด
==== การผันคำกริยา ====
{{mk-conj-а|impf|точк}}
{{topics|mk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษายูเครน ==
=== การออกเสียง ===
* {{uk-IPA|то́чка}}
* {{audio|uk|Uk-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{uk-noun|то́чка<*>}}
# [[มหัพภาค]]
# [[จุด]]
==== การผันรูป ====
{{uk-ndecl|то́чка<*>}}
=== อ้างอิง ===
* {{R:uk:SUM-11}}
{{topics|uk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษารัสเซีย ==
=== รากศัพท์ ===
จาก {{der|ru|sla-pro|*tъčьka}}. สัมพันธ์กับ {{cog|lt|taškas}}
=== การออกเสียง ===
* {{ru-IPA|то́чка}}
* {{audio|ru|Ru-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{ru-noun+|то́чка|*|adj=то́чечный}}
# [[มหัพภาค]]
# [[จุด]]
#: {{uxi|ru|'''то́чка''' [[прикосновение|прикоснове́ния]]|'''จุด'''สัมผัส}}
# [[จุด]] (สำหรับ[[รหัสมอร์ส]]; ภาษาปาก [[dit]])
#* <small>{{ตย|'''1972''', “Мой адрес - Советский Союз”:<br>[[вы|Вы]], '''то́чки'''-тире́ телегра́фные, ищи́те на стро́йках меня́.<br>Vy, tóčki-tirɛ́ telegráfnyje, iščíte na strójkax menjá.<br>'''จุด'''และขีดในโทรเลข, (คุณ) ตามหาฉันในที่ก่อสร้าง}}</small>
==== การผันรูป ====
{{ru-noun-table|то́чка|*}}
==== คำที่เกี่ยวข้อง ====
{{rel3|ru
|то́чечный
|то́чно
|то́чность
|то́чный
|точь}}
==== คำสืบทอด ====
* {{desc|izh|tocka|bor=1}}
* {{desc|ja|トーチカ|tr=tōchika|bor=1}}
* {{desc|ko|토치카|bor=1}}
* {{desc|sh|tȍčka|bor=1}}/{{l|sh|та̏чка}}
==== ดูเพิ่ม ====
* {{l|ru|тире́}}
* {{l|ru|то́чка с запято́й}}
=== คำอุทาน ===
{{head|ru|interjection|head=то́чка!}}
# [[พอแล้ว]]!
{{topics|ru|เครื่องหมายวรรคตอน (หัวข้อ)}}
b85qa5jm90916a7ra0dn5czef2yznpz
5720992
5720991
2026-04-22T11:50:16Z
OctraBot
3198
/* คำนาม */
5720992
wikitext
text/x-wiki
== ภาษาบัลแกเรีย ==
=== รากศัพท์ ===
{{bor+|bg|ru|то́чка}}
=== การออกเสียง ===
* {{bg-IPA|то́чка}}
=== คำนาม ===
{{bg-noun|то́чка|f|adj=то́чков|dim=то́чица}}
# [[จุด]]
# {{lb|bg|คณิตศาสตร์}} [[จุด]]
# {{lb|bg|also|_|figuratively}} [[จุด]], [[สถานที่]], [[ตำแหน่ง]]
#: {{uxi|bg|[[изходен|и́зходна]] '''то́чка'''|'''จุด'''[[เริ่ม]]}}
#: {{uxi|bg|'''то́чка''' [[на]] [[кипе́не]]|'''จุด'''[[เดือด]]}}
# [[มหัพภาค]] {{gloss|เครื่องหมายวรรคตอน}}
# [[รายการ]] {{i|เช่นในบัญชี}}
==== การผันรูป ====
{{bg-ndecl|то́чка<>}}
{{topics|bg|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษามาซิโดเนีย ==
=== การออกเสียง ===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-{{PAGENAME}}.wav|เสียง}}
=== คำนาม ===
{{mk-noun|f}}
# [[จุด]]
# [[มหัพภาค]]
==== การผันรูป ====
{{mk-decl-noun-f|точк}}
=== คำกริยา ===
'''точка''' (<span lang="mk-Latn" class="headword-tr tr Latn">točka</span>) ''{{Abbr|impf|imperfective aspect}}'' (''perfective'' '''[[источка]]''')
# {{lb|mk|transitive}} ใส่จุด
==== การผันคำกริยา ====
{{mk-conj-а|impf|точк}}
{{topics|mk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษายูเครน ==
=== การออกเสียง ===
* {{uk-IPA|то́чка}}
* {{audio|uk|Uk-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{uk-noun|то́чка<*>}}
# [[มหัพภาค]]
# [[จุด]]
==== การผันรูป ====
{{uk-ndecl|то́чка<*>}}
=== อ้างอิง ===
* {{R:uk:SUM-11}}
{{topics|uk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษารัสเซีย ==
=== รากศัพท์ ===
จาก {{der|ru|sla-pro|*tъčьka}}. สัมพันธ์กับ {{cog|lt|taškas}}
=== การออกเสียง ===
* {{ru-IPA|то́чка}}
* {{audio|ru|Ru-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{ru-noun+|то́чка|*|adj=то́чечный}}
# [[มหัพภาค]]
# [[จุด]]
#: {{uxi|ru|'''то́чка''' [[прикосновение|прикоснове́ния]]|'''จุด'''สัมผัส}}
# [[จุด]] (สำหรับ[[รหัสมอร์ส]]; ภาษาปาก [[dit]])
#* <small>{{ตย|'''1972''', “Мой адрес - Советский Союз”:<br>[[вы|Вы]], '''то́чки'''-тире́ телегра́фные, ищи́те на стро́йках меня́.<br>Vy, tóčki-tirɛ́ telegráfnyje, iščíte na strójkax menjá.<br>'''จุด'''และขีดในโทรเลข, (คุณ) ตามหาฉันในที่ก่อสร้าง}}</small>
==== การผันรูป ====
{{ru-noun-table|то́чка|*}}
==== คำที่เกี่ยวข้อง ====
{{rel3|ru
|то́чечный
|то́чно
|то́чность
|то́чный
|точь}}
==== คำสืบทอด ====
* {{desc|izh|tocka|bor=1}}
* {{desc|ja|トーチカ|tr=tōchika|bor=1}}
* {{desc|ko|토치카|bor=1}}
* {{desc|sh|tȍčka|bor=1}}/{{l|sh|та̏чка}}
==== ดูเพิ่ม ====
* {{l|ru|тире́}}
* {{l|ru|то́чка с запято́й}}
=== คำอุทาน ===
{{head|ru|interjection|head=то́чка!}}
# [[พอแล้ว]]!
{{topics|ru|เครื่องหมายวรรคตอน (หัวข้อ)}}
otlwheucata4ca9c9laelm2i5uj5fol
5720993
5720992
2026-04-22T11:50:34Z
OctraBot
3198
/* คำอุทาน */
5720993
wikitext
text/x-wiki
== ภาษาบัลแกเรีย ==
=== รากศัพท์ ===
{{bor+|bg|ru|то́чка}}
=== การออกเสียง ===
* {{bg-IPA|то́чка}}
=== คำนาม ===
{{bg-noun|то́чка|f|adj=то́чков|dim=то́чица}}
# [[จุด]]
# {{lb|bg|คณิตศาสตร์}} [[จุด]]
# {{lb|bg|also|_|figuratively}} [[จุด]], [[สถานที่]], [[ตำแหน่ง]]
#: {{uxi|bg|[[изходен|и́зходна]] '''то́чка'''|'''จุด'''[[เริ่ม]]}}
#: {{uxi|bg|'''то́чка''' [[на]] [[кипе́не]]|'''จุด'''[[เดือด]]}}
# [[มหัพภาค]] {{gloss|เครื่องหมายวรรคตอน}}
# [[รายการ]] {{i|เช่นในบัญชี}}
==== การผันรูป ====
{{bg-ndecl|то́чка<>}}
{{topics|bg|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษามาซิโดเนีย ==
=== การออกเสียง ===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-{{PAGENAME}}.wav|เสียง}}
=== คำนาม ===
{{mk-noun|f}}
# [[จุด]]
# [[มหัพภาค]]
==== การผันรูป ====
{{mk-decl-noun-f|точк}}
=== คำกริยา ===
'''точка''' (<span lang="mk-Latn" class="headword-tr tr Latn">točka</span>) ''{{Abbr|impf|imperfective aspect}}'' (''perfective'' '''[[источка]]''')
# {{lb|mk|transitive}} ใส่จุด
==== การผันคำกริยา ====
{{mk-conj-а|impf|точк}}
{{topics|mk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษายูเครน ==
=== การออกเสียง ===
* {{uk-IPA|то́чка}}
* {{audio|uk|Uk-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{uk-noun|то́чка<*>}}
# [[มหัพภาค]]
# [[จุด]]
==== การผันรูป ====
{{uk-ndecl|то́чка<*>}}
=== อ้างอิง ===
* {{R:uk:SUM-11}}
{{topics|uk|เครื่องหมายวรรคตอน (หัวข้อ)}}
== ภาษารัสเซีย ==
=== รากศัพท์ ===
จาก {{der|ru|sla-pro|*tъčьka}}. สัมพันธ์กับ {{cog|lt|taškas}}
=== การออกเสียง ===
* {{ru-IPA|то́чка}}
* {{audio|ru|Ru-{{PAGENAME}}.ogg|เสียง}}
=== คำนาม ===
{{ru-noun+|то́чка|*|adj=то́чечный}}
# [[มหัพภาค]]
# [[จุด]]
#: {{uxi|ru|'''то́чка''' [[прикосновение|прикоснове́ния]]|'''จุด'''สัมผัส}}
# [[จุด]] (สำหรับ[[รหัสมอร์ส]]; ภาษาปาก [[dit]])
#* <small>{{ตย|'''1972''', “Мой адрес - Советский Союз”:<br>[[вы|Вы]], '''то́чки'''-тире́ телегра́фные, ищи́те на стро́йках меня́.<br>Vy, tóčki-tirɛ́ telegráfnyje, iščíte na strójkax menjá.<br>'''จุด'''และขีดในโทรเลข, (คุณ) ตามหาฉันในที่ก่อสร้าง}}</small>
==== การผันรูป ====
{{ru-noun-table|то́чка|*}}
==== คำที่เกี่ยวข้อง ====
{{rel3|ru
|то́чечный
|то́чно
|то́чность
|то́чный
|точь}}
==== คำสืบทอด ====
* {{desc|izh|tocka|bor=1}}
* {{desc|ja|トーチカ|tr=tōchika|bor=1}}
* {{desc|ko|토치카|bor=1}}
* {{desc|sh|tȍčka|bor=1}}/{{l|sh|та̏чка}}
==== ดูเพิ่ม ====
* {{l|ru|тире́}}
* {{l|ru|то́чка с запято́й}}
=== คำอุทาน ===
{{head|ru|คำอุทาน|head=то́чка!}}
# [[พอแล้ว]]!
{{topics|ru|เครื่องหมายวรรคตอน (หัวข้อ)}}
j2wuh0ncd20gv9upuw6l3vu88hb0yfu
номинатив
0
1726777
5720995
5687724
2026-04-22T11:51:50Z
OctraBot
3198
5720995
wikitext
text/x-wiki
== ภาษาเซอร์โบ-โครเอเชีย ==
=== คำนาม ===
{{sh-noun|но̏минатӣв|m}}
# {{lb|sh|grammar}} [[กรรตุการก]]
==== การผันรูป ====
{{sh-decl-noun
|номинатив|номинативи
|номинатива|номинатива
|номинативу|номинативима
|номинатив|номинативе
|номинативе|номинативи
|номинативу|номинативима
|номинативом|номинативима
}}
==== คำพ้องความ ====
* {{sense|nominative}} {{l|sh|пр̀ви па́деж}}
{{C|sh|การก}}
== ภาษามาซิโดเนีย ==
=== การออกเสียง ===
* {{mk-IPA|номинати́в}}
* {{rhymes|mk|if|s=4}}
=== คำนาม ===
{{mk-noun|m|adj=номинативен}}
# {{lb|mk|grammar}} [[กรรตุการก]]
==== การผันรูป ====
{{mk-decl-noun-m|n=sg}}
{{C|mk|การก}}
== ภาษารัสเซีย ==
=== การออกเสียง ===
* {{ru-IPA|номинати́в}}
=== คำนาม ===
{{ru-noun+|номинати́в}}
# {{lb|ru|grammar}} [[กรรตุการก]]
#: {{syn|ru|имени́тельный паде́ж}}
==== การผันรูป ====
{{ru-noun-table|номинати́в}}
{{C|ru|การก}}
3haflcoe69m1tpfvtxk6yu9o113r63m
มอดูล:place/placetypes
828
2297280
5720871
5720709
2026-04-22T02:34:47Z
OctraBot
3198
5720871
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"
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)]] 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)]] 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 == "และ" or placetype == "หรือ" 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="แม่น้ำ"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="แม่น้ำ"},
}}
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 `"ดินแดน"`
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"]] "" -- th doesn't use article
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = --[[require(en_utilities_module).get_indefinite_article(placetype)]] "" -- th doesn't use article
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 `"ใน"` 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 "ใน"
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 "ประเทศ" 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)]] 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 "ประเทศ", "รัฐ",
"จังหวัด" 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", "อำเภอ" 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"] = "ประเทศ",
["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"] = "เทศมณฑล",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "ทวีป",
["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"] = "อำเภอ",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "จักรวรรดิ",
["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"] = "เกาะ",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "มหานคร",
["metmun"] = "metropolitan municipality",
["mtn"] = "ภูเขา",
["mun"] = "เทศบาล",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "จังหวัด",
["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"] = "จังหวัด",
["r"] = "ภูมิภาค",
["range"] = "เทือกเขา",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "แม่น้ำ",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "รัฐ",
["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"] = "ดินแดน",
["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",
}
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",
["ประเทศ"] = "เมืองหลวงของประเทศ",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["เทศมณฑล"] = "เมืองหลวงของเทศมณฑล",
["department"] = "departmental capitals",
["อำเภอ"] = "เมืองหลวงของอำเภอ",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["มหานคร"] = "เมืองหลวงของมหานคร",
["เทศบาล"] = "เมืองหลวงของเทศบาล",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["จังหวัด"] = "เมืองหลวงของจังหวัด",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["ภูมิภาค"] = "เมืองหลวงของภูมิภาค",
["regional unit"] = "regional unit capitals",
["republic"] = "republic 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",
},
["ประเทศ"] = {
["Holy Roman Empire"] = "the",
},
["จักรวรรดิ"] = {
["Holy Roman Empire"] = "the",
},
["เกาะ"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["ภูมิภาค"] = {
["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 of "},
["ประเทศ"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["ภูมิภาค"] = {" [Rr]egion$"},
["แม่น้ำ"] = {" River$"},
["local government area"] = {"^Shire of "},
["เทศมณฑล"] = {"^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 = {
["ภูมิภาค"] = {
["Eastern Europe"] = {"continent/ยุโรป"},
["Central Europe"] = {"continent/ยุโรป"},
["Western Europe"] = {"continent/ยุโรป"},
["South Europe"] = {"continent/ยุโรป"},
["Southern Europe"] = {"continent/ยุโรป"},
["Northern Europe"] = {"continent/ยุโรป"},
["Northeast Europe"] = {"continent/ยุโรป"},
["Northeastern Europe"] = {"continent/ยุโรป"},
["Southeast Europe"] = {"continent/ยุโรป"},
["Southeastern Europe"] = {"continent/ยุโรป"},
["North Caucasus"] = {"continent/ยุโรป"},
["South Caucasus"] = {"continent/เอเชีย"},
["South Asia"] = {"continent/เอเชีย"},
["Southern Asia"] = {"continent/เอเชีย"},
["East Asia"] = {"continent/เอเชีย"},
["Eastern Asia"] = {"continent/เอเชีย"},
["Central Asia"] = {"continent/เอเชีย"},
["West Asia"] = {"continent/เอเชีย"},
["Western Asia"] = {"continent/เอเชีย"},
["Southeast Asia"] = {"continent/เอเชีย"},
["North Asia"] = {"continent/เอเชีย"},
["Northern Asia"] = {"continent/เอเชีย"},
["Anatolia"] = {"continent/เอเชีย"},
["Asia Minor"] = {"continent/เอเชีย"},
["Mesopotamia"] = {"continent/เอเชีย"},
["North Africa"] = {"continent/แอฟริกา"},
["Central Africa"] = {"continent/แอฟริกา"},
["West Africa"] = {"continent/แอฟริกา"},
["East Africa"] = {"continent/แอฟริกา"},
["Southern Africa"] = {"continent/แอฟริกา"},
["Central America"] = {"continent/อเมริกากลาง"},
["Caribbean"] = {"continent/อเมริกาเหนือ"},
["Polynesia"] = {"continent/โอเชียเนีย"},
["Micronesia"] = {"continent/โอเชียเนีย"},
["Melanesia"] = {"continent/โอเชียเนีย"},
["Siberia"] = {"country/รัสเซีย", "continent/เอเชีย"},
["Russian Far East"] = {"country/รัสเซีย", "continent/เอเชีย"},
["South Wales"] = {"constituent country/เวลส์", "continent/ยุโรป"},
["Balkans"] = {"continent/ยุโรป"},
["West Bank"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza Strip"] = {"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
-- Categorize both in key, and in the larger polity that the key is part of, e.g. [[Hirakata]] goes in both
-- "Cities in Osaka Prefecture" and "Cities in Japan". (But don't do the latter if no_container_cat is set.)
local cap_plural_entry_placetype = ucfirst(plural_entry_placetype)
local retcats = {("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(key, spec))} --th
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, ("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(container.key, container.spec))) --th
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 = "นคร",
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').
local capital_cat = export.placetype_to_capital_cat[holonym_placetype]
if not capital_cat then
capital_cat = export.placetype_to_capital_cat[holonym_placetype:gsub("^.* ", "")]
end
if capital_cat then
capital_cat = ucfirst(capital_cat)
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
insert(retcats, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(key, spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, capital_cat)
end
else
-- We didn't recognize the holonym placetype; just put in 'Capital cities'.
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:สถานที่ในMerseyside, England]] (and
[[:Category:en:สถานที่ใน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:สถานที่ในBoston]], along with [[:Category:en:สถานที่ในMassachusetts, USA]] and
[[:Category:en:สถานที่ใน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
insert(retcats, ("สถานที่ใน%s"):format(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:สถานที่ในOsaka Prefecture, Japan]] and [[Category:สถานที่ใน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 "ของ"
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
local retcats = {}
for _, pt_cat in ipairs(cat_as) do
if type(pt_cat) == "string" then
pt_cat = {type = pt_cat}
end
local pt_prep = pt_cat.prep or prep
insert(retcats, ucfirst(pt_cat.type) .. pt_prep .. export.get_prefixed_key(key, spec)) --th
end
return retcats
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.title.getCurrentTitle().subpageText)
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 "ใน" not "ของ", 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 "ของ" or "ใน") ..
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("เทศมณฑล", 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("เทศมณฑล", 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("เทศมณฑล", 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 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.iran_provinces[unlinked_placename .. ", Iran"] or
m_locations.laos_provinces[unlinked_placename .. ", Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. ", North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. ", South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. ", ไทย"] or
m_locations.turkey_provinces[unlinked_placename .. ", Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. ", เวียดนาม"] then
return suffix_display_handler("จังหวัด", 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("รัฐ", 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
`สถานที่ใน``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 = "ของ"`, 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 `"ใน"`.
* `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 = "ภูมิภาค"`.
* `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 "เทศมณฑล" 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 = "ของ",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["administrative center"] = {
link = "w",
fallback = "เมืองหลวงที่ไม่ใช่นคร",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["administrative district"] = {
link = "w",
fallback = "อำเภอ",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "ของ",
suffix = "ภูมิภาค", -- but prefix is still "administrative region (of)"
fallback = "ภูมิภาค",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "ของ",
suffix = "ดินแดน", -- but prefix is still "administrative territory (of)"
fallback = "ดินแดน",
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 = "ของ",
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 = "เกาะ",
},
["area"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "natural feature",
default = {"ทะเล"},
},
["arrondissement"] = {
link = true,
preposition = "ของ",
-- 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 = "จังหวัด",
},
["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 = "เกาะ",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "ของ",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "ของ",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "จังหวัด",
},
["autonomous region"] = {
link = "w",
preposition = "ของ",
fallback = "administrative region",
-- "administrative region" sets an affix of "ภูมิภาค" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "องค์การทางการเมือง",
},
["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 = "ทะเลสาบ",
},
["bay"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = {"ธรณีสัณฐาน", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "ของ",
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 = "ของ",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"Named bridges"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"Named buildings"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["canton"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "เมืองหลวง",
},
["เมืองหลวง"] = {
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 = "ของ",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "นคร",
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 = "นคร",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "เมืองหลวง",
},
["captaincy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "นคร",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "นคร",
},
["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 = "ของ",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "เมือง",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "ของ",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "เทศมณฑล",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "เกาะ",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["นคร"] = {
link = true,
generic_before_non_cities = "ใน",
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/*"] = {"City-states", "นครใน+++", "ประเทศใน+++", "เมืองหลวงของ"},
default = {"City-states", "นคร", "ประเทศ", "เมืองหลวงของประเทศ"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["coal city"] = {
link = "+w:coal town",
fallback = "นคร",
},
["coal town"] = {
link = "w",
fallback = "เมือง",
},
["collectivity"] = {
link = "w",
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "ของ",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "เทศบาล",
},
["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 = "เทศบาล",
},
["condominium"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "ของ",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "ของ",
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",
},
["ทวีป"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"Continents and continental regions"},
},
["continental region"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "ทวีป",
},
["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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["ประเทศ"] = {
link = true,
class = "polity", --ห้ามแปล class
["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", --ห้ามแปล class
},
["เทศมณฑล"] = {
link = true,
preposition = "ของ",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "ของ",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
fallback = "เมือง",
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 = "นคร",
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 = "ทะเลสาบ",
},
["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 = "ของ",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "ของ",
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 = "เทศบาล",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "เทศบาล",
},
["distributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["อำเภอ"] = {
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "ของ",
affix_type = "suf",
no_affix_strings = {"อำเภอ", "เทศบาล"},
fallback = "เทศบาล",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dome"] = {
link = true,
fallback = "ภูเขา",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["emirate"] = {
link = true,
preposition = "ของ",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "องค์การทางการเมือง",
},
["จักรวรรดิ"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["enclave"] = {
link = true,
preposition = "ของ",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "ของ",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "ภูเขา",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "ของ",
-- 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"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
},
["federal district"] = {
link = true,
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "ดินแดน",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "ของ",
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 = "ของ",
preposition = "ของ",
class = "geographic region",
bare_category_parent = "สถานที่",
["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 = "ของ",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "ของ",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "ของ",
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 = "ของ",
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 = "นคร",
},
["harbor town"] = {
link = "separately",
fallback = "เมือง",
},
["harbour city"] = {
link = "separately",
fallback = "นคร",
},
["harbour town"] = {
link = "separately",
fallback = "เมือง",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
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 = {"ธรณีสัณฐาน"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "เมือง",
},
["hill town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "นคร",
},
["home rule municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "นคร",
},
["independent town"] = {
link = "+independent city",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "ทะเล",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["เกาะ"] = {
link = true,
preposition = "ของ",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "ประเทศ",
},
["island group"] = {
link = "separately",
fallback = "เกาะ",
},
["island municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["islet"] = {
link = "w",
fallback = "เกาะ",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["khanate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
class = "subpolity",
},
["ทะเลสาบ"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["ธรณีสัณฐาน!"] = {
category_link = "[[ธรณีสัณฐาน]]",
bare_category_parent = "สถานที่",
addl_bare_category_parents = {"โลก"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "นคร",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["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 = "ของ",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "ของ",
fallback = "เทศบาล",
},
["local government district"] = {
link = "w",
preposition = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "ภูมิภาค",
},
["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 = "สถานที่",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "ของ",
fallback = "ทะเล",
},
["market city"] = {
link = "+market town",
fallback = "นคร",
},
["market town"] = {
link = true,
fallback = "เมือง",
},
["massif"] = {
link = true,
fallback = "ภูเขา",
},
["megacity"] = {
link = true,
fallback = "นคร",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"borough", "นคร"},
fallback = "local government district",
has_neighborhoods = true,
},
["มหานคร"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"มหานคร", "นคร"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "ของ",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "เทศบาล"},
fallback = "เทศบาล",
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 = "ประเทศ",
},
["microstate"] = {
link = true,
fallback = "ประเทศ",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "เมือง",
},
["monarchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["ภูเขา"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "อำเภอ",
},
["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 = {"ภูเขา"},
default = {true},
},
["เทือกเขา"] = {
link = true,
fallback = "ภูเขา",
},
["mountainous region"] = {
link = "separately",
fallback = "ภูมิภาค",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "ของ",
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 = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "เทศบาล",
},
["เทศบาล"] = {
link = true,
preposition = "ของ",
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 = "เทศบาล",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "เมืองหลวง",
},
["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 = "สถานที่",
},
["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", "อำเภอ", "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 = "ใน",
generic_before_cities = "ของ",
-- 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 "ของ" before cities and "ใน" before non-cities regardless. (FIXME: We should change that.)
preposition = "ของ",
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 = "ใน",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "เมือง",
},
["เมืองหลวงที่ไม่ใช่นคร"] = {
link = "[[เมืองหลวง]]",
entry_placetype_use_the = true,
preposition = "ของ",
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 = "เทศมณฑล",
},
["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 = "ใน",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "ของ",
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",
},
["มหาสมุทร"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"ทะเล", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
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 = "ภูเขา",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["สถานที่!"] = {
generic_before_non_cities = "ใน",
generic_before_cities = "ใน",
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 = "ชื่อ (หัวข้อ)",
},
["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 = {"ธรณีสัณฐาน"},
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 = "สถานที่",
},
["องค์การทางการเมือง"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity", --ห้ามแปล class
bare_category_parent = "สถานที่",
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 "นคร"
link = true,
fallback = "นคร",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "เมือง"
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
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 "เทศมณฑล" or "county boroughs"), of which there are 22.
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "อำเภอ" (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",
},
["จังหวัด"] = {
link = true,
preposition = "ของ",
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 = true,
fallback = "เมืองหลวง",
},
["raion"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "subpolity",
},
["ภูมิภาค"] = {
link = true,
preposition = "ของ",
-- 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 = "เมืองหลวง",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = {"เทศบาล", "เทศมณฑล"},
fallback = "เทศบาล",
},
["regional district"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "อำเภอ",
},
["regional municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
},
["regional unit"] = {
link = "w",
preposition = "ของ",
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 = "เทศมณฑล",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "ประเทศ" 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 = "ทะเลสาบ",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "นคร",
},
["resort town"] = {
link = "w",
fallback = "เมือง",
},
["แม่น้ำ"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เกาะ",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"Named roads"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"Provinces of the Roman Empire"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "เทศบาล",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["ทะเล"] = {
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 = "ของ",
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",
},
["การตั้งถิ่นฐาน"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "สถานที่",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated สถานที่ในUkraine#Rural settlements|การตั้งถิ่นฐาน]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "อำเภอ",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "เทศมณฑล",
},
["shire county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "นคร",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "เมือง",
},
["spa city"] = {
link = "+w:spa town",
fallback = "นคร",
},
["spa town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since สถานที่ใน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 = "เทศบาล",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "เทศบาล",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["รัฐ"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = "เมืองหลวง",
},
["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 = "นคร",
},
["statutory town"] = {
link = "w",
fallback = "เมือง",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "แม่น้ำ",
},
["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 = "นคร",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["ตำบล"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 "ใน" for non-cities and "ของ" for cities. (FIXME: Change this.)
generic_before_non_cities = "ใน",
generic_before_cities = "ของ",
preposition = "ของ",
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 "เทศมณฑล" 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 = "อำเภอ",
},
["ดินแดน"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "ของ",
class = "subpolity",
},
["เมือง"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เมือง",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "นคร",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["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 = "ใน",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "ดินแดน",
},
["union territory"] = {
-- India
link = true,
preposition = "ของ",
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", --ห้ามแปล class
default = {"Unrecognized and nearly unrecognized countries"},
},
["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 = "นคร",
},
["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 = "เมือง",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "ของ",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
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 = "ของ",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "ของ",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "ของ",
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 settlements", "Former capitals"},
},
["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"},
},
["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 = "ของ",
has_neighborhoods = true,
class = "capital",
default = {"Former capitals"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "การตั้งถิ่นฐาน",
},
["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", --ห้ามแปล class
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 = "ของ",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "อำเภอ",
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 = "เทศบาล",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity", --ห้ามแปล class
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 = "จังหวัด",
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 = "ของ",
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 = "การตั้งถิ่นฐาน",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "ของ",
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 = "เทศมณฑล",
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 = "ประเทศ",
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 = "อำเภอ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "จังหวัด",
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 = "ภูมิภาค",
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 = "รัฐ",
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 = "ดินแดน",
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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "นคร",
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 = "ทวีป",
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 = "ประเทศ",
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 = "รัฐ",
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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "เมืองหลวง",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
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 = "การตั้งถิ่นฐาน",
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 = "นคร",
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 "นคร"
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 "นคร" 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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "นคร",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"นคร"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "ทวีป",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ทวีป"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "ประเทศ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ประเทศ"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "สถานที่",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"สถานที่"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "รัฐ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"รัฐ"},
},
["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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = {"รัฐ"},
},
["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
return export
h2cx5n18f7xqo6vbbi1o4ldcx4b4vsi
5720873
5720871
2026-04-22T02:51:35Z
OctraBot
3198
5720873
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"
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)]] 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)]] 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 == "และ" or placetype == "หรือ" 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="แม่น้ำ"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="แม่น้ำ"},
}}
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 `"ดินแดน"`
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"]] "" -- th doesn't use article
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = --[[require(en_utilities_module).get_indefinite_article(placetype)]] "" -- th doesn't use article
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 `"ใน"` 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 "ใน"
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 "ประเทศ" 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)]] 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 "ประเทศ", "รัฐ",
"จังหวัด" 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", "อำเภอ" 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"] = "ประเทศ",
["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"] = "เทศมณฑล",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "ทวีป",
["contr"] = "ภูมิภาคแบบทวีป",
["contregion"] = "ภูมิภาคแบบทวีป",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "อำเภอ",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "จักรวรรดิ",
["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"] = "เกาะ",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "มหานคร",
["metmun"] = "metropolitan municipality",
["mtn"] = "ภูเขา",
["mun"] = "เทศบาล",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "จังหวัด",
["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"] = "จังหวัด",
["r"] = "ภูมิภาค",
["range"] = "เทือกเขา",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "แม่น้ำ",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "รัฐ",
["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"] = "ดินแดน",
["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",
}
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",
["ประเทศ"] = "เมืองหลวงของประเทศ",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["เทศมณฑล"] = "เมืองหลวงของเทศมณฑล",
["department"] = "departmental capitals",
["อำเภอ"] = "เมืองหลวงของอำเภอ",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["มหานคร"] = "เมืองหลวงของมหานคร",
["เทศบาล"] = "เมืองหลวงของเทศบาล",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["จังหวัด"] = "เมืองหลวงของจังหวัด",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["ภูมิภาค"] = "เมืองหลวงของภูมิภาค",
["regional unit"] = "regional unit capitals",
["republic"] = "republic 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",
},
["ประเทศ"] = {
["Holy Roman Empire"] = "the",
},
["จักรวรรดิ"] = {
["Holy Roman Empire"] = "the",
},
["เกาะ"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["ภูมิภาค"] = {
["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 of "},
["ประเทศ"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["ภูมิภาค"] = {" [Rr]egion$"},
["แม่น้ำ"] = {" River$"},
["local government area"] = {"^Shire of "},
["เทศมณฑล"] = {"^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 = {
["ภูมิภาค"] = {
["Eastern Europe"] = {"continent/ยุโรป"},
["Central Europe"] = {"continent/ยุโรป"},
["Western Europe"] = {"continent/ยุโรป"},
["South Europe"] = {"continent/ยุโรป"},
["Southern Europe"] = {"continent/ยุโรป"},
["Northern Europe"] = {"continent/ยุโรป"},
["Northeast Europe"] = {"continent/ยุโรป"},
["Northeastern Europe"] = {"continent/ยุโรป"},
["Southeast Europe"] = {"continent/ยุโรป"},
["Southeastern Europe"] = {"continent/ยุโรป"},
["North Caucasus"] = {"continent/ยุโรป"},
["South Caucasus"] = {"continent/เอเชีย"},
["South Asia"] = {"continent/เอเชีย"},
["Southern Asia"] = {"continent/เอเชีย"},
["East Asia"] = {"continent/เอเชีย"},
["Eastern Asia"] = {"continent/เอเชีย"},
["Central Asia"] = {"continent/เอเชีย"},
["West Asia"] = {"continent/เอเชีย"},
["Western Asia"] = {"continent/เอเชีย"},
["Southeast Asia"] = {"continent/เอเชีย"},
["North Asia"] = {"continent/เอเชีย"},
["Northern Asia"] = {"continent/เอเชีย"},
["Anatolia"] = {"continent/เอเชีย"},
["Asia Minor"] = {"continent/เอเชีย"},
["Mesopotamia"] = {"continent/เอเชีย"},
["North Africa"] = {"continent/แอฟริกา"},
["Central Africa"] = {"continent/แอฟริกา"},
["West Africa"] = {"continent/แอฟริกา"},
["East Africa"] = {"continent/แอฟริกา"},
["Southern Africa"] = {"continent/แอฟริกา"},
["Central America"] = {"continent/อเมริกากลาง"},
["Caribbean"] = {"continent/อเมริกาเหนือ"},
["Polynesia"] = {"continent/โอเชียเนีย"},
["Micronesia"] = {"continent/โอเชียเนีย"},
["Melanesia"] = {"continent/โอเชียเนีย"},
["Siberia"] = {"country/รัสเซีย", "continent/เอเชีย"},
["Russian Far East"] = {"country/รัสเซีย", "continent/เอเชีย"},
["South Wales"] = {"constituent country/เวลส์", "continent/ยุโรป"},
["Balkans"] = {"continent/ยุโรป"},
["West Bank"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza Strip"] = {"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
-- Categorize both in key, and in the larger polity that the key is part of, e.g. [[Hirakata]] goes in both
-- "Cities in Osaka Prefecture" and "Cities in Japan". (But don't do the latter if no_container_cat is set.)
local cap_plural_entry_placetype = ucfirst(plural_entry_placetype)
local retcats = {("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(key, spec))} --th
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, ("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(container.key, container.spec))) --th
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 = "นคร",
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').
local capital_cat = export.placetype_to_capital_cat[holonym_placetype]
if not capital_cat then
capital_cat = export.placetype_to_capital_cat[holonym_placetype:gsub("^.* ", "")]
end
if capital_cat then
capital_cat = ucfirst(capital_cat)
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
insert(retcats, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(key, spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, capital_cat)
end
else
-- We didn't recognize the holonym placetype; just put in 'Capital cities'.
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:สถานที่ในMerseyside, England]] (and
[[:Category:en:สถานที่ใน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:สถานที่ในBoston]], along with [[:Category:en:สถานที่ในMassachusetts, USA]] and
[[:Category:en:สถานที่ใน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
insert(retcats, ("สถานที่ใน%s"):format(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:สถานที่ในOsaka Prefecture, Japan]] and [[Category:สถานที่ใน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 "ของ"
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
local retcats = {}
for _, pt_cat in ipairs(cat_as) do
if type(pt_cat) == "string" then
pt_cat = {type = pt_cat}
end
local pt_prep = pt_cat.prep or prep
insert(retcats, ucfirst(pt_cat.type) .. pt_prep .. export.get_prefixed_key(key, spec)) --th
end
return retcats
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.title.getCurrentTitle().subpageText)
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 "ใน" not "ของ", 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 "ของ" or "ใน") ..
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("เทศมณฑล", 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("เทศมณฑล", 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("เทศมณฑล", 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 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.iran_provinces[unlinked_placename .. ", Iran"] or
m_locations.laos_provinces[unlinked_placename .. ", Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. ", North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. ", South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. ", ไทย"] or
m_locations.turkey_provinces[unlinked_placename .. ", Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. ", เวียดนาม"] then
return suffix_display_handler("จังหวัด", 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("รัฐ", 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
`สถานที่ใน``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 = "ของ"`, 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 `"ใน"`.
* `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 = "ภูมิภาค"`.
* `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 "เทศมณฑล" 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 = "ของ",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["administrative center"] = {
link = "w",
fallback = "เมืองหลวงที่ไม่ใช่นคร",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["administrative district"] = {
link = "w",
fallback = "อำเภอ",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "ของ",
suffix = "ภูมิภาค", -- but prefix is still "administrative region (of)"
fallback = "ภูมิภาค",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "ของ",
suffix = "ดินแดน", -- but prefix is still "administrative territory (of)"
fallback = "ดินแดน",
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 = "ของ",
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 = "เกาะ",
},
["area"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "natural feature",
default = {"ทะเล"},
},
["arrondissement"] = {
link = true,
preposition = "ของ",
-- 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 = "จังหวัด",
},
["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 = "เกาะ",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "ของ",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "ของ",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "จังหวัด",
},
["autonomous region"] = {
link = "w",
preposition = "ของ",
fallback = "administrative region",
-- "administrative region" sets an affix of "ภูมิภาค" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "องค์การทางการเมือง",
},
["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 = "ทะเลสาบ",
},
["bay"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = {"ธรณีสัณฐาน", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "ของ",
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 = "ของ",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"Named bridges"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"Named buildings"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["canton"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "เมืองหลวง",
},
["เมืองหลวง"] = {
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 = "ของ",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "นคร",
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 = "นคร",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "เมืองหลวง",
},
["captaincy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "นคร",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "นคร",
},
["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 = "ของ",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "เมือง",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "ของ",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "เทศมณฑล",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "เกาะ",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["นคร"] = {
link = true,
generic_before_non_cities = "ใน",
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/*"] = {"City-states", "นครใน+++", "ประเทศใน+++", "เมืองหลวงของ"},
default = {"City-states", "นคร", "ประเทศ", "เมืองหลวงของประเทศ"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["coal city"] = {
link = "+w:coal town",
fallback = "นคร",
},
["coal town"] = {
link = "w",
fallback = "เมือง",
},
["collectivity"] = {
link = "w",
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "ของ",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "เทศบาล",
},
["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 = "เทศบาล",
},
["condominium"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "ของ",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "ของ",
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",
},
["ทวีป"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"Continents and continental regions"},
},
["ภูมิภาคแบบทวีป"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "ทวีป",
},
["ทวีปและภูมิภาคแบบทวีป!"] = {
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["ประเทศ"] = {
link = true,
class = "polity", --ห้ามแปล class
["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", --ห้ามแปล class
},
["เทศมณฑล"] = {
link = true,
preposition = "ของ",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "ของ",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
fallback = "เมือง",
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 = "นคร",
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 = "ทะเลสาบ",
},
["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 = "ของ",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "ของ",
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 = "เทศบาล",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "เทศบาล",
},
["distributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["อำเภอ"] = {
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "ของ",
affix_type = "suf",
no_affix_strings = {"อำเภอ", "เทศบาล"},
fallback = "เทศบาล",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dome"] = {
link = true,
fallback = "ภูเขา",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["emirate"] = {
link = true,
preposition = "ของ",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "องค์การทางการเมือง",
},
["จักรวรรดิ"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["enclave"] = {
link = true,
preposition = "ของ",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "ของ",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "ภูเขา",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "ของ",
-- 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"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
},
["federal district"] = {
link = true,
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "ดินแดน",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "ของ",
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 = "ของ",
preposition = "ของ",
class = "geographic region",
bare_category_parent = "สถานที่",
["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 = "ของ",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "ของ",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "ของ",
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 = "ของ",
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 = "นคร",
},
["harbor town"] = {
link = "separately",
fallback = "เมือง",
},
["harbour city"] = {
link = "separately",
fallback = "นคร",
},
["harbour town"] = {
link = "separately",
fallback = "เมือง",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "ภูมิภาคแบบทวีป",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "เมือง",
},
["hill town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "นคร",
},
["home rule municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "นคร",
},
["independent town"] = {
link = "+independent city",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "ทะเล",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["เกาะ"] = {
link = true,
preposition = "ของ",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "ประเทศ",
},
["island group"] = {
link = "separately",
fallback = "เกาะ",
},
["island municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["islet"] = {
link = "w",
fallback = "เกาะ",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["khanate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
class = "subpolity",
},
["ทะเลสาบ"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["ธรณีสัณฐาน!"] = {
category_link = "[[ธรณีสัณฐาน]]",
bare_category_parent = "สถานที่",
addl_bare_category_parents = {"โลก"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "นคร",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["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 = "ของ",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "ของ",
fallback = "เทศบาล",
},
["local government district"] = {
link = "w",
preposition = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "ภูมิภาค",
},
["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 = "สถานที่",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "ของ",
fallback = "ทะเล",
},
["market city"] = {
link = "+market town",
fallback = "นคร",
},
["market town"] = {
link = true,
fallback = "เมือง",
},
["massif"] = {
link = true,
fallback = "ภูเขา",
},
["megacity"] = {
link = true,
fallback = "นคร",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"borough", "นคร"},
fallback = "local government district",
has_neighborhoods = true,
},
["มหานคร"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"มหานคร", "นคร"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "ของ",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "เทศบาล"},
fallback = "เทศบาล",
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 = "ประเทศ",
},
["microstate"] = {
link = true,
fallback = "ประเทศ",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "เมือง",
},
["monarchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["ภูเขา"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "อำเภอ",
},
["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 = {"ภูเขา"},
default = {true},
},
["เทือกเขา"] = {
link = true,
fallback = "ภูเขา",
},
["mountainous region"] = {
link = "separately",
fallback = "ภูมิภาค",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "ของ",
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 = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "เทศบาล",
},
["เทศบาล"] = {
link = true,
preposition = "ของ",
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 = "เทศบาล",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "เมืองหลวง",
},
["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 = "สถานที่",
},
["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", "อำเภอ", "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 = "ใน",
generic_before_cities = "ของ",
-- 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 "ของ" before cities and "ใน" before non-cities regardless. (FIXME: We should change that.)
preposition = "ของ",
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 = "ใน",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "เมือง",
},
["เมืองหลวงที่ไม่ใช่นคร"] = {
link = "[[เมืองหลวง]]",
entry_placetype_use_the = true,
preposition = "ของ",
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 = "เทศมณฑล",
},
["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 = "ใน",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "ของ",
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",
},
["มหาสมุทร"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"ทะเล", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
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 = "ภูเขา",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["สถานที่!"] = {
generic_before_non_cities = "ใน",
generic_before_cities = "ใน",
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 = "ชื่อ (หัวข้อ)",
},
["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 = {"ธรณีสัณฐาน"},
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 = "สถานที่",
},
["องค์การทางการเมือง"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity", --ห้ามแปล class
bare_category_parent = "สถานที่",
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 "นคร"
link = true,
fallback = "นคร",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "เมือง"
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
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 "เทศมณฑล" or "county boroughs"), of which there are 22.
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "อำเภอ" (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",
},
["จังหวัด"] = {
link = true,
preposition = "ของ",
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 = true,
fallback = "เมืองหลวง",
},
["raion"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "subpolity",
},
["ภูมิภาค"] = {
link = true,
preposition = "ของ",
-- 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 = "เมืองหลวง",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = {"เทศบาล", "เทศมณฑล"},
fallback = "เทศบาล",
},
["regional district"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "อำเภอ",
},
["regional municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
},
["regional unit"] = {
link = "w",
preposition = "ของ",
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 = "เทศมณฑล",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "ประเทศ" 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 = "ทะเลสาบ",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "นคร",
},
["resort town"] = {
link = "w",
fallback = "เมือง",
},
["แม่น้ำ"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เกาะ",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"Named roads"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"Provinces of the Roman Empire"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "เทศบาล",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["ทะเล"] = {
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 = "ของ",
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",
},
["การตั้งถิ่นฐาน"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "สถานที่",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated สถานที่ในUkraine#Rural settlements|การตั้งถิ่นฐาน]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "อำเภอ",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "เทศมณฑล",
},
["shire county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "นคร",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "เมือง",
},
["spa city"] = {
link = "+w:spa town",
fallback = "นคร",
},
["spa town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since สถานที่ใน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 = "เทศบาล",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "เทศบาล",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["รัฐ"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = "เมืองหลวง",
},
["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 = "นคร",
},
["statutory town"] = {
link = "w",
fallback = "เมือง",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "แม่น้ำ",
},
["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 = "นคร",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["ตำบล"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 "ใน" for non-cities and "ของ" for cities. (FIXME: Change this.)
generic_before_non_cities = "ใน",
generic_before_cities = "ของ",
preposition = "ของ",
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 "เทศมณฑล" 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 = "อำเภอ",
},
["ดินแดน"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "ของ",
class = "subpolity",
},
["เมือง"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เมือง",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "นคร",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["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 = "ใน",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "ดินแดน",
},
["union territory"] = {
-- India
link = true,
preposition = "ของ",
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", --ห้ามแปล class
default = {"Unrecognized and nearly unrecognized countries"},
},
["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 = "นคร",
},
["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 = "เมือง",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "ของ",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
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 = "ของ",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "ของ",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "ของ",
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 settlements", "Former capitals"},
},
["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"},
},
["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 = "ของ",
has_neighborhoods = true,
class = "capital",
default = {"Former capitals"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "การตั้งถิ่นฐาน",
},
["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", --ห้ามแปล class
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 = "ของ",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "อำเภอ",
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 = "เทศบาล",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity", --ห้ามแปล class
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 = "จังหวัด",
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 = "ของ",
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 = "การตั้งถิ่นฐาน",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "ของ",
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 = "เทศมณฑล",
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 = "ประเทศ",
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 = "อำเภอ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "จังหวัด",
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 = "ภูมิภาค",
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 = "รัฐ",
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 = "ดินแดน",
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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "นคร",
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 = "ทวีป",
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 = "ประเทศ",
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 = "รัฐ",
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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "เมืองหลวง",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
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 = "การตั้งถิ่นฐาน",
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 = "นคร",
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 "นคร"
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 "นคร" 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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "นคร",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"นคร"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "ทวีป",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ทวีป"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "ประเทศ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ประเทศ"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "สถานที่",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"สถานที่"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "รัฐ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"รัฐ"},
},
["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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = {"รัฐ"},
},
["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
return export
23v0atbgqtf56wcd3xzu6tg3si6j2lw
5720876
5720873
2026-04-22T02:56:16Z
OctraBot
3198
5720876
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"
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)]] 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)]] 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 == "และ" or placetype == "หรือ" 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="แม่น้ำ"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="แม่น้ำ"},
}}
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 `"ดินแดน"`
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"]] "" -- th doesn't use article
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = --[[require(en_utilities_module).get_indefinite_article(placetype)]] "" -- th doesn't use article
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 `"ใน"` 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 "ใน"
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 "ประเทศ" 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)]] 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 "ประเทศ", "รัฐ",
"จังหวัด" 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", "อำเภอ" 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"] = "ประเทศ",
["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"] = "เทศมณฑล",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "ทวีป",
["contr"] = "ภูมิภาคแบบทวีป",
["contregion"] = "ภูมิภาคแบบทวีป",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "อำเภอ",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "จักรวรรดิ",
["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"] = "เกาะ",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "มหานคร",
["metmun"] = "metropolitan municipality",
["mtn"] = "ภูเขา",
["mun"] = "เทศบาล",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "จังหวัด",
["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"] = "จังหวัด",
["r"] = "ภูมิภาค",
["range"] = "เทือกเขา",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "แม่น้ำ",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "รัฐ",
["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"] = "ดินแดน",
["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",
}
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",
["ประเทศ"] = "เมืองหลวงของประเทศ",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["เทศมณฑล"] = "เมืองหลวงของเทศมณฑล",
["department"] = "departmental capitals",
["อำเภอ"] = "เมืองหลวงของอำเภอ",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["มหานคร"] = "เมืองหลวงของมหานคร",
["เทศบาล"] = "เมืองหลวงของเทศบาล",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["จังหวัด"] = "เมืองหลวงของจังหวัด",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["ภูมิภาค"] = "เมืองหลวงของภูมิภาค",
["regional unit"] = "regional unit capitals",
["republic"] = "republic 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",
},
["ประเทศ"] = {
["Holy Roman Empire"] = "the",
},
["จักรวรรดิ"] = {
["Holy Roman Empire"] = "the",
},
["เกาะ"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["ภูมิภาค"] = {
["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 of "},
["ประเทศ"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["ภูมิภาค"] = {" [Rr]egion$"},
["แม่น้ำ"] = {" River$"},
["local government area"] = {"^Shire of "},
["เทศมณฑล"] = {"^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 = {
["ภูมิภาค"] = {
["Eastern Europe"] = {"continent/ยุโรป"},
["Central Europe"] = {"continent/ยุโรป"},
["Western Europe"] = {"continent/ยุโรป"},
["South Europe"] = {"continent/ยุโรป"},
["Southern Europe"] = {"continent/ยุโรป"},
["Northern Europe"] = {"continent/ยุโรป"},
["Northeast Europe"] = {"continent/ยุโรป"},
["Northeastern Europe"] = {"continent/ยุโรป"},
["Southeast Europe"] = {"continent/ยุโรป"},
["Southeastern Europe"] = {"continent/ยุโรป"},
["North Caucasus"] = {"continent/ยุโรป"},
["South Caucasus"] = {"continent/เอเชีย"},
["South Asia"] = {"continent/เอเชีย"},
["Southern Asia"] = {"continent/เอเชีย"},
["East Asia"] = {"continent/เอเชีย"},
["Eastern Asia"] = {"continent/เอเชีย"},
["Central Asia"] = {"continent/เอเชีย"},
["West Asia"] = {"continent/เอเชีย"},
["Western Asia"] = {"continent/เอเชีย"},
["Southeast Asia"] = {"continent/เอเชีย"},
["North Asia"] = {"continent/เอเชีย"},
["Northern Asia"] = {"continent/เอเชีย"},
["Anatolia"] = {"continent/เอเชีย"},
["Asia Minor"] = {"continent/เอเชีย"},
["Mesopotamia"] = {"continent/เอเชีย"},
["North Africa"] = {"continent/แอฟริกา"},
["Central Africa"] = {"continent/แอฟริกา"},
["West Africa"] = {"continent/แอฟริกา"},
["East Africa"] = {"continent/แอฟริกา"},
["Southern Africa"] = {"continent/แอฟริกา"},
["Central America"] = {"continent/อเมริกากลาง"},
["Caribbean"] = {"continent/อเมริกาเหนือ"},
["Polynesia"] = {"continent/โอเชียเนีย"},
["Micronesia"] = {"continent/โอเชียเนีย"},
["Melanesia"] = {"continent/โอเชียเนีย"},
["Siberia"] = {"country/รัสเซีย", "continent/เอเชีย"},
["Russian Far East"] = {"country/รัสเซีย", "continent/เอเชีย"},
["South Wales"] = {"constituent country/เวลส์", "continent/ยุโรป"},
["Balkans"] = {"continent/ยุโรป"},
["West Bank"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza Strip"] = {"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
-- Categorize both in key, and in the larger polity that the key is part of, e.g. [[Hirakata]] goes in both
-- "Cities in Osaka Prefecture" and "Cities in Japan". (But don't do the latter if no_container_cat is set.)
local cap_plural_entry_placetype = ucfirst(plural_entry_placetype)
local retcats = {("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(key, spec))} --th
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, ("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(container.key, container.spec))) --th
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 = "นคร",
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').
local capital_cat = export.placetype_to_capital_cat[holonym_placetype]
if not capital_cat then
capital_cat = export.placetype_to_capital_cat[holonym_placetype:gsub("^.* ", "")]
end
if capital_cat then
capital_cat = ucfirst(capital_cat)
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
insert(retcats, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(key, spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, capital_cat)
end
else
-- We didn't recognize the holonym placetype; just put in 'Capital cities'.
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:สถานที่ในMerseyside, England]] (and
[[:Category:en:สถานที่ใน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:สถานที่ในBoston]], along with [[:Category:en:สถานที่ในMassachusetts, USA]] and
[[:Category:en:สถานที่ใน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
insert(retcats, ("สถานที่ใน%s"):format(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:สถานที่ในOsaka Prefecture, Japan]] and [[Category:สถานที่ใน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 "ของ"
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
local retcats = {}
for _, pt_cat in ipairs(cat_as) do
if type(pt_cat) == "string" then
pt_cat = {type = pt_cat}
end
local pt_prep = pt_cat.prep or prep
insert(retcats, ucfirst(pt_cat.type) .. pt_prep .. export.get_prefixed_key(key, spec)) --th
end
return retcats
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.title.getCurrentTitle().subpageText)
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 "ใน" not "ของ", 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 "ของ" or "ใน") ..
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("เทศมณฑล", 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("เทศมณฑล", 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("เทศมณฑล", 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 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.iran_provinces[unlinked_placename .. ", Iran"] or
m_locations.laos_provinces[unlinked_placename .. ", Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. ", North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. ", South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. ", ไทย"] or
m_locations.turkey_provinces[unlinked_placename .. ", Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. ", เวียดนาม"] then
return suffix_display_handler("จังหวัด", 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("รัฐ", 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
`สถานที่ใน``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 = "ของ"`, 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 `"ใน"`.
* `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 = "ภูมิภาค"`.
* `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 "เทศมณฑล" 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 = "ของ",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["administrative center"] = {
link = "w",
fallback = "เมืองหลวงที่ไม่ใช่นคร",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["administrative district"] = {
link = "w",
fallback = "อำเภอ",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "ของ",
suffix = "ภูมิภาค", -- but prefix is still "administrative region (of)"
fallback = "ภูมิภาค",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "ของ",
suffix = "ดินแดน", -- but prefix is still "administrative territory (of)"
fallback = "ดินแดน",
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 = "ของ",
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 = "เกาะ",
},
["area"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "natural feature",
default = {"ทะเล"},
},
["arrondissement"] = {
link = true,
preposition = "ของ",
-- 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 = "จังหวัด",
},
["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 = "เกาะ",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "ของ",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "ของ",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "จังหวัด",
},
["autonomous region"] = {
link = "w",
preposition = "ของ",
fallback = "administrative region",
-- "administrative region" sets an affix of "ภูมิภาค" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "องค์การทางการเมือง",
},
["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 = "ทะเลสาบ",
},
["bay"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = {"ธรณีสัณฐาน", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "ของ",
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 = "ของ",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"Named bridges"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"Named buildings"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["canton"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "เมืองหลวง",
},
["เมืองหลวง"] = {
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 = "ของ",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "นคร",
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 = "นคร",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "เมืองหลวง",
},
["captaincy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "นคร",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "นคร",
},
["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 = "ของ",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "เมือง",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "ของ",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "เทศมณฑล",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "เกาะ",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["นคร"] = {
link = true,
generic_before_non_cities = "ใน",
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/*"] = {"City-states", "นครใน+++", "ประเทศใน+++", "เมืองหลวงของ"},
default = {"City-states", "นคร", "ประเทศ", "เมืองหลวงของประเทศ"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["coal city"] = {
link = "+w:coal town",
fallback = "นคร",
},
["coal town"] = {
link = "w",
fallback = "เมือง",
},
["collectivity"] = {
link = "w",
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "ของ",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "เทศบาล",
},
["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 = "เทศบาล",
},
["condominium"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "ของ",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "ของ",
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",
},
["ทวีป"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"ทวีปและภูมิภาคแบบทวีป"},
},
["ภูมิภาคแบบทวีป"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "ทวีป",
},
["ทวีปและภูมิภาคแบบทวีป!"] = {
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["ประเทศ"] = {
link = true,
class = "polity", --ห้ามแปล class
["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", --ห้ามแปล class
},
["เทศมณฑล"] = {
link = true,
preposition = "ของ",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "ของ",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
fallback = "เมือง",
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 = "นคร",
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 = "ทะเลสาบ",
},
["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 = "ของ",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "ของ",
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 = "เทศบาล",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "เทศบาล",
},
["distributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["อำเภอ"] = {
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "ของ",
affix_type = "suf",
no_affix_strings = {"อำเภอ", "เทศบาล"},
fallback = "เทศบาล",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dome"] = {
link = true,
fallback = "ภูเขา",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["emirate"] = {
link = true,
preposition = "ของ",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "องค์การทางการเมือง",
},
["จักรวรรดิ"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["enclave"] = {
link = true,
preposition = "ของ",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "ของ",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "ภูเขา",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "ของ",
-- 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"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
},
["federal district"] = {
link = true,
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "ดินแดน",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "ของ",
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 = "ของ",
preposition = "ของ",
class = "geographic region",
bare_category_parent = "สถานที่",
["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 = "ของ",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "ของ",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "ของ",
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 = "ของ",
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 = "นคร",
},
["harbor town"] = {
link = "separately",
fallback = "เมือง",
},
["harbour city"] = {
link = "separately",
fallback = "นคร",
},
["harbour town"] = {
link = "separately",
fallback = "เมือง",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "ภูมิภาคแบบทวีป",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "เมือง",
},
["hill town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "นคร",
},
["home rule municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "นคร",
},
["independent town"] = {
link = "+independent city",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "ทะเล",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["เกาะ"] = {
link = true,
preposition = "ของ",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "ประเทศ",
},
["island group"] = {
link = "separately",
fallback = "เกาะ",
},
["island municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["islet"] = {
link = "w",
fallback = "เกาะ",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["khanate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
class = "subpolity",
},
["ทะเลสาบ"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["ธรณีสัณฐาน!"] = {
category_link = "[[ธรณีสัณฐาน]]",
bare_category_parent = "สถานที่",
addl_bare_category_parents = {"โลก"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "นคร",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["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 = "ของ",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "ของ",
fallback = "เทศบาล",
},
["local government district"] = {
link = "w",
preposition = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "ภูมิภาค",
},
["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 = "สถานที่",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "ของ",
fallback = "ทะเล",
},
["market city"] = {
link = "+market town",
fallback = "นคร",
},
["market town"] = {
link = true,
fallback = "เมือง",
},
["massif"] = {
link = true,
fallback = "ภูเขา",
},
["megacity"] = {
link = true,
fallback = "นคร",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"borough", "นคร"},
fallback = "local government district",
has_neighborhoods = true,
},
["มหานคร"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"มหานคร", "นคร"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "ของ",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "เทศบาล"},
fallback = "เทศบาล",
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 = "ประเทศ",
},
["microstate"] = {
link = true,
fallback = "ประเทศ",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "เมือง",
},
["monarchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["ภูเขา"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "อำเภอ",
},
["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 = {"ภูเขา"},
default = {true},
},
["เทือกเขา"] = {
link = true,
fallback = "ภูเขา",
},
["mountainous region"] = {
link = "separately",
fallback = "ภูมิภาค",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "ของ",
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 = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "เทศบาล",
},
["เทศบาล"] = {
link = true,
preposition = "ของ",
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 = "เทศบาล",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "เมืองหลวง",
},
["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 = "สถานที่",
},
["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", "อำเภอ", "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 = "ใน",
generic_before_cities = "ของ",
-- 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 "ของ" before cities and "ใน" before non-cities regardless. (FIXME: We should change that.)
preposition = "ของ",
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 = "ใน",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "เมือง",
},
["เมืองหลวงที่ไม่ใช่นคร"] = {
link = "[[เมืองหลวง]]",
entry_placetype_use_the = true,
preposition = "ของ",
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 = "เทศมณฑล",
},
["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 = "ใน",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "ของ",
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",
},
["มหาสมุทร"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"ทะเล", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
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 = "ภูเขา",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["สถานที่!"] = {
generic_before_non_cities = "ใน",
generic_before_cities = "ใน",
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 = "ชื่อ (หัวข้อ)",
},
["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 = {"ธรณีสัณฐาน"},
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 = "สถานที่",
},
["องค์การทางการเมือง"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity", --ห้ามแปล class
bare_category_parent = "สถานที่",
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 "นคร"
link = true,
fallback = "นคร",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "เมือง"
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
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 "เทศมณฑล" or "county boroughs"), of which there are 22.
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "อำเภอ" (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",
},
["จังหวัด"] = {
link = true,
preposition = "ของ",
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 = true,
fallback = "เมืองหลวง",
},
["raion"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "subpolity",
},
["ภูมิภาค"] = {
link = true,
preposition = "ของ",
-- 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 = "เมืองหลวง",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = {"เทศบาล", "เทศมณฑล"},
fallback = "เทศบาล",
},
["regional district"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "อำเภอ",
},
["regional municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
},
["regional unit"] = {
link = "w",
preposition = "ของ",
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 = "เทศมณฑล",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "ประเทศ" 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 = "ทะเลสาบ",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "นคร",
},
["resort town"] = {
link = "w",
fallback = "เมือง",
},
["แม่น้ำ"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เกาะ",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"Named roads"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"Provinces of the Roman Empire"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "เทศบาล",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["ทะเล"] = {
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 = "ของ",
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",
},
["การตั้งถิ่นฐาน"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "สถานที่",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated สถานที่ในUkraine#Rural settlements|การตั้งถิ่นฐาน]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "อำเภอ",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "เทศมณฑล",
},
["shire county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "นคร",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "เมือง",
},
["spa city"] = {
link = "+w:spa town",
fallback = "นคร",
},
["spa town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since สถานที่ใน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 = "เทศบาล",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "เทศบาล",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["รัฐ"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = "เมืองหลวง",
},
["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 = "นคร",
},
["statutory town"] = {
link = "w",
fallback = "เมือง",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "แม่น้ำ",
},
["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 = "นคร",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["ตำบล"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 "ใน" for non-cities and "ของ" for cities. (FIXME: Change this.)
generic_before_non_cities = "ใน",
generic_before_cities = "ของ",
preposition = "ของ",
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 "เทศมณฑล" 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 = "อำเภอ",
},
["ดินแดน"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "ของ",
class = "subpolity",
},
["เมือง"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เมือง",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "นคร",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["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 = "ใน",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "ดินแดน",
},
["union territory"] = {
-- India
link = true,
preposition = "ของ",
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", --ห้ามแปล class
default = {"Unrecognized and nearly unrecognized countries"},
},
["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 = "นคร",
},
["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 = "เมือง",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "ของ",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
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 = "ของ",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "ของ",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "ของ",
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 settlements", "Former capitals"},
},
["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"},
},
["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 = "ของ",
has_neighborhoods = true,
class = "capital",
default = {"Former capitals"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "การตั้งถิ่นฐาน",
},
["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", --ห้ามแปล class
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 = "ของ",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "อำเภอ",
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 = "เทศบาล",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity", --ห้ามแปล class
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 = "จังหวัด",
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 = "ของ",
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 = "การตั้งถิ่นฐาน",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "ของ",
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 = "เทศมณฑล",
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 = "ประเทศ",
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 = "อำเภอ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "จังหวัด",
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 = "ภูมิภาค",
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 = "รัฐ",
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 = "ดินแดน",
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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "นคร",
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 = "ทวีป",
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 = "ประเทศ",
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 = "รัฐ",
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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "เมืองหลวง",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
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 = "การตั้งถิ่นฐาน",
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 = "นคร",
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 "นคร"
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 "นคร" 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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "นคร",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"นคร"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "ทวีป",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ทวีป"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "ประเทศ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ประเทศ"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "สถานที่",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"สถานที่"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "รัฐ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"รัฐ"},
},
["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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = {"รัฐ"},
},
["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
return export
puck3qbbjn5uywnwclttbvispcxxgge
5720877
5720876
2026-04-22T03:03:28Z
OctraBot
3198
5720877
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"
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)]] 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)]] 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 == "และ" or placetype == "หรือ" 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="แม่น้ำ"}
```
and the return value will be
{ {
{qualifier = "left", placetype="tributary"},
{qualifier = "left", placetype="แม่น้ำ"},
}}
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 `"ดินแดน"`
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"]] "" -- th doesn't use article
else
art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article")
if not art then
art = --[[require(en_utilities_module).get_indefinite_article(placetype)]] "" -- th doesn't use article
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 `"ใน"` 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 "ใน"
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 "ประเทศ" 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)]] 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 "ประเทศ", "รัฐ",
"จังหวัด" 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", "อำเภอ" 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"] = "ประเทศ",
["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"] = "เทศมณฑล",
["cobor"] = "county borough",
["colcity"] = "county-level city",
["coll"] = "collectivity",
["comm"] = "community",
["cont"] = "ทวีป",
["contr"] = "ภูมิภาคเชิงทวีป",
["contregion"] = "ภูมิภาคเชิงทวีป",
["cpar"] = "civil parish",
["damun"] = "direct-administered municipality",
["dep"] = "dependency",
["department capital"] = "departmental capital",
["dept"] = "department",
["depterr"] = "dependent territory",
["dist"] = "อำเภอ",
["distmun"] = "district municipality",
["div"] = "division",
["emp"] = "จักรวรรดิ",
["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"] = "เกาะ",
["lbor"] = "London borough",
["lga"] = "local government area",
["lgarea"] = "local government area",
["lgd"] = "local government district",
["lgdist"] = "local government district",
["metbor"] = "metropolitan borough",
["metcity"] = "มหานคร",
["metmun"] = "metropolitan municipality",
["mtn"] = "ภูเขา",
["mun"] = "เทศบาล",
["mundist"] = "municipal district",
["nonmetropolitan county"] = "non-metropolitan county",
["obl"] = "oblast",
["okr"] = "okrug",
["p"] = "จังหวัด",
["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"] = "จังหวัด",
["r"] = "ภูมิภาค",
["range"] = "เทือกเขา",
["rcm"] = "regional county municipality",
["rcomun"] = "regional county municipality",
["rdist"] = "regional district",
["rep"] = "republic",
["rhrom"] = "rural hromada",
["riv"] = "แม่น้ำ",
["rmun"] = "regional municipality",
["robor"] = "royal borough",
["romp"] = "Roman province",
["runit"] = "regional unit",
["rurmun"] = "rural municipality",
["s"] = "รัฐ",
["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"] = "ดินแดน",
["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",
}
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",
["ประเทศ"] = "เมืองหลวงของประเทศ",
-- The following are not obviously different from 'county seats' but the latte terminology is used in the US.
["เทศมณฑล"] = "เมืองหลวงของเทศมณฑล",
["department"] = "departmental capitals",
["อำเภอ"] = "เมืองหลวงของอำเภอ",
["division"] = "division capitals",
["emirate"] = "emirate capitals",
["governorate"] = "governorate capitals",
["hromada"] = "hromada capitals",
["krai"] = "krai capitals",
["มหานคร"] = "เมืองหลวงของมหานคร",
["เทศบาล"] = "เมืองหลวงของเทศบาล",
["oblast"] = "oblast capitals",
["okrug"] = "okrug capitals",
["prefecture"] = "prefectural capitals",
["จังหวัด"] = "เมืองหลวงของจังหวัด",
["raion"] = "raion capitals",
["regency"] = "regency capitals",
["ภูมิภาค"] = "เมืองหลวงของภูมิภาค",
["regional unit"] = "regional unit capitals",
["republic"] = "republic 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",
},
["ประเทศ"] = {
["Holy Roman Empire"] = "the",
},
["จักรวรรดิ"] = {
["Holy Roman Empire"] = "the",
},
["เกาะ"] = {
["North Island"] = "the",
["South Island"] = "the",
},
["ภูมิภาค"] = {
["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 of "},
["ประเทศ"] = {"^Republic of ", " Republic$"},
["republic"] = {"^Republic of ", " Republic$"},
["ภูมิภาค"] = {" [Rr]egion$"},
["แม่น้ำ"] = {" River$"},
["local government area"] = {"^Shire of "},
["เทศมณฑล"] = {"^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 = {
["ภูมิภาค"] = {
["Eastern Europe"] = {"continent/ยุโรป"},
["Central Europe"] = {"continent/ยุโรป"},
["Western Europe"] = {"continent/ยุโรป"},
["South Europe"] = {"continent/ยุโรป"},
["Southern Europe"] = {"continent/ยุโรป"},
["Northern Europe"] = {"continent/ยุโรป"},
["Northeast Europe"] = {"continent/ยุโรป"},
["Northeastern Europe"] = {"continent/ยุโรป"},
["Southeast Europe"] = {"continent/ยุโรป"},
["Southeastern Europe"] = {"continent/ยุโรป"},
["North Caucasus"] = {"continent/ยุโรป"},
["South Caucasus"] = {"continent/เอเชีย"},
["South Asia"] = {"continent/เอเชีย"},
["Southern Asia"] = {"continent/เอเชีย"},
["East Asia"] = {"continent/เอเชีย"},
["Eastern Asia"] = {"continent/เอเชีย"},
["Central Asia"] = {"continent/เอเชีย"},
["West Asia"] = {"continent/เอเชีย"},
["Western Asia"] = {"continent/เอเชีย"},
["Southeast Asia"] = {"continent/เอเชีย"},
["North Asia"] = {"continent/เอเชีย"},
["Northern Asia"] = {"continent/เอเชีย"},
["Anatolia"] = {"continent/เอเชีย"},
["Asia Minor"] = {"continent/เอเชีย"},
["Mesopotamia"] = {"continent/เอเชีย"},
["North Africa"] = {"continent/แอฟริกา"},
["Central Africa"] = {"continent/แอฟริกา"},
["West Africa"] = {"continent/แอฟริกา"},
["East Africa"] = {"continent/แอฟริกา"},
["Southern Africa"] = {"continent/แอฟริกา"},
["Central America"] = {"continent/อเมริกากลาง"},
["Caribbean"] = {"continent/อเมริกาเหนือ"},
["Polynesia"] = {"continent/โอเชียเนีย"},
["Micronesia"] = {"continent/โอเชียเนีย"},
["Melanesia"] = {"continent/โอเชียเนีย"},
["Siberia"] = {"country/รัสเซีย", "continent/เอเชีย"},
["Russian Far East"] = {"country/รัสเซีย", "continent/เอเชีย"},
["South Wales"] = {"constituent country/เวลส์", "continent/ยุโรป"},
["Balkans"] = {"continent/ยุโรป"},
["West Bank"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza"] = {"country/ปาเลสไตน์", "continent/เอเชีย"},
["Gaza Strip"] = {"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
-- Categorize both in key, and in the larger polity that the key is part of, e.g. [[Hirakata]] goes in both
-- "Cities in Osaka Prefecture" and "Cities in Japan". (But don't do the latter if no_container_cat is set.)
local cap_plural_entry_placetype = ucfirst(plural_entry_placetype)
local retcats = {("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(key, spec))} --th
if container_trail[1] and not spec.no_container_cat then
for _, container in ipairs(container_trail[1]) do
insert(retcats, ("%s%s%s"):format(cap_plural_entry_placetype, generic_before_non_cities, export.get_prefixed_key(container.key, container.spec))) --th
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 = "นคร",
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').
local capital_cat = export.placetype_to_capital_cat[holonym_placetype]
if not capital_cat then
capital_cat = export.placetype_to_capital_cat[holonym_placetype:gsub("^.* ", "")]
end
if capital_cat then
capital_cat = ucfirst(capital_cat)
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
insert(retcats, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(key, spec)))
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, ("%sของ%s"):format(capital_cat, export.get_prefixed_key(container.key,
container.spec)))
inserted_specific_variant_cat = true
end
end
end
if not inserted_specific_variant_cat then
insert(retcats, capital_cat)
end
else
-- We didn't recognize the holonym placetype; just put in 'Capital cities'.
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:สถานที่ในMerseyside, England]] (and
[[:Category:en:สถานที่ใน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:สถานที่ในBoston]], along with [[:Category:en:สถานที่ในMassachusetts, USA]] and
[[:Category:en:สถานที่ใน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
insert(retcats, ("สถานที่ใน%s"):format(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:สถานที่ในOsaka Prefecture, Japan]] and [[Category:สถานที่ใน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 "ของ"
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
local retcats = {}
for _, pt_cat in ipairs(cat_as) do
if type(pt_cat) == "string" then
pt_cat = {type = pt_cat}
end
local pt_prep = pt_cat.prep or prep
insert(retcats, ucfirst(pt_cat.type) .. pt_prep .. export.get_prefixed_key(key, spec)) --th
end
return retcats
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.title.getCurrentTitle().subpageText)
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 "ใน" not "ของ", 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 "ของ" or "ใน") ..
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("เทศมณฑล", 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("เทศมณฑล", 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("เทศมณฑล", 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 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.iran_provinces[unlinked_placename .. ", Iran"] or
m_locations.laos_provinces[unlinked_placename .. ", Laos"] or
m_locations.north_korea_provinces[unlinked_placename .. ", North Korea"] or
m_locations.south_korea_provinces[unlinked_placename .. ", South Korea"] or
m_locations.thailand_provinces[unlinked_placename .. ", ไทย"] or
m_locations.turkey_provinces[unlinked_placename .. ", Turkey"] or
m_locations.vietnam_provinces[unlinked_placename .. ", เวียดนาม"] then
return suffix_display_handler("จังหวัด", 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("รัฐ", 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
`สถานที่ใน``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 = "ของ"`, 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 `"ใน"`.
* `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 = "ภูมิภาค"`.
* `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 "เทศมณฑล" 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 = "ของ",
class = "subpolity",
},
["administrative capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["administrative center"] = {
link = "w",
fallback = "เมืองหลวงที่ไม่ใช่นคร",
},
["administrative centre"] = {
link = "w",
fallback = "administrative center",
},
["administrative county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["administrative district"] = {
link = "w",
fallback = "อำเภอ",
},
["administrative headquarters"] = {
link = "separately",
fallback = "administrative centre",
},
["administrative region"] = {
link = true,
preposition = "ของ",
suffix = "ภูมิภาค", -- but prefix is still "administrative region (of)"
fallback = "ภูมิภาค",
class = "subpolity",
},
["administrative seat"] = {
link = "w",
fallback = "administrative centre",
},
["administrative territory"] = {
link = "separately",
preposition = "ของ",
suffix = "ดินแดน", -- but prefix is still "administrative territory (of)"
fallback = "ดินแดน",
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 = "ของ",
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 = "เกาะ",
},
["area"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "natural feature",
default = {"ทะเล"},
},
["arrondissement"] = {
link = true,
preposition = "ของ",
-- 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 = "จังหวัด",
},
["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 = "เกาะ",
default = {true},
},
["autonomous city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
has_neighborhoods = true,
},
["autonomous community"] = {
-- Spain; refers to regional entities, not village-like entities, as might be expected from "community"
link = true,
preposition = "ของ",
class = "subpolity",
},
["autonomous island"] = {
-- Comoros; seems like an administrative atoll of the Maldives.
link = "+w:autonomous islands of Comoros",
preposition = "ของ",
class = "subpolity",
},
["autonomous oblast"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "oblast",
class = "subpolity",
},
["autonomous okrug"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = "okrug",
class = "subpolity",
},
["autonomous prefecture"] = {
link = true,
fallback = "prefecture",
},
["autonomous province"] = {
link = "w",
fallback = "จังหวัด",
},
["autonomous region"] = {
link = "w",
preposition = "ของ",
fallback = "administrative region",
-- "administrative region" sets an affix of "ภูมิภาค" but we want to display as "Tibet Autonomous Region"
-- if the user writes 'ar:Suf/Tibet'.
affix = "autonomous region",
},
["autonomous republic"] = {
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territorial unit"] = {
-- Moldova; only two of them, one for Gagauzia and one for Transnistria.
link = "w",
preposition = "ของ",
class = "subpolity",
},
["autonomous territory"] = {
link = "w",
fallback = "dependent territory",
},
["bailiwick"] = {
-- Jersey, etc.
link = true,
fallback = "องค์การทางการเมือง",
},
["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 = "ทะเลสาบ",
},
["bay"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = {"ธรณีสัณฐาน", "ecosystems", "water"},
},
["borough"] = {
link = true,
preposition = "ของ",
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 = "ของ",
has_neighborhoods = true,
class = "capital",
},
["branch"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["bridge"] = {
link = true,
class = "man-made structure",
default = {"Named bridges"},
},
["building"] = {
link = true,
class = "man-made structure",
default = {"Named buildings"},
},
["built-up area"] = {
link = "w",
fallback = "area",
},
["burgh"] = {
link = true,
fallback = "borough",
},
["business park"] = {
link = true,
fallback = "park",
},
["caliphate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["canton"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["cape"] = {
link = true,
fallback = "headland",
},
["capital"] = {
link = true,
fallback = "เมืองหลวง",
},
["เมืองหลวง"] = {
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 = "ของ",
has_neighborhoods = true,
class = "capital",
bare_category_parent = "นคร",
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 = "นคร",
},
["caplc"] = {
link = "[[capital]] and [[large]]st [[city]]",
plural_link = false,
fallback = "เมืองหลวง",
},
["captaincy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["caravan city"] = {
link = "w",
fallback = "นคร",
class = "settlement",
inherently_former = {"ANCIENT", "FORMER"},
},
["castle"] = {
link = true,
fallback = "building",
},
["cathedral city"] = {
link = true,
fallback = "นคร",
},
["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 = "ของ",
class = "subpolity",
},
["census town"] = {
link = "w",
fallback = "เมือง",
},
["central business district"] = {
link = true,
fallback = "neighborhood",
},
["cercle"] = {
-- Mali
link = "+w:cercles of Mali",
preposition = "ของ",
class = "subpolity",
},
["ceremonial county"] = {
link = true,
fallback = "เทศมณฑล",
},
["chain of islands"] = {
link = "[[chain]] of [[island]]s",
plural = "chains of islands",
plural_link = "[[chain]]s of [[island]]s",
fallback = "เกาะ",
},
["channel"] = {
link = true,
fallback = "strait",
},
["charter community"] = {
-- Northwest Territories, Canada
link = "w",
fallback = "village",
},
["นคร"] = {
link = true,
generic_before_non_cities = "ใน",
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/*"] = {"City-states", "นครใน+++", "ประเทศใน+++", "เมืองหลวงของ"},
default = {"City-states", "นคร", "ประเทศ", "เมืองหลวงของประเทศ"},
},
["civil parish"] = {
-- Mostly England; similar to municipalities
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["coal city"] = {
link = "+w:coal town",
fallback = "นคร",
},
["coal town"] = {
link = "w",
fallback = "เมือง",
},
["collectivity"] = {
link = "w",
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["commandery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["commonwealth"] = {
link = true,
preposition = "ของ",
-- No default; applies specifically to Puerto Rico
class = "subpolity",
},
["commune"] = {
link = true,
fallback = "เทศบาล",
},
["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 = "เทศบาล",
},
["condominium"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["confederacy"] = {
link = true,
fallback = "confederation",
},
["confederation"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["constituency"] = {
-- currently we have them as political divisions of Namibia but many countries have them
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent country"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["constituent part"] = {
link = "separately",
preposition = "ของ",
class = "subpolity",
},
["constituent republic"] = {
-- Of Russia, Yugoslavia, etc.
link = "separately",
preposition = "ของ",
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",
},
["ทวีป"] = {
link = true,
category_link = false, -- can't occur as a bare category
class = "natural feature",
default = {"ทวีปและภูมิภาคเชิงทวีป"},
},
["ภูมิภาคเชิงทวีป"] = {
link = "separately",
category_link = false, -- can't occur as a bare category
class = "geographic region",
fallback = "ทวีป",
},
["ทวีปและภูมิภาคเชิงทวีป!"] = {
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["ประเทศ"] = {
link = true,
class = "polity", --ห้ามแปล class
["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", --ห้ามแปล class
},
["เทศมณฑล"] = {
link = true,
preposition = "ของ",
display_handler = county_display_handler,
class = "subpolity",
},
["county borough"] = {
link = true,
-- in Wales; similar to a county
preposition = "ของ",
affix_type = "suf",
fallback = "borough",
class = "subpolity",
},
["county seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
has_neighborhoods = true,
class = "capital",
},
["county town"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
fallback = "เมือง",
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 = "นคร",
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 = "ทะเลสาบ",
},
["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 = "ของ",
class = "subpolity",
},
["department"] = {
link = true,
preposition = "ของ",
affix_type = "suf",
class = "subpolity",
},
["departmental capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dependency"] = {
link = true,
fallback = "dependent territory",
},
["dependent territory"] = {
link = "w",
preposition = "ของ",
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 = "เทศบาล",
},
["direct-controlled municipality"] = {
-- several countries
link = "w",
fallback = "เทศบาล",
},
["distributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["อำเภอ"] = {
link = true,
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "ของ",
affix_type = "suf",
no_affix_strings = {"อำเภอ", "เทศบาล"},
fallback = "เทศบาล",
class = "subpolity",
},
["division"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["division capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["dome"] = {
link = true,
fallback = "ภูเขา",
},
["dormant volcano"] = {
link = true,
fallback = "volcano",
},
["duchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["emirate"] = {
link = true,
preposition = "ของ",
-- FIXME: Can be subpolities (of the United Arab Emirates).
fallback = "องค์การทางการเมือง",
},
["จักรวรรดิ"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["enclave"] = {
link = true,
preposition = "ของ",
-- Enclaves can theoretically be any size but assume a subpolity.
class = "subpolity",
},
["entity"] = {
-- Bosnia and Herzegovina
link = "+w:entities of Bosnia and Herzegovina",
preposition = "ของ",
class = "subpolity",
},
["escarpment"] = {
link = true,
fallback = "ภูเขา",
},
["ethnographic region"] = {
-- used in Lithuania
link = "+w:ethnographic regions of Lithuania",
fallback = "geographic and cultural area",
},
["exclave"] = {
link = true,
preposition = "ของ",
-- 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"},
},
["farms and ranches!"] = {
category_link = "[[farm]]s and [[ranch]]es",
class = "non-admin settlement",
},
["federal city"] = {
link = "w",
preposition = "ของ",
fallback = "นคร",
},
["federal district"] = {
link = true,
preposition = "ของ",
-- 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 = "ของ",
class = "subpolity",
},
["federal territory"] = {
link = "w",
fallback = "ดินแดน",
},
["fictional location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "ของ",
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 = "ของ",
preposition = "ของ",
class = "geographic region",
bare_category_parent = "สถานที่",
["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 = "ของ",
class = "subpolity",
},
["gewog"] = {
-- Bhutan
link = true,
preposition = "ของ",
class = "subpolity",
},
["ghost town"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["greater administrative region"] = {
-- China (former division)
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["gromada"] = {
-- Poland (former division)
link = "w",
preposition = "ของ",
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 = "ของ",
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 = "นคร",
},
["harbor town"] = {
link = "separately",
fallback = "เมือง",
},
["harbour city"] = {
link = "separately",
fallback = "นคร",
},
["harbour town"] = {
link = "separately",
fallback = "เมือง",
},
["headland"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["headquarters"] = {
link = "w",
fallback = "administrative centre",
},
["heath"] = {
link = true,
fallback = "moor",
},
["hemisphere"] = {
link = true,
entry_placetype_use_the = true,
fallback = "ภูมิภาคแบบทวีป",
},
["highway"] = {
link = true,
fallback = "road",
},
["hill"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["hill station"] = {
link = "w",
fallback = "เมือง",
},
["hill town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "นคร",
},
["home rule municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["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 = "ของ",
affix_type = "suf",
class = "subpolity",
},
["inactive volcano"] = {
link = "w",
fallback = "dormant volcano",
},
["independent city"] = {
link = true,
fallback = "นคร",
},
["independent town"] = {
link = "+independent city",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
class = "subpolity",
default = {true},
},
["inland sea"] = {
-- note, we also have 'inland' as a qualifier
link = true,
fallback = "ทะเล",
},
["inner city area"] = {
link = "[[inner city]] [[area]]",
fallback = "neighborhood",
},
["เกาะ"] = {
link = true,
preposition = "ของ",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["island country"] = {
-- FIXME: The following should map to both 'island' and 'country'.
link = "w",
fallback = "ประเทศ",
},
["island group"] = {
link = "separately",
fallback = "เกาะ",
},
["island municipality"] = {
link = "w",
fallback = "เทศบาล",
},
["islet"] = {
link = "w",
fallback = "เกาะ",
},
["Israeli settlement"] = {
link = "w",
class = "settlement",
default = {true},
},
["judicial capital"] = {
link = "w",
fallback = "เมืองหลวง",
},
["khanate"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["kibbutz"] = {
link = true,
plural = "kibbutzim",
class = "non-admin settlement",
default = {true},
},
["kingdom"] = {
link = true,
fallback = "monarchy",
},
["krai"] = {
link = true,
preposition = "ของ",
affix_type = "Suf",
class = "subpolity",
},
["ทะเลสาบ"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["ธรณีสัณฐาน!"] = {
category_link = "[[ธรณีสัณฐาน]]",
bare_category_parent = "สถานที่",
addl_bare_category_parents = {"โลก"},
},
["largest city"] = {
link = "[[large]]st [[city]]",
entry_placetype_use_the = true,
fallback = "นคร",
has_neighborhoods = true,
},
["league"] = {
link = true,
fallback = "confederation",
},
["legislative capital"] = {
link = "separately",
fallback = "เมืองหลวง",
},
["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 = "ของ",
class = "subpolity",
},
["local council"] = {
-- Malta; similar to municipalities
link = "+w:local councils of Malta",
preposition = "ของ",
fallback = "เทศบาล",
},
["local government district"] = {
link = "w",
preposition = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "suf",
affix = "อำเภอ",
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 = "ของ",
affix_type = "pref",
affix = "borough",
fallback = "local government district with borough status",
has_neighborhoods = true,
},
["macroregion"] = {
link = true,
fallback = "ภูมิภาค",
},
["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 = "สถานที่",
},
["manor"] = {
-- FIXME: or is this more like a farm?
link = true,
fallback = "building",
},
["marginal sea"] = {
link = true,
preposition = "ของ",
fallback = "ทะเล",
},
["market city"] = {
link = "+market town",
fallback = "นคร",
},
["market town"] = {
link = true,
fallback = "เมือง",
},
["massif"] = {
link = true,
fallback = "ภูเขา",
},
["megacity"] = {
link = true,
fallback = "นคร",
},
["metro station"] = {
link = true,
class = "man-made structure",
},
["metropolitan borough"] = {
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"borough", "นคร"},
fallback = "local government district",
has_neighborhoods = true,
},
["มหานคร"] = {
-- These exist e.g. in Italy and are more like municipalities or even provinces than cities.
link = true,
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = {"มหานคร", "นคร"},
class = "subpolity",
},
["metropolitan county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "ของ",
affix_type = "Suf",
no_affix_strings = {"metropolitan", "เทศบาล"},
fallback = "เทศบาล",
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 = "ประเทศ",
},
["microstate"] = {
link = true,
fallback = "ประเทศ",
},
["military base"] = {
link = "w",
class = "settlement", -- or "man-made structure"?
default = {true},
},
["minster town"] = {
-- England
link = "separately",
fallback = "เมือง",
},
["monarchy"] = {
link = true,
fallback = "องค์การทางการเมือง",
},
["moor"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "ecosystems"},
default = {true},
},
["moorland"] = {
link = true,
fallback = "moor",
},
["motorway"] = {
link = true,
fallback = "road",
},
["ภูเขา"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["mountain indigenous district"] = {
-- Taiwan
link = "+w:district (Taiwan)",
fallback = "อำเภอ",
},
["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 = {"ภูเขา"},
default = {true},
},
["เทือกเขา"] = {
link = true,
fallback = "ภูเขา",
},
["mountainous region"] = {
link = "separately",
fallback = "ภูมิภาค",
},
["mukim"] = {
-- Malaysia, Brunei, Indonesia, Singapore
link = true,
preposition = "ของ",
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 = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "เทศบาล",
},
["เทศบาล"] = {
link = true,
preposition = "ของ",
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 = "เทศบาล",
},
["museum"] = {
link = true,
fallback = "building",
},
["mythological location"] = {
link = "separately",
former_type = "!",
class = "hypothetical location",
bare_category_parent = "สถานที่",
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 = "เมืองหลวง",
},
["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 = "สถานที่",
},
["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", "อำเภอ", "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 = "ใน",
generic_before_cities = "ของ",
-- 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 "ของ" before cities and "ใน" before non-cities regardless. (FIXME: We should change that.)
preposition = "ของ",
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 = "ใน",
class = "subpolity", --?
},
["new town"] = {
link = true,
fallback = "เมือง",
},
["เมืองหลวงที่ไม่ใช่นคร"] = {
link = "[[เมืองหลวง]]",
entry_placetype_use_the = true,
preposition = "ของ",
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 = "เทศมณฑล",
},
["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 = "ใน",
class = "subpolity",
["country/*"] = {true},
["continent/*"] = {true},
default = {true},
},
["non-sovereign monarchy"] = {
link = "w",
fallback = "non-sovereign kingdom",
},
["oblast"] = {
link = true,
preposition = "ของ",
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",
},
["มหาสมุทร"] = {
link = true,
holonym_use_the = true,
class = "natural feature",
addl_bare_category_parents = {"ทะเล", "bodies of water"},
default = {true},
},
["okrug"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true,
},
["parish seat"] = {
link = true,
entry_placetype_use_the = true,
preposition = "ของ",
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 = "ภูเขา",
},
["peninsula"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
default = {true},
},
["periphery"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["สถานที่!"] = {
generic_before_non_cities = "ใน",
generic_before_cities = "ใน",
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 = "ชื่อ (หัวข้อ)",
},
["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 = {"ธรณีสัณฐาน"},
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 = "สถานที่",
},
["องค์การทางการเมือง"] = {
link = true,
category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]",
class = "polity", --ห้ามแปล class
bare_category_parent = "สถานที่",
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 "นคร"
link = true,
fallback = "นคร",
},
["port town"] = {
-- FIXME: should categorize into "Ports" as well as "เมือง"
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
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 = "ของ",
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 "เทศมณฑล" or "county boroughs"), of which there are 22.
link = "w",
preposition = "ของ",
class = "subpolity",
inherently_former = {"FORMER"},
},
["primary area"] = {
-- a grouping of "อำเภอ" (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",
},
["จังหวัด"] = {
link = true,
preposition = "ของ",
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 = true,
fallback = "เมืองหลวง",
},
["raion"] = {
link = true,
preposition = "ของ",
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 = "ของ",
class = "subpolity",
},
["ภูมิภาค"] = {
link = true,
preposition = "ของ",
-- 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 = "เมืองหลวง",
},
["regional county municipality"] = {
-- Quebec
link = "w",
preposition = "ของ",
affix_type = "Suf",
no_affix_strings = {"เทศบาล", "เทศมณฑล"},
fallback = "เทศบาล",
},
["regional district"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "อำเภอ",
fallback = "อำเภอ",
},
["regional municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
},
["regional unit"] = {
link = "w",
preposition = "ของ",
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 = "เทศมณฑล",
},
["republic"] = {
-- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "ประเทศ" 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 = "ทะเลสาบ",
},
["residential area"] = {
link = "separately",
fallback = "neighborhood",
},
["resort city"] = {
link = "w",
fallback = "นคร",
},
["resort town"] = {
link = "w",
fallback = "เมือง",
},
["แม่น้ำ"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เกาะ",
},
["road"] = {
link = true,
class = "man-made structure",
default = {"Named roads"},
},
["Roman province"] = {
-- FIXME! Eliminate this in favor of 'former province|emp/Roman Empire'
link = "w",
default = {"Provinces of the Roman Empire"},
class = "subpolity",
},
["royal borough"] = {
link = "w",
preposition = "ของ",
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 = "เมืองหลวง",
},
["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 = "เทศบาล",
},
["rural hromada"] = {
link = "[[rural]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["rural municipality"] = {
link = "w",
preposition = "ของ",
affix_type = "Pref",
no_affix_strings = "เทศบาล",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["rural township"] = {
-- Taiwan
link = "+w:rural township (Taiwan)",
fallback = "township",
},
["sanctuary"] = {
link = true,
fallback = "temple",
},
["satrapy"] = {
link = true,
preposition = "ของ",
class = "subpolity",
inherently_former = {"ANCIENT", "FORMER"},
},
["ทะเล"] = {
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 = "ของ",
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",
},
["การตั้งถิ่นฐาน"] = {
link = true,
category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s",
bare_category_parent = "สถานที่",
-- not necessarily true, but usually is the case
fallback = "village",
},
["settlement hromada"] = {
link = "[[w:Populated สถานที่ในUkraine#Rural settlements|การตั้งถิ่นฐาน]] [[w:hromada|hromada]]",
affix_type = "suf",
fallback = "hromada",
},
["sheading"] = {
-- Isle of Man
link = true,
fallback = "อำเภอ",
},
["sheep station"] = {
-- Australia
link = true,
fallback = "farm",
},
["shire"] = {
link = true,
fallback = "เทศมณฑล",
},
["shire county"] = {
link = "w",
fallback = "เทศมณฑล",
},
["shire town"] = {
link = true,
fallback = "county seat",
},
["ski resort city"] = {
link = "[[ski resort]] [[city]]",
fallback = "นคร",
},
["ski resort town"] = {
link = "[[ski resort]] [[town]]",
fallback = "เมือง",
},
["spa city"] = {
link = "+w:spa town",
fallback = "นคร",
},
["spa town"] = {
link = "w",
fallback = "เมือง",
},
["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 = "ของ",
class = "subpolity",
has_neighborhoods = true, --?
-- no suffix since สถานที่ใน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 = "เทศบาล",
},
["special ward"] = {
-- Tokyo
link = true,
fallback = "เทศบาล",
},
["spit"] = {
link = true,
fallback = "peninsula",
},
["spring"] = {
link = true,
class = "natural feature",
default = {true},
},
["star"] = {
link = true,
class = "natural feature",
default = {true},
},
["รัฐ"] = {
link = true,
preposition = "ของ",
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 = "องค์การทางการเมือง",
},
["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 = "เมืองหลวง",
},
["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 = "นคร",
},
["statutory town"] = {
link = "w",
fallback = "เมือง",
},
["strait"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"bodies of water"},
default = {true},
},
["stream"] = {
link = true,
fallback = "แม่น้ำ",
},
["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 = "นคร",
},
["sub-prefectural city"] = {
link = "w",
fallback = "subprovincial city",
},
["ตำบล"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 = "ของ",
class = "subpolity",
},
["subprovince"] = {
link = true,
preposition = "ของ",
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 = "ของ",
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 "ใน" for non-cities and "ของ" for cities. (FIXME: Change this.)
generic_before_non_cities = "ใน",
generic_before_cities = "ของ",
preposition = "ของ",
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 "เทศมณฑล" 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 = "อำเภอ",
},
["ดินแดน"] = {
link = true,
preposition = "ของ",
class = "subpolity",
},
["theme"] = {
link = "+w:theme (Byzantine district)",
preposition = "ของ",
class = "subpolity",
},
["เมือง"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "เมือง",
},
["township"] = {
link = true,
has_neighborhoods = true,
class = "settlement", --?
default = {true},
},
["township municipality"] = {
-- Quebec
link = "+w:township municipality (Quebec)",
preposition = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["traditional county"] = {
link = true,
fallback = "เทศมณฑล",
},
["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 = "นคร",
class = "settlement",
inherently_former = {"FORMER"},
},
["tributary"] = {
link = true,
preposition = "ของ",
fallback = "แม่น้ำ",
},
["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 = "ใน",
class = "non-admin settlement",
},
["unincorporated territory"] = {
link = "w",
fallback = "ดินแดน",
},
["union territory"] = {
-- India
link = true,
preposition = "ของ",
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", --ห้ามแปล class
default = {"Unrecognized and nearly unrecognized countries"},
},
["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 = "นคร",
},
["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 = "เมือง",
},
["valley"] = {
link = true,
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน", "water"},
default = {true},
},
["viceroyalty"] = {
-- in essence, a type of colony
link = true,
fallback = "dependent territory",
},
["village"] = {
link = true,
generic_before_non_cities = "ใน",
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 = "ของ",
fallback = "เทศบาล",
has_neighborhoods = true, --?
},
["voivodeship"] = {
-- Poland
link = true,
display_handler = voivodeship_display_handler,
preposition = "ของ",
class = "subpolity",
},
["volcano"] = {
link = true,
plural = "volcanoes",
class = "natural feature",
addl_bare_category_parents = {"ธรณีสัณฐาน"},
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 = "ของ",
affix_type = "suf",
affix = "community",
has_neighborhoods = true,
class = "settlement",
},
["zone"] = {
-- administrative division of Ethiopia, Qatar, Nepal, India
link = "+w:zone#Place names",
preposition = "ของ",
class = "subpolity",
},
----------------------------------------------------------------------------------------------
-- Categories for former places --
----------------------------------------------------------------------------------------------
["ANCIENT capital"] = {
link = false,
entry_placetype_use_the = true,
preposition = "ของ",
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 settlements", "Former capitals"},
},
["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"},
},
["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 = "ของ",
has_neighborhoods = true,
class = "capital",
default = {"Former capitals"},
},
["former capitals!"] = {
category_link = "former [[capital]] [[city|cities]] and [[town]]s",
bare_category_parent = "การตั้งถิ่นฐาน",
},
["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", --ห้ามแปล class
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 = "ของ",
class = "subpolity",
default = {"Former dependent territories"},
},
["former districts!"] = {
-- For categorizing former districts of China
category_link = "no-longer-existing [[district]]s",
bare_category_breadcrumb = "อำเภอ",
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 = "เทศบาล",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
bare_category_parent = "former places",
},
["FORMER polity"] = {
link = false,
class = "polity", --ห้ามแปล class
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 = "จังหวัด",
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 = "ของ",
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 = "การตั้งถิ่นฐาน",
bare_category_parent = "former political divisions",
},
["FORMER subpolity"] = {
link = false,
preposition = "ของ",
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 = "เทศมณฑล",
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 = "ประเทศ",
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 = "อำเภอ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "จังหวัด",
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 = "ภูมิภาค",
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 = "รัฐ",
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 = "ดินแดน",
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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "สถานที่",
},
["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 = "นคร",
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 = "ทวีป",
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 = "ประเทศ",
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 = "รัฐ",
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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "เมืองหลวง",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "องค์การทางการเมือง",
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 = "การตั้งถิ่นฐาน",
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 = "นคร",
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 "นคร"
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 "นคร" 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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = "นคร",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"นคร"},
},
["nicknames for continents!"] = {
full_category_link = "[[nickname]]s for [[continent]]s",
bare_category_breadcrumb = "ทวีป",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ทวีป"},
},
["nicknames for countries!"] = {
full_category_link = "[[nickname]]s for [[country|countries]]",
bare_category_breadcrumb = "ประเทศ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"ประเทศ"},
},
["nicknames for places!"] = {
full_category_link = "[[nickname]]s for [[place]]s",
bare_category_breadcrumb = "สถานที่",
bare_category_parent = "nicknames",
addl_bare_category_parents = {"สถานที่"},
},
["nicknames for states!"] = {
-- For categorizing nicknames for states of e.g. the United States
full_category_link = "[[nicknames]] for [[state]]s",
bare_category_breadcrumb = "รัฐ",
bare_category_parent = "nicknames for places",
addl_bare_category_parents = {"รัฐ"},
},
["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 "นคร"
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 "นคร" 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 = "สถานที่",
},
["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 = "ประเทศ",
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 = "ประเทศ",
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 = "สถานที่",
},
["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 = {"รัฐ"},
},
["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
return export
o4nharavm0bp00lax28x9mwxra5pjkt
คุยกับผู้ใช้:Octahedron80/อักษรไทธรรม
3
2330422
5720829
5720677
2026-04-21T14:49:46Z
Ai Ku Karng
17824
/* รูปแบบการเขียน */ ตอบกลับ
5720829
wikitext
text/x-wiki
== รูปแบบการเขียน ==
รูปแบบการเขียนอักษรธรรมล้านนาภาษาไทลื้อ เช่นᨠᩬᩳ อิงจากอะไรครับ [[ผู้ใช้:Ai Ku Karng|Ai Ku Karng]] ([[คุยกับผู้ใช้:Ai Ku Karng|คุย]]) 20:47, 20 เมษายน 2569 (+07)
[https://drive.google.com/open?id=10c5lzGMittfoU-BvIHv0XJLkgaEPhuyR&usp=drive_fs] [https://drive.google.com/open?id=1x29dkAuhsbeM0Anp_Ok9x4yu_CMBvKJD&usp=drive_fs] [https://wrdingham.co.uk/lanna/renderer_test.htm] ทั้งหมดนี้เป็นการประมวลผลรวมมาแล้ว --[[ผู้ใช้:OctraBot|OctraBot]] ([[คุยกับผู้ใช้:OctraBot|คุย]]) 22:24, 20 เมษายน 2569 (+07)
:มีแหล่งอ้างอิงอื่น เช่นบันทึกโบราณไหม [[ผู้ใช้:Ai Ku Karng|Ai Ku Karng]] ([[คุยกับผู้ใช้:Ai Ku Karng|คุย]]) 21:49, 21 เมษายน 2569 (+07)
gcyhlbtc571uax5xxqias5y7ow62tei
5720863
5720829
2026-04-22T01:41:29Z
OctraBot
3198
/* รูปแบบการเขียน */
5720863
wikitext
text/x-wiki
== รูปแบบการเขียน ==
รูปแบบการเขียนอักษรธรรมล้านนาภาษาไทลื้อ เช่นᨠᩬᩳ อิงจากอะไรครับ [[ผู้ใช้:Ai Ku Karng|Ai Ku Karng]] ([[คุยกับผู้ใช้:Ai Ku Karng|คุย]]) 20:47, 20 เมษายน 2569 (+07)
[https://drive.google.com/open?id=10c5lzGMittfoU-BvIHv0XJLkgaEPhuyR&usp=drive_fs] [https://drive.google.com/open?id=1x29dkAuhsbeM0Anp_Ok9x4yu_CMBvKJD&usp=drive_fs] [https://wrdingham.co.uk/lanna/renderer_test.htm] ทั้งหมดนี้เป็นการประมวลผลรวมมาแล้ว --[[ผู้ใช้:OctraBot|OctraBot]] ([[คุยกับผู้ใช้:OctraBot|คุย]]) 22:24, 20 เมษายน 2569 (+07)
:มีแหล่งอ้างอิงอื่น เช่นบันทึกโบราณไหม [[ผู้ใช้:Ai Ku Karng|Ai Ku Karng]] ([[คุยกับผู้ใช้:Ai Ku Karng|คุย]]) 21:49, 21 เมษายน 2569 (+07)
:ถ้าเขินมีตัวอย่างท้ายเอกสาร 1-2 ส่วนลื้อแบบดั้งเดิมคงต้องไปถามคุณ Alif --[[ผู้ใช้:OctraBot|OctraBot]] ([[คุยกับผู้ใช้:OctraBot|คุย]]) 08:41, 22 เมษายน 2569 (+07)
ig9b6cg5wb3tvafk4nclnafj084wlsq
คุยกับผู้ใช้:囉賽
3
2330465
5720828
2026-04-21T14:46:31Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
5720828
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=囉賽}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 21:46, 21 เมษายน 2569 (+07)
7wmxyp50uyfv97dg3vle8bf84vivc7e
kulturell
0
2330466
5720832
2026-04-21T16:24:19Z
Ponpan
693
เก็บกวาด
5720832
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
{{suffix|de|Kultur|ell|t1=วัฒนธรรม}}
=== การออกเสียง ===
* {{audio|de|De-kulturell.oga}}
* {{audio|de|De-kulturell.ogg}}
=== คำคุณศัพท์ ===
{{de-adj|comp}}
# ซึ่งเกี่ยวกับ[[วัฒนธรรม]], [[ทาง]]วัฒนธรรม, [[เชิง]]วัฒนธรรม
#: {{ux|de|Museen sind '''kulturell''' bedeutsame Einrichtungen.|พิพิธภัณฑ์เป็นสถาบันที่มีความสำคัญทางวัฒนธรรม}}
==== การผันรูป ====
{{de-adecl|comp}}
==== ลูกคำ ====
{{col|de|geistig-kulturell|interkulturell|intrakulturell|multikulturell|soziokulturell|sprachkulturell}}
=== อ่านเพิ่ม ===
* {{R:de:Duden}}
* {{R:de:DWDS}}
7hobo5orate3954zr1y6m803sbypc17
หมวดหมู่:ศัพท์ภาษาเยอรมันที่เติมปัจจัย -ell
14
2330467
5720833
2026-04-21T16:25:09Z
Ponpan
693
สร้างหน้าด้วย "{{auto cat}}"
5720833
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kunde
0
2330468
5720834
2026-04-21T16:48:28Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720834
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{IPA|de|/ˈkʊndə/}}
* {{audio|de|De-Kunde.ogg}}
* {{audio|de|De-Kunde2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{hyph|de|Kun|de}}
=== รากศัพท์ 1 ===
จาก{{inh|de|gmh|kunde}}, จาก{{inh|de|goh|cundo}}, จาก{{inh|de|gmw-pro|*kunþō}}; ร่วมเชื้อสายกับ{{cog|ang|cūþa}}และ{{cog|dum|konde|t=คนรู้จัก, เพื่อน}}
==== คำนาม ====
{{de-noun|m.weak|f=in}}
# [[ลูกค้า]]; [[ผู้]][[ใช้]][[บริการ]]
#: {{ant|de|Verkäufer|Dienstleister|Lieferant}}
#: {{uxi|de|Dieser '''Kunde''' ist ein Stammkunde.|ลูกค้ารายนี้เป็นลูกค้าประจำ}}
#: {{uxi|de|Der '''Kunde''' ist König.|ลูกค้าคือพระเจ้า}}
#: {{ux|de|Für die '''Kunden''' unserer Autovermietung halten sich jederzeit Ansprechpartner zur telefonischen Beratung bereit.|สำหรับลูกค้าที่เช่ารถยนต์ เจ้าหน้าที่ติดต่อจะพร้อมให้คำปรึกษาทางโทรศัพท์ตลอดเวลา}}
# {{lb|de|colloquial|มักใช้กับคำคุณศัพท์}} [[ชาย]], [[หนุ่ม]], [[ไอ้]]; {{lb|de|ส่วนใหญ่|_|pejorative}} ใช้เรียกชายที่ทำตัว[[แปลก]][[ประหลาด]]หรือไม่น่า[[พึงใจ]]
#: {{syn|de|Typ|Kerl|Vogel}}
#: {{uxi|de|Du bist so ein komischer '''Kunde'''!|เธอมันคนประหลาดจริง ๆ!}}
===== การผันรูป =====
{{de-ndecl|m.weak}}
===== คำพ้องความ =====
{{col3|de
|Abnehmer
|Ankäufer
|Auftraggeber
|Besteller
|Bezieher
|Interessent
|Käufer
|Klient
|Konsument
|Mandant
|Verbraucher
}}
===== ลูกคำ =====
{{col3|de
|Altkunde|Anzeigenkunde|Autokunde
|Bahnkunde|Bankkunde|Dauerkunde
|Einmalkunde|Endkunde|Erstkunde|Firmenkunde
|Geschäftskunde|Großkunde|Gelegenheitskunde
|Hauptkunde
|Laufkunde|Neukunde
|Stammkunde
|Telefonkunde|Unternehmenskunde
|Versicherungskunde|Werbekunde
|Kundenbefragung|Kundenberatung|Kundenbetreuer|Kundenbuch
|Kundendaten|Kundendienst
|Kundenparkplatz
|Kundenschwund|Kundenservice|Kundenstamm
|Kundentreue
|Kundenvergraulung
|Kundenwerbung|Kundenwunsch
|Kundenzeitschrift|Kundenzuwachs
|Kundin|Kundschaft
|kundenbezogen|kundenfreundlich|kundengerecht
|kundennah|kundenorientiert
}}
=== รากศัพท์ 2 ===
จาก{{inh|de|gmh|kunde}}, {{m|gmh|künde}}, จาก{{inh|de|goh||*kundī}} (พบในคำประสม) เป็นคำนามเชิงนามธรรมของคำกริยา {{m|de|künden||บอก, ประกาศ, ชี้แจง}} คำนามนี้เกือบหายไปจากภาษาเยอรมันสูง ([[High German]]) ในช่วงคริสต์ศตวรรษที่ 16 แต่ได้รับการฟื้นฟูขึ้นอีกครั้งใน{{der|de|gml|kunde}}; ร่วมเชื้อสายกับ{{cog|nl|kunde}} (และ {{m|nl|konde}})
==== คำนาม ====
{{de-noun|f,n[พบน้อย]}}
# {{lb|de|elevated}} [[ข้อความ]], [[ข่าว]] (ส่วนใหญ่เป็นแบบ[[ปากเปล่า]])
#: {{syn|de|Nachricht|Botschaft|Mitteilung}}
#: {{ux|de|Er überbrachte frohe '''Kunde'''.|เขานำข่าวดีมาแจ้ง}}
# {{lb|de|ในคำประสม}} {{ng|ดูที่ '''{{m|de|-kunde}}'''}}
===== การผันรูป =====
{{de-ndecl|f,n[rare]}}
===== คำลูกกลุ่ม =====
{{col3|de
|Algenkunde
|Altertumskunde
|Aquarienkunde
|Archivkunde|Arzneikunde|Arzneimittelkunde
|Augenheilkunde
|Baukunde|Bergbaukunde|Berufskunde
|Bibelkunde|Bibliothekskunde
|Bodenkunde|Briefmarkenkunde
|Buchkunde|Bücherkunde
|Denkmalkunde
|Erdkunde
|Fachkunde|Fahnenkunde|Fischkunde
|Flaggenkunde|Forstkunde
|Gegenwartskunde|Gemeinschaftskunde|Gesellschaftskunde
|Geschichtskunde|Geschlechterkunde
|Gesteinskunde|Gewässerkunde
|Gletscherkunde
|Handschriftenkunde
|Heilkunde|Heimatkunde
|Himmelskunde|Höhlenkunde|Hüttenkunde
|Insektenkunde|Inschriftenkunde|Instrumentenkunde
|Jagdkunde
|Kartenkunde|Klimakunde
|Klimakunde|Knotenkunde|Kräuterheilkunde|Kräuterkunde|Kriegskunde
|Landbaukunde|Landeskunde|Länderkunde|Lebensmittelkunde|Literaturkunde
|Markscheidekunde|Maschinenkunde|Meereskunde|Medienkunde|Metallkunde
|Münzenkunde|Münzkunde|Namenkunde|Namenskunde|Naturkunde
|Ortsnamenkunde
|Pferdekunde|Pflanzenkunde|Pilzkunde
|Quellenkunde
|Rechtskunde|Reitkunde|Rassenkunde|Religionskunde
|Sachkunde|Sagenkunde|Scheidekunde|Schifffahrtskunde|Schmetterlingskunde|Seenkunde|Seelenkunde|Sexualkunde
|Sittenkunde|Siegelkunde|Sippenkunde|Sozialkunde|Sprachkunde|Staatskunde|Staatsbürgerkunde|Stammeskunde|Sternkunde|Stilkunde
|Tierkunde|Tierheilkunde
|Verfassungskunde|Vermessungskunde|Vogelkunde|Volkskunde|Völkerkunde
|Waffenkunde|Wappenkunde|Warenkunde|Wehrkunde|Weinkunde|Werkstoffkunde|Wetterkunde|Wirtschaftskunde
}}
===== ลูกคำ =====
* {{l|de|kundig}}
* {{l|de|Kundschafter}}
* {{l|de|erkunden}}
=== อ่านเพิ่ม ===
* {{R:de:Grimm}}
* {{R:de:DWDS}}
* {{R:de:Duden|Kunde_Botschaft_Nachricht|Kunde, Botschaft, Nachricht}}
* {{R:de:Duden|Kunde_Abonnent_Kerl|Kunde, Abonnent, Kerl}}
* {{R:de:Duden|Kunde_Kaeufer_Abnehmer|Kunde, Käufer, Abnehmer}}
== ภาษาเพลาท์ดิทช์ ==
=== คำนาม ===
{{head|pdt|รูปนาม}}
# {{plural of|pdt|Kund||ลูกค้า}}
ecu80wh0b4hg1zt6gzh47b6ph4dcr6d
5720841
5720834
2026-04-21T17:00:12Z
Ponpan
693
/* คำนาม */
5720841
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{IPA|de|/ˈkʊndə/}}
* {{audio|de|De-Kunde.ogg}}
* {{audio|de|De-Kunde2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{hyph|de|Kun|de}}
=== รากศัพท์ 1 ===
จาก{{inh|de|gmh|kunde}}, จาก{{inh|de|goh|cundo}}, จาก{{inh|de|gmw-pro|*kunþō}}; ร่วมเชื้อสายกับ{{cog|ang|cūþa}}และ{{cog|dum|konde|t=คนรู้จัก, เพื่อน}}
==== คำนาม ====
{{de-noun|m.weak|f=in}}
# [[ลูกค้า]]; [[ผู้]][[ใช้]][[บริการ]]
#: {{ant|de|Verkäufer|Dienstleister|Lieferant}}
#: {{uxi|de|Dieser '''Kunde''' ist ein Stammkunde.|ลูกค้ารายนี้เป็นลูกค้าประจำ}}
#: {{uxi|de|Der '''Kunde''' ist König.|ลูกค้าคือพระเจ้า}}
#: {{ux|de|Für die '''Kunden''' unserer Autovermietung halten sich jederzeit Ansprechpartner zur telefonischen Beratung bereit.|สำหรับลูกค้าที่เช่ารถยนต์ เจ้าหน้าที่ติดต่อจะพร้อมให้คำปรึกษาทางโทรศัพท์ตลอดเวลา}}
# {{lb|de|colloquial|มักใช้กับคำคุณศัพท์}} [[ชาย]], [[หนุ่ม]], [[ไอ้]]; {{lb|de|ส่วนใหญ่|_|pejorative}} ใช้เรียกชายที่ทำตัว[[แปลก]][[ประหลาด]]หรือไม่น่า[[พึงใจ]]
#: {{syn|de|Typ|Kerl|Vogel}}
#: {{uxi|de|Du bist so ein komischer '''Kunde'''!|เธอมันคนประหลาดจริง ๆ!}}
===== การผันรูป =====
{{de-ndecl|m.weak}}
===== คำพ้องความ =====
{{col3|de
|Abnehmer
|Ankäufer
|Auftraggeber
|Besteller
|Bezieher
|Interessent
|Käufer
|Klient
|Konsument
|Mandant
|Verbraucher
}}
===== ลูกคำ =====
{{col3|de
|Altkunde|Anzeigenkunde|Autokunde
|Bahnkunde|Bankkunde|Dauerkunde
|Einmalkunde|Endkunde|Erstkunde|Firmenkunde
|Geschäftskunde|Großkunde|Gelegenheitskunde
|Hauptkunde
|Laufkunde|Neukunde
|Stammkunde
|Telefonkunde|Unternehmenskunde
|Versicherungskunde|Werbekunde
|Kundenbefragung|Kundenberatung|Kundenbetreuer|Kundenbuch
|Kundendaten|Kundendienst
|Kundenparkplatz
|Kundenschwund|Kundenservice|Kundenstamm
|Kundentreue
|Kundenvergraulung
|Kundenwerbung|Kundenwunsch
|Kundenzeitschrift|Kundenzuwachs
|Kundin|Kundschaft
|kundenbezogen|kundenfreundlich|kundengerecht
|kundennah|kundenorientiert
}}
=== รากศัพท์ 2 ===
จาก{{inh|de|gmh|kunde}}, {{m|gmh|künde}}, จาก{{inh|de|goh||*kundī}} (พบในคำประสม) เป็นคำนามเชิงนามธรรมของคำกริยา {{m|de|künden||บอก, ประกาศ, ชี้แจง}} คำนามนี้เกือบหายไปจากภาษาเยอรมันสูง ([[High German]]) ในช่วงคริสต์ศตวรรษที่ 16 แต่ได้รับการฟื้นฟูขึ้นอีกครั้งใน{{der|de|gml|kunde}}; ร่วมเชื้อสายกับ{{cog|nl|kunde}} (และ {{m|nl|konde}})
==== คำนาม ====
{{de-noun|f,n[พบน้อย]}}
# {{lb|de|elevated}} [[ข้อความ]], [[ข่าว]], [[สาสน์]] (ส่วนใหญ่เป็นแบบ[[ปากเปล่า]])
#: {{syn|de|Nachricht|Botschaft|Mitteilung}}
#: {{ux|de|Er überbrachte frohe '''Kunde'''.|เขานำข่าวดีมาแจ้ง}}
# {{lb|de|ในคำประสม}} {{ng|ดูที่ '''{{m|de|-kunde}}'''}}
===== การผันรูป =====
{{de-ndecl|f,n[rare]}}
===== คำลูกกลุ่ม =====
{{col3|de
|Algenkunde
|Altertumskunde
|Aquarienkunde
|Archivkunde|Arzneikunde|Arzneimittelkunde
|Augenheilkunde
|Baukunde|Bergbaukunde|Berufskunde
|Bibelkunde|Bibliothekskunde
|Bodenkunde|Briefmarkenkunde
|Buchkunde|Bücherkunde
|Denkmalkunde
|Erdkunde
|Fachkunde|Fahnenkunde|Fischkunde
|Flaggenkunde|Forstkunde
|Gegenwartskunde|Gemeinschaftskunde|Gesellschaftskunde
|Geschichtskunde|Geschlechterkunde
|Gesteinskunde|Gewässerkunde
|Gletscherkunde
|Handschriftenkunde
|Heilkunde|Heimatkunde
|Himmelskunde|Höhlenkunde|Hüttenkunde
|Insektenkunde|Inschriftenkunde|Instrumentenkunde
|Jagdkunde
|Kartenkunde|Klimakunde
|Klimakunde|Knotenkunde|Kräuterheilkunde|Kräuterkunde|Kriegskunde
|Landbaukunde|Landeskunde|Länderkunde|Lebensmittelkunde|Literaturkunde
|Markscheidekunde|Maschinenkunde|Meereskunde|Medienkunde|Metallkunde
|Münzenkunde|Münzkunde|Namenkunde|Namenskunde|Naturkunde
|Ortsnamenkunde
|Pferdekunde|Pflanzenkunde|Pilzkunde
|Quellenkunde
|Rechtskunde|Reitkunde|Rassenkunde|Religionskunde
|Sachkunde|Sagenkunde|Scheidekunde|Schifffahrtskunde|Schmetterlingskunde|Seenkunde|Seelenkunde|Sexualkunde
|Sittenkunde|Siegelkunde|Sippenkunde|Sozialkunde|Sprachkunde|Staatskunde|Staatsbürgerkunde|Stammeskunde|Sternkunde|Stilkunde
|Tierkunde|Tierheilkunde
|Verfassungskunde|Vermessungskunde|Vogelkunde|Volkskunde|Völkerkunde
|Waffenkunde|Wappenkunde|Warenkunde|Wehrkunde|Weinkunde|Werkstoffkunde|Wetterkunde|Wirtschaftskunde
}}
===== ลูกคำ =====
* {{l|de|kundig}}
* {{l|de|Kundschafter}}
* {{l|de|erkunden}}
=== อ่านเพิ่ม ===
* {{R:de:Grimm}}
* {{R:de:DWDS}}
* {{R:de:Duden|Kunde_Botschaft_Nachricht|Kunde, Botschaft, Nachricht}}
* {{R:de:Duden|Kunde_Abonnent_Kerl|Kunde, Abonnent, Kerl}}
* {{R:de:Duden|Kunde_Kaeufer_Abnehmer|Kunde, Käufer, Abnehmer}}
== ภาษาเพลาท์ดิทช์ ==
=== คำนาม ===
{{head|pdt|รูปนาม}}
# {{plural of|pdt|Kund||ลูกค้า}}
ndw742wknpve4wh6gf3mkuctpcqgbm3
5720842
5720841
2026-04-21T17:01:26Z
Ponpan
693
/* คำนาม */ ความหมายผิด
5720842
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{IPA|de|/ˈkʊndə/}}
* {{audio|de|De-Kunde.ogg}}
* {{audio|de|De-Kunde2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{hyph|de|Kun|de}}
=== รากศัพท์ 1 ===
จาก{{inh|de|gmh|kunde}}, จาก{{inh|de|goh|cundo}}, จาก{{inh|de|gmw-pro|*kunþō}}; ร่วมเชื้อสายกับ{{cog|ang|cūþa}}และ{{cog|dum|konde|t=คนรู้จัก, เพื่อน}}
==== คำนาม ====
{{de-noun|m.weak|f=in}}
# [[ลูกค้า]]; [[ผู้]][[ใช้]][[บริการ]]
#: {{ant|de|Verkäufer|Dienstleister|Lieferant}}
#: {{uxi|de|Dieser '''Kunde''' ist ein Stammkunde.|ลูกค้ารายนี้เป็นลูกค้าประจำ}}
#: {{uxi|de|Der '''Kunde''' ist König.|ลูกค้าคือพระเจ้า}}
#: {{ux|de|Für die '''Kunden''' unserer Autovermietung halten sich jederzeit Ansprechpartner zur telefonischen Beratung bereit.|สำหรับลูกค้าที่เช่ารถยนต์ เจ้าหน้าที่ติดต่อจะพร้อมให้คำปรึกษาทางโทรศัพท์ตลอดเวลา}}
# {{lb|de|colloquial|มักใช้กับคำคุณศัพท์}} [[ชาย]], [[หนุ่ม]], [[ไอ้]]; {{lb|de|ส่วนใหญ่|_|pejorative}} ใช้เรียกชายที่ทำตัว[[แปลก]][[ประหลาด]]หรือไม่น่า[[พึงใจ]]
#: {{syn|de|Typ|Kerl|Vogel}}
#: {{uxi|de|Du bist so ein komischer '''Kunde'''!|เธอมันคนประหลาดจริง ๆ!}}
===== การผันรูป =====
{{de-ndecl|m.weak}}
===== คำพ้องความ =====
{{col3|de
|Abnehmer
|Ankäufer
|Auftraggeber
|Besteller
|Bezieher
|Interessent
|Käufer
|Klient
|Konsument
|Mandant
|Verbraucher
}}
===== ลูกคำ =====
{{col3|de
|Altkunde|Anzeigenkunde|Autokunde
|Bahnkunde|Bankkunde|Dauerkunde
|Einmalkunde|Endkunde|Erstkunde|Firmenkunde
|Geschäftskunde|Großkunde|Gelegenheitskunde
|Hauptkunde
|Laufkunde|Neukunde
|Stammkunde
|Telefonkunde|Unternehmenskunde
|Versicherungskunde|Werbekunde
|Kundenbefragung|Kundenberatung|Kundenbetreuer|Kundenbuch
|Kundendaten|Kundendienst
|Kundenparkplatz
|Kundenschwund|Kundenservice|Kundenstamm
|Kundentreue
|Kundenvergraulung
|Kundenwerbung|Kundenwunsch
|Kundenzeitschrift|Kundenzuwachs
|Kundin|Kundschaft
|kundenbezogen|kundenfreundlich|kundengerecht
|kundennah|kundenorientiert
}}
=== รากศัพท์ 2 ===
จาก{{inh|de|gmh|kunde}}, {{m|gmh|künde}}, จาก{{inh|de|goh||*kundī}} (พบในคำประสม) เป็นคำนามเชิงนามธรรมของคำกริยา {{m|de|künden||บอก, ประกาศ, ชี้แจง}} คำนามนี้เกือบหายไปจากภาษาเยอรมันสูง ([[High German]]) ในช่วงคริสต์ศตวรรษที่ 16 แต่ได้รับการฟื้นฟูขึ้นอีกครั้งใน{{der|de|gml|kunde}}; ร่วมเชื้อสายกับ{{cog|nl|kunde}} (และ {{m|nl|konde}})
==== คำนาม ====
{{de-noun|f,n[พบน้อย]}}
# {{lb|de|elevated}} [[ข้อความ]], [[ข่าว]], [[สาร]] (ส่วนใหญ่เป็นแบบ[[ปากเปล่า]])
#: {{syn|de|Nachricht|Botschaft|Mitteilung}}
#: {{ux|de|Er überbrachte frohe '''Kunde'''.|เขานำข่าวดีมาแจ้ง}}
# {{lb|de|ในคำประสม}} {{ng|ดูที่ '''{{m|de|-kunde}}'''}}
===== การผันรูป =====
{{de-ndecl|f,n[rare]}}
===== คำลูกกลุ่ม =====
{{col3|de
|Algenkunde
|Altertumskunde
|Aquarienkunde
|Archivkunde|Arzneikunde|Arzneimittelkunde
|Augenheilkunde
|Baukunde|Bergbaukunde|Berufskunde
|Bibelkunde|Bibliothekskunde
|Bodenkunde|Briefmarkenkunde
|Buchkunde|Bücherkunde
|Denkmalkunde
|Erdkunde
|Fachkunde|Fahnenkunde|Fischkunde
|Flaggenkunde|Forstkunde
|Gegenwartskunde|Gemeinschaftskunde|Gesellschaftskunde
|Geschichtskunde|Geschlechterkunde
|Gesteinskunde|Gewässerkunde
|Gletscherkunde
|Handschriftenkunde
|Heilkunde|Heimatkunde
|Himmelskunde|Höhlenkunde|Hüttenkunde
|Insektenkunde|Inschriftenkunde|Instrumentenkunde
|Jagdkunde
|Kartenkunde|Klimakunde
|Klimakunde|Knotenkunde|Kräuterheilkunde|Kräuterkunde|Kriegskunde
|Landbaukunde|Landeskunde|Länderkunde|Lebensmittelkunde|Literaturkunde
|Markscheidekunde|Maschinenkunde|Meereskunde|Medienkunde|Metallkunde
|Münzenkunde|Münzkunde|Namenkunde|Namenskunde|Naturkunde
|Ortsnamenkunde
|Pferdekunde|Pflanzenkunde|Pilzkunde
|Quellenkunde
|Rechtskunde|Reitkunde|Rassenkunde|Religionskunde
|Sachkunde|Sagenkunde|Scheidekunde|Schifffahrtskunde|Schmetterlingskunde|Seenkunde|Seelenkunde|Sexualkunde
|Sittenkunde|Siegelkunde|Sippenkunde|Sozialkunde|Sprachkunde|Staatskunde|Staatsbürgerkunde|Stammeskunde|Sternkunde|Stilkunde
|Tierkunde|Tierheilkunde
|Verfassungskunde|Vermessungskunde|Vogelkunde|Volkskunde|Völkerkunde
|Waffenkunde|Wappenkunde|Warenkunde|Wehrkunde|Weinkunde|Werkstoffkunde|Wetterkunde|Wirtschaftskunde
}}
===== ลูกคำ =====
* {{l|de|kundig}}
* {{l|de|Kundschafter}}
* {{l|de|erkunden}}
=== อ่านเพิ่ม ===
* {{R:de:Grimm}}
* {{R:de:DWDS}}
* {{R:de:Duden|Kunde_Botschaft_Nachricht|Kunde, Botschaft, Nachricht}}
* {{R:de:Duden|Kunde_Abonnent_Kerl|Kunde, Abonnent, Kerl}}
* {{R:de:Duden|Kunde_Kaeufer_Abnehmer|Kunde, Käufer, Abnehmer}}
== ภาษาเพลาท์ดิทช์ ==
=== คำนาม ===
{{head|pdt|รูปนาม}}
# {{plural of|pdt|Kund||ลูกค้า}}
7q6v6qvmnla7c96uzxp52zzsx6zpwv2
-kunde
0
2330469
5720835
2026-04-21T16:54:40Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720835
wikitext
text/x-wiki
== ภาษาดัตช์ ==
=== รากศัพท์ ===
จาก{{m|nl|kunde}}
=== การออกเสียง ===
* {{IPA|nl|/ˈkʏndə/}}
=== ปัจจัย ===
{{head|nl|ปัจจัย|cat2=noun-forming suffixes|g=f}}
# {{n-g|ใช้สร้างคำนามที่สื่อถึงวิทยาศาสตร์ การศึกษา หรือสาขาความรู้}}
==== ลูกคำ ====
{{suffixsee|nl}}
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
ในคำประสมคำนามที่มี {{m|de|Kunde}} อยู่ในส่วนที่สอง
=== การออกเสียง ===
* {{IPA|de|/ˈkʊndə/|[ˈkʰʊndə]}}
* {{audio|de|De--kunde.ogg|a=<<Germany>> (<<Berlin>>)}}
=== ปัจจัย ===
{{de-noun|f}}
# {{n-g|ใช้สร้างคำนามที่สื่อถึงวิทยาศาสตร์ การศึกษา หรือสาขาความรู้}}
#: {{suffixusex|de|Pflanze|t1=พืช|Pflanzenkunde|t2=พฤกษศาสตร์}}
#: {{suffixusex|de|Tier|t1=สัตว์|Tierkunde|t2=สัตววิทยา}}
==== ลูกคำ ====
{{suffixsee|de}}
{{col3|de
|Ameisenkunde
|Amerikakunde
|Archivkunde
|Arzneikunde
|Augenkunde
|Baustoffkunde
|Bergbaukunde
|Betriebskunde
|Bibelkunde
|Binnengewässerkunde
|Blitzkunde
|Briefmarkenkunde
|Brieftaubenkunde
|Bücherkunde
|Buddhismuskunde
|Bühnenkunde
|Bürgerkunde
|Charakterkunde
|Deutschkunde
|Diätkunde
|Donnerkunde
|Dosierungskunde
|Drogenkunde
|Edelsteinkunde
|Erdbebenkunde
|Erdbebenmesskunde
|Erfahrungsseelenkunde
|Ernährungskunde
|Erzkunde
|Fachkunde
|Fahnenkunde
|Federkunde
|Flechtenkunde
|Fließkunde
|Flugwetterkunde
|Flusskunde
|Flußkunde
|Formationskunde
|Freikirchenkunde
|Friedenskunde
|Geburtskunde
|Gehölzkunde
|Gefügekunde
|Geländekunde
|Gemmenkunde
|Geschlechtkunde
|Gesellschaftskunde
|Gesichtskunde
|Gesteinshüttenkunde
|Gesetzeskunde
|Gewässerkunde
|Gletscherkunde
|Glockenkunde
|Gräserkunde
|Grundwasserkunde
|Hals-Nasen-Ohrenkunde
|Handschriftenkunde
|Höhenwetterkunde
|Instrumentenkunde
|Islamkunde
|Käferkunde
|Kanadakunde
|Kirchenbaukunde
|Kleintierkunde
|Knochenkunde
|Kochkunde
|Kolibrikunde
|Konfessionskunde
|Korrosionskunde
|Kräuterkunde
|Kriegskunde
|Kristallkunde
|Kulturkunde
|Lagerstättenkunde
|Länderkunde
|Landwirtschaftskunde
|Lautkunde
|Lesekunde
|Lexikonkunde
|Literaturkunde
|Lotsenkunde
|Luftschiffahrtskunde
|Luftschifffahrtskunde
|Lungenkunde
|Lurchkunde
|Markscheidekunde
|Medienkunde
|Messkunde
|Meßkunde
|Metallkunde
|Mooskunde
|Mühlenkunde
|Münzkunde
|Muschelkunde
|Museumskunde
|Namenskunde
|Nasenkunde
|Obstbaukunde
|Ohrenkunde
|Orchideenkunde
|Orgelkunde
|Ostasienkunde
|Papyruskunde
|Parasitenkunde
|Pferdekunde
|Primatenkunde
|Probierkunde
|Rebenkunde
|Rebsortenkunde
|Rechtschreibkunde
|Reptilienkunde
|Rinderkunde
|Röntgenkunde
|Runenkunde
|Sachkunde
|Säugetierkunde
|Schallplattenkunde
|Schichtenkunde
|Schiffahrtskunde
|Schifffahrtskunde
|Schreibkunde
|Schriftkunde
|Schwirrvogelkunde
|Seenkunde
|Sittenkunde
|Spaltpilzkunde
|Sprachkunde
|Sprechkunde
|Sprichwortkunde
|Staatenkunde
|Staatsbürgerkunde
|Staatswirtschaftskunde
|Steinkunde
|Stilkunde
|Strahlenkunde
|Streitkunde
|Taubenkunde
|Terrarienkunde
|Unkunde
|Vegetationskunde
|Verfahrenskunde
|Vermessungskunde
|Versteinerungskunde
|Vogelfederkunde
|Vulkankunde
|Warenkunde
|Wasserkunde
|Wehrkunde
|Weinbaukunde
|Werbekunde
|Wirtschaftskunde
|Wolkenkunde
|Wortkunde
|Wortschatzkunde
|Zahnerhaltungskunde
|Zahnersatzkunde
|Zahnkunde
}}
=== อ่านเพิ่ม ===
* {{R:de:DWDS}}
drzcqrgvsdadvdqgtbnpdmg5gm3a4v6
5720836
5720835
2026-04-21T16:55:53Z
Ponpan
693
5720836
wikitext
text/x-wiki
== ภาษาดัตช์ ==
=== รากศัพท์ ===
จาก{{m|nl|kunde}}
=== การออกเสียง ===
* {{IPA|nl|/ˈkʏndə/}}
=== ปัจจัย ===
{{head|nl|ปัจจัย|cat2=ปัจจัยสร้างคำนาม|g=f}}
# {{n-g|ใช้สร้างคำนามที่สื่อถึงวิทยาศาสตร์ การศึกษา หรือสาขาความรู้}}
==== ลูกคำ ====
{{suffixsee|nl}}
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
ในคำประสมคำนามที่มี {{m|de|Kunde}} อยู่ในส่วนที่สอง
=== การออกเสียง ===
* {{IPA|de|/ˈkʊndə/|[ˈkʰʊndə]}}
* {{audio|de|De--kunde.ogg|a=<<Germany>> (<<Berlin>>)}}
=== ปัจจัย ===
{{de-noun|f}}
# {{n-g|ใช้สร้างคำนามที่สื่อถึงวิทยาศาสตร์ การศึกษา หรือสาขาความรู้}}
#: {{suffixusex|de|Pflanze|t1=พืช|Pflanzenkunde|t2=พฤกษศาสตร์}}
#: {{suffixusex|de|Tier|t1=สัตว์|Tierkunde|t2=สัตววิทยา}}
==== ลูกคำ ====
{{suffixsee|de}}
{{col3|de
|Ameisenkunde
|Amerikakunde
|Archivkunde
|Arzneikunde
|Augenkunde
|Baustoffkunde
|Bergbaukunde
|Betriebskunde
|Bibelkunde
|Binnengewässerkunde
|Blitzkunde
|Briefmarkenkunde
|Brieftaubenkunde
|Bücherkunde
|Buddhismuskunde
|Bühnenkunde
|Bürgerkunde
|Charakterkunde
|Deutschkunde
|Diätkunde
|Donnerkunde
|Dosierungskunde
|Drogenkunde
|Edelsteinkunde
|Erdbebenkunde
|Erdbebenmesskunde
|Erfahrungsseelenkunde
|Ernährungskunde
|Erzkunde
|Fachkunde
|Fahnenkunde
|Federkunde
|Flechtenkunde
|Fließkunde
|Flugwetterkunde
|Flusskunde
|Flußkunde
|Formationskunde
|Freikirchenkunde
|Friedenskunde
|Geburtskunde
|Gehölzkunde
|Gefügekunde
|Geländekunde
|Gemmenkunde
|Geschlechtkunde
|Gesellschaftskunde
|Gesichtskunde
|Gesteinshüttenkunde
|Gesetzeskunde
|Gewässerkunde
|Gletscherkunde
|Glockenkunde
|Gräserkunde
|Grundwasserkunde
|Hals-Nasen-Ohrenkunde
|Handschriftenkunde
|Höhenwetterkunde
|Instrumentenkunde
|Islamkunde
|Käferkunde
|Kanadakunde
|Kirchenbaukunde
|Kleintierkunde
|Knochenkunde
|Kochkunde
|Kolibrikunde
|Konfessionskunde
|Korrosionskunde
|Kräuterkunde
|Kriegskunde
|Kristallkunde
|Kulturkunde
|Lagerstättenkunde
|Länderkunde
|Landwirtschaftskunde
|Lautkunde
|Lesekunde
|Lexikonkunde
|Literaturkunde
|Lotsenkunde
|Luftschiffahrtskunde
|Luftschifffahrtskunde
|Lungenkunde
|Lurchkunde
|Markscheidekunde
|Medienkunde
|Messkunde
|Meßkunde
|Metallkunde
|Mooskunde
|Mühlenkunde
|Münzkunde
|Muschelkunde
|Museumskunde
|Namenskunde
|Nasenkunde
|Obstbaukunde
|Ohrenkunde
|Orchideenkunde
|Orgelkunde
|Ostasienkunde
|Papyruskunde
|Parasitenkunde
|Pferdekunde
|Primatenkunde
|Probierkunde
|Rebenkunde
|Rebsortenkunde
|Rechtschreibkunde
|Reptilienkunde
|Rinderkunde
|Röntgenkunde
|Runenkunde
|Sachkunde
|Säugetierkunde
|Schallplattenkunde
|Schichtenkunde
|Schiffahrtskunde
|Schifffahrtskunde
|Schreibkunde
|Schriftkunde
|Schwirrvogelkunde
|Seenkunde
|Sittenkunde
|Spaltpilzkunde
|Sprachkunde
|Sprechkunde
|Sprichwortkunde
|Staatenkunde
|Staatsbürgerkunde
|Staatswirtschaftskunde
|Steinkunde
|Stilkunde
|Strahlenkunde
|Streitkunde
|Taubenkunde
|Terrarienkunde
|Unkunde
|Vegetationskunde
|Verfahrenskunde
|Vermessungskunde
|Versteinerungskunde
|Vogelfederkunde
|Vulkankunde
|Warenkunde
|Wasserkunde
|Wehrkunde
|Weinbaukunde
|Werbekunde
|Wirtschaftskunde
|Wolkenkunde
|Wortkunde
|Wortschatzkunde
|Zahnerhaltungskunde
|Zahnersatzkunde
|Zahnkunde
}}
=== อ่านเพิ่ม ===
* {{R:de:DWDS}}
rkqv6oz9iep4x7sszey751iwvp6x8t4
หมวดหมู่:ปัจจัยภาษาดัตช์
14
2330470
5720837
2026-04-21T16:56:01Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720837
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:หน่วยคำภาษาดัตช์
14
2330471
5720838
2026-04-21T16:56:28Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720838
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:รูปผันภาษาเพลาท์ดิทช์
14
2330472
5720839
2026-04-21T16:57:34Z
Ponpan
693
สร้างหน้าด้วย "{{auto cat}}"
5720839
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:รูปนามภาษาเพลาท์ดิทช์
14
2330473
5720840
2026-04-21T16:58:11Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720840
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kundin
0
2330474
5720843
2026-04-21T17:06:47Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720843
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
{{affix|de|Kunde|-in|t1=ลูกค้า}}
=== การออกเสียง ===
* {{audio|de|De-Kundin.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำนาม ===
{{de-noun|f}}
# {{female equivalent of|de|Kunde}}: [[ลูกค้า]][[หญิง]]
#: {{ant|de|Dienstleisterin|Lieferantin|Verkäuferin}}
#: {{uxi|de|Sie ist schon lange '''Kundin''' bei uns.|เขา(หญิง)เป็นลูกค้าของเรามานานแล้ว}}
==== การผันรูป ====
{{de-ndecl|f}}
==== คำพ้องความ ====
{{col3|de
|Abnehmerin
|Ankäuferin
|Auftraggeberin
|Bestellerin
|Bezieherin
|Interessentin
|Käuferin
|Klientin
|Konsumentin
|Kundschaft
|Mandantin
|Verbraucherin
}}
=== อ่านเพิ่ม ===
* {{R:de:Duden}}
n66fe8p8tysw1ood32jnto96j8fq7g6
男人
0
2330475
5720845
2026-04-21T17:25:18Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720845
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms}}
=== การออกเสียง 1 ===
{{zh-pron
|m=nánrén
|ma=y
|m-s=nan2 ren2
|dg=нан1жын2
|c=naam4 jan4-2,naam4 jan4
|ca2=LL-Q9186-Justinrleung-男人.wav
|ca=Yue-男人.ogg
|c-t=nam3 ngin3*
|h=pfs=nàm-ngìn;hrs=h:nam ngin
|mb=nâng-nêng
|md=nàng-ìng
|mn=zz,kh:lâm-jîn/xm,qz,tp:lâm-lîn
|px=pt,xy:nang2 zing2
|w=sh:6noe gnin6;sz,cz:2noe gnin2
|cat=n,a
}}
==== คำนาม ====
{{head|zh|คำนาม}}
# [[ชาย]], [[ผู้ชาย]]
#: {{zh-x|花心 的 男人|ชาย[[เจ้าชู้]], [[เสือผู้หญิง]]}}
#: {{zh-x|要 想 抓住 男人 的 心,先 要 抓住 男人 的 胃。|จะมัดใจผู้ชาย ต้องมัดด้วยเสน่ห์ปลายจวักก่อน|lit=อยากจับหัวใจของผู้ชาย ต้องจับกระเพาะของผู้ชายก่อน}}
===== คำพ้องความ =====
{{col3|zh|男子<qq:เป็นทางการ>|男的<qq:ภาษาพูด>|男丁<qq:ล้าสมัย>|丁男<qq:ภาษาวรรณกรรม>|士人<qq:โบราณ>|男子漢<qq:โดยเฉพาะอย่างยิ่งคนที่มีลักษณะหรือบุคลิกแบบผู้ชาย>|男性|漢子|男士|男兒|兒男}}
{{zh-dial}}
===== คำตรงข้าม =====
* {{zh-l|女人}}
===== ลูกคำ =====
{{col3|zh|男人老狗|男人婆|男人頭|大男人|男人家|新好男人|大男人主義|男人味}}
==== คำคุณศัพท์ ====
{{head|zh|คำคุณศัพท์}}
# {{lb|zh|colloquial}} ซึ่งมีความเป็น[[ชาย]]
#* {{zh-x|你 不 覺{jué}得 他 很 男人 嗎?我 覺{jué}得 他 太 男人 了。|เธอไม่คิดหรือว่าเขามีความเป็นชาย? ฉันคิดว่าเขามีความเป็นชายเยอะเกินไป|ref=''A Beautiful Daughter-in-Law Era'' ([http://ent.sina.com.cn/f/v/xfdmhsd/ 媳妇的美好时代]), 2009}}
===== คำพ้องความ =====
* {{zh-l|陽剛}}
=== การออกเสียง 2 ===
{{zh-pron
|m=nánren
|m-nj=lán>lānren
|c=naam4 jan4-2
|w=sh:6noe gnin;sz,cz:2noe gnin2
|x-h=nan2 xin2
|ca=Yue-男人.ogg
|cat=n
}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|colloquial}} [[สามี]]
===== คำพ้องความ =====
{{zh-dial|丈夫}}
{{C|zh|บุคคล}}
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|お|ひと|yomi=k}}
=== คำวิสามานยนาม ===
{{ja-pos|proper|おひと}}
# {{lb|ja|archaic|sort=おひと}} {{given name|ja|male|sort=おひと}}
qq4tivdbr9pia4oxlcukpa0z99oc1m8
5720846
5720845
2026-04-21T17:25:44Z
Ponpan
693
/* คำนาม */
5720846
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms}}
=== การออกเสียง 1 ===
{{zh-pron
|m=nánrén
|ma=y
|m-s=nan2 ren2
|dg=нан1жын2
|c=naam4 jan4-2,naam4 jan4
|ca2=LL-Q9186-Justinrleung-男人.wav
|ca=Yue-男人.ogg
|c-t=nam3 ngin3*
|h=pfs=nàm-ngìn;hrs=h:nam ngin
|mb=nâng-nêng
|md=nàng-ìng
|mn=zz,kh:lâm-jîn/xm,qz,tp:lâm-lîn
|px=pt,xy:nang2 zing2
|w=sh:6noe gnin6;sz,cz:2noe gnin2
|cat=n,a
}}
==== คำนาม ====
{{head|zh|คำนาม}}
# [[ชาย]], [[ผู้ชาย]]
#: {{zh-x|花心 的 男人|ชาย[[เจ้าชู้]], [[เสือผู้หญิง]]}}
#: {{zh-x|要 想 抓住 男人 的 心,先 要 抓住 男人 的 胃。|จะมัดใจชาย ต้องมัดด้วยเสน่ห์ปลายจวักก่อน|lit=อยากจับหัวใจของผู้ชาย ต้องจับกระเพาะของผู้ชายก่อน}}
===== คำพ้องความ =====
{{col3|zh|男子<qq:เป็นทางการ>|男的<qq:ภาษาพูด>|男丁<qq:ล้าสมัย>|丁男<qq:ภาษาวรรณกรรม>|士人<qq:โบราณ>|男子漢<qq:โดยเฉพาะอย่างยิ่งคนที่มีลักษณะหรือบุคลิกแบบผู้ชาย>|男性|漢子|男士|男兒|兒男}}
{{zh-dial}}
===== คำตรงข้าม =====
* {{zh-l|女人}}
===== ลูกคำ =====
{{col3|zh|男人老狗|男人婆|男人頭|大男人|男人家|新好男人|大男人主義|男人味}}
==== คำคุณศัพท์ ====
{{head|zh|คำคุณศัพท์}}
# {{lb|zh|colloquial}} ซึ่งมีความเป็น[[ชาย]]
#* {{zh-x|你 不 覺{jué}得 他 很 男人 嗎?我 覺{jué}得 他 太 男人 了。|เธอไม่คิดหรือว่าเขามีความเป็นชาย? ฉันคิดว่าเขามีความเป็นชายเยอะเกินไป|ref=''A Beautiful Daughter-in-Law Era'' ([http://ent.sina.com.cn/f/v/xfdmhsd/ 媳妇的美好时代]), 2009}}
===== คำพ้องความ =====
* {{zh-l|陽剛}}
=== การออกเสียง 2 ===
{{zh-pron
|m=nánren
|m-nj=lán>lānren
|c=naam4 jan4-2
|w=sh:6noe gnin;sz,cz:2noe gnin2
|x-h=nan2 xin2
|ca=Yue-男人.ogg
|cat=n
}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|colloquial}} [[สามี]]
===== คำพ้องความ =====
{{zh-dial|丈夫}}
{{C|zh|บุคคล}}
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|お|ひと|yomi=k}}
=== คำวิสามานยนาม ===
{{ja-pos|proper|おひと}}
# {{lb|ja|archaic|sort=おひと}} {{given name|ja|male|sort=おひと}}
p8a2kc7e5p5mf0lzxpyvbmixa3fvieq
男朋友
0
2330476
5720847
2026-04-21T17:29:18Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720847
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|type=12}}
=== การออกเสียง ===
{{zh-pron
|m=nánpéngyou,nánpéngyǒu,1nb=standard in Mainland,2nb=standard in Taiwan
|c=naam4 pang4 jau5
|h=pfs=nàm-phèn-yû;hrs=h:nam pen rhiuˋ
|mn=lâm-pêng-iú
|mn-t=lam5 pêng5 iu2
|px=pt,xy:nang2 beng2 iu3
|w=sh:6noe ban yeu
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# [[แฟน]][[ชาย]] {{zh-mw|m,c:個}}
#: {{zh-x|我 男朋友{you} 真的 是 太 棒 啦。|แฟนฉันเป็นคนวิเศษจริง ๆ}}
==== คำพ้องความ ====
{{zh-dial}}
* {{q|สแลง}} {{zh-l|男盆友}}, {{zh-l|男票}}, {{zh-l|藍朋友}}
==== คำเกี่ยวข้อง ====
* {{zh-l|女朋友}}
{{C|zh|บุคคล|ความรัก}}
igwomtappej2jv2spo1wd2poqz0no1l
5720850
5720847
2026-04-21T17:30:16Z
Ponpan
693
/* คำนาม */
5720850
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|type=12}}
=== การออกเสียง ===
{{zh-pron
|m=nánpéngyou,nánpéngyǒu,1nb=standard in Mainland,2nb=standard in Taiwan
|c=naam4 pang4 jau5
|h=pfs=nàm-phèn-yû;hrs=h:nam pen rhiuˋ
|mn=lâm-pêng-iú
|mn-t=lam5 pêng5 iu2
|px=pt,xy:nang2 beng2 iu3
|w=sh:6noe ban yeu
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# [[แฟน]][[หนุ่ม]], แฟน[[ชาย]] {{zh-mw|m,c:個}}
#: {{zh-x|我 男朋友{you} 真的 是 太 棒 啦。|แฟนฉันเป็นคนวิเศษจริง ๆ}}
==== คำพ้องความ ====
{{zh-dial}}
* {{q|สแลง}} {{zh-l|男盆友}}, {{zh-l|男票}}, {{zh-l|藍朋友}}
==== คำเกี่ยวข้อง ====
* {{zh-l|女朋友}}
{{C|zh|บุคคล|ความรัก}}
1lftlwd73zyfptz6azjee6k6jyqlbjo
หมวดหมู่:ศัพท์ภาษาจีนที่สะกดด้วย 朋
14
2330477
5720848
2026-04-21T17:29:28Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720848
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาจีนที่สะกดด้วย 友
14
2330478
5720849
2026-04-21T17:29:30Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720849
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
那些
0
2330479
5720851
2026-04-21T17:31:56Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720851
wikitext
text/x-wiki
== ภาษาจีน ==
=== รากศัพท์ 1 ===
{{zh-forms}}
==== การออกเสียง ====
{{zh-pron
|m=nàxiē,nèixiē
|c=naa5 se1
|mn=xm:nā-se/qz:nā-sia/zz:nā-sa
|x=lai4 sie/la4 sie
|cat=pron
}}
==== คำสรรพนาม ====
{{head|zh|คำสรรพนาม}}
# [[เหล่า]][[นั้น]], [[พวก]]นั้น
#: {{zh-x|珍惜 那些 惦記 你 的 人。|Cherish '''those''' who are concerned about you.}}
#: {{zh-x|萬聖節 裝扮 不是 大人 的 專利,那些 拍 門 討 糖果 的 小孩 裝扮 也 可以 十分 出色 !|Halloween costumes are not just for adults - the costumes of children who ask for candy can also be extraordinary!}}
===== คำพ้องความ =====
{{zh-dial}}
=== รากศัพท์ 2 ===
{{zh-see|哪些}}
4vchdi2w5n55b61b3fp8ggf95hd1ru7
หมวดหมู่:ศัพท์ภาษาจีนที่สะกดด้วย 些
14
2330480
5720852
2026-04-21T17:32:06Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720852
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
哪些
0
2330481
5720853
2026-04-21T17:34:13Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720853
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|alt=那些}}
=== การออกเสียง ===
{{zh-pron
|m=nǎxiē,něixiē
|c=naa5 se1
|j=na2 xie1
|mn=xm:ná-se/qz:ná-sia/zz:ná-sa
|x=lai3 sie/la3 sie
|cat=pron
}}
=== คำสรรพนาม ===
{{head|zh|คำสรรพนาม}}
# {{lb|zh|คำถาม}} [[อัน]][[ไหน]]; [[พวก]]ไหน {{gl|นำหน้าคำนามที่บ่งบอกว่าเป็นพหูพจน์}}
#: {{zh-x|公務員 考試 當天 應{yīng}該 注意 哪些 要點?|'''What''' points should be paid attention to on the day of the civil service examination?}}
==== คำพ้องความ ====
{{zh-dial}}
==== ดูเพิ่ม ====
* {{zh-l|那些}}
akcpspe37wma5vmi1skn6o3u9vbwozf
หมวดหมู่:ศัพท์ภาษาจีนที่สะกดด้วย 哪
14
2330482
5720854
2026-04-21T17:34:20Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720854
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
起床
0
2330483
5720855
2026-04-21T17:38:04Z
Ponpan
693
นำเข้าจาก enwikt เก็บกวาด
5720855
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|t2=起牀}}
=== การออกเสียง ===
{{zh-pron
|m=qǐchuáng
|c=hei2 cong4
|ca=LL-Q9186-Luilui6666-起床.wav
|c-t=hei2 cong3
|j=qi2 cuon1
|mn=khí-chhn̂g
|mn-t=ki2 ceng5
|x=qi3 qyan2
|ma=y
|cat=v
}}
=== คำกริยา ===
{{zh-verb|type=vo}} {{tlb|zh|intransitive}}
# [[ตื่น]], ตื่น[[นอน]], [[ลุก]]จาก[[ที่นอน]]
#: {{zh-x|提早 起床|ตื่นเช้า}}
#: {{zh-x|快 點 起床!|รีบลุกเร็ว ๆ}}
#: {{zh-x|週末 就 不 要 叫 我 起床 了,媽媽{ma}。|สุดสัปดาห์ไม่ต้องปลุกฉันตื่นนะแม่}}
==== คำพ้องความ ====
{{zh-dial}}
==== คำตรงข้าม ====
* {{zh-l|上床}}
* {{zh-l|睡覺}}
==== คำสืบทอด ====
{{CJKV||きしょう|기상}}
t8w167qrbwdfxaiuj8vptei8jv3bg5r
หมวดหมู่:ศัพท์ภาษาจีนที่สะกดด้วย 床
14
2330484
5720856
2026-04-21T17:38:12Z
Ponpan
693
สร้างหมวดหมู่อัตโนมัติ
5720856
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
起牀
0
2330485
5720857
2026-04-21T17:38:39Z
Ponpan
693
สร้างหน้าด้วย "== ภาษาจีน == {{zh-see|起床}}"
5720857
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-see|起床}}
3m41w68wjthpk12qu7n0gkf3clfmk4k
ᩁᩮᩬᩥᩋᨷᩥ᩠ᨶ
0
2330486
5720858
2026-04-21T18:23:41Z
Ai Ku Karng
17824
สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=เรือบิน|s=เฮือบิน}} === รากศัพท์ === {{com|nod|ᩁᩮᩬᩥᩋ|ᨷᩥ᩠ᨶ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|khb|ᦵᦣᦲᦢᦲᧃ}}, {{cog|lo|ເຮືອບິນ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|th|เรือบิน}} === การออ..."
5720858
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=เรือบิน|s=เฮือบิน}}
=== รากศัพท์ ===
{{com|nod|ᩁᩮᩬᩥᩋ|ᨷᩥ᩠ᨶ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|khb|ᦵᦣᦲᦢᦲᧃ}}, {{cog|lo|ເຮືອບິນ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|th|เรือบิน}}
=== การออกเสียง ===
* {{IPA|nod|/hɯa˧˧.bin˧˧/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun}}
# [[เครื่องบิน]]
=== อ้างอิง ===
* {{R:nod:LannaDic}}
3i2gbmjkupc5fyasfj5szzxlvgvcwog
5720905
5720858
2026-04-22T03:35:16Z
Ai Ku Karng
17824
/* ภาษาคำเมือง */
5720905
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=เรือบิน|s=เฮือบิน}}
=== รากศัพท์ ===
{{com|nod|ᩁᩮᩬᩥᩋ|ᨷᩥ᩠ᨶ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|khb|ᦵᦣᦲᦢᦲᧃ}}, {{cog|lo|ເຮືອບິນ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|th|เรือบิน}}
=== การออกเสียง ===
* {{IPA|nod|/hɯa˧˧.bin˧˧/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun|ᩃᩣᩴ}}
# [[เครื่องบิน]]
=== อ้างอิง ===
* {{R:nod:LannaDic}}
kd0iylxp8wv8y16gtv870zrt8ce90qo
ᦵᦣᦲᦢᦲᧃ
0
2330487
5720859
2026-04-21T18:44:41Z
Ai Ku Karng
17824
สร้างหน้าด้วย "== ภาษาไทลื้อ == === รากศัพท์ === {{com|khb|ᦵᦣᦲ|ᦢᦲᧃ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|nod|ᩁᩮᩬᩥᩋᨷᩥ᩠ᨶ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|lo|ເຮືອບິນ}}, {{cog|th|เรือบิน}} === การออกเสียง === {{khb-pron|ᦵᦣᦲ-ᦢᦲᧃ}} === คำนาม === {{khb-noun}} # เ..."
5720859
wikitext
text/x-wiki
== ภาษาไทลื้อ ==
=== รากศัพท์ ===
{{com|khb|ᦵᦣᦲ|ᦢᦲᧃ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|nod|ᩁᩮᩬᩥᩋᨷᩥ᩠ᨶ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|lo|ເຮືອບິນ}}, {{cog|th|เรือบิน}}
=== การออกเสียง ===
{{khb-pron|ᦵᦣᦲ-ᦢᦲᧃ}}
=== คำนาม ===
{{khb-noun}}
# [[เครื่องบิน]]
#: {{syn|khb|ᦍᦳᧃᦢᦲᧃ}}
jeddcn4qzs4fdvzq7p8c3m8agevxt1d
5720910
5720859
2026-04-22T03:39:07Z
Ai Ku Karng
17824
/* ภาษาไทลื้อ */
5720910
wikitext
text/x-wiki
== ภาษาไทลื้อ ==
=== รากศัพท์ ===
{{com|khb|ᦵᦣᦲ|ᦢᦲᧃ|t1=เรือ|t2=บิน}}; ร่วมเชื้อสายกับ{{cog|nod|ᩁᩮᩬᩥᩋᨷᩥ᩠ᨶ}}, {{cog|shn|ႁိူဝ်းမိၼ်}}, {{cog|lo|ເຮືອບິນ}}, {{cog|th|เรือบิน}}
=== การออกเสียง ===
{{khb-pron|ᦵᦣᦲ-ᦢᦲᧃ}}
=== คำนาม ===
{{khb-noun|ᦟᧄ}}
# [[เครื่องบิน]]
#: {{syn|khb|ᦍᦳᧃᦢᦲᧃ}}
lq94zm99vpxwohyfo4c6qh4caklu6tu
คุยกับผู้ใช้:Kani Mani
3
2330488
5720860
2026-04-21T20:39:14Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
5720860
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Kani Mani}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 03:39, 22 เมษายน 2569 (+07)
q8xp57ng96l0dqtrp7ga2jv951iq9bf
คุยกับผู้ใช้:Kioncito
3
2330489
5720861
2026-04-22T01:21:09Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
5720861
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Kioncito}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 08:21, 22 เมษายน 2569 (+07)
evwwn6n1k2z22sx6i53sag69ebq27nr
หมวดหมู่:ศัพท์ภาษาไอริชที่รับมาจากภาษาอาหรับ
14
2330490
5720865
2026-04-22T01:53:53Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720865
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาไอริชที่รับมาจากภาษาตุรกีแบบออตโตมัน
14
2330491
5720866
2026-04-22T01:53:55Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720866
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาไอริชที่รับมาจากภาษาอิตาลี
14
2330492
5720867
2026-04-22T01:53:56Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720867
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาไอริชที่ยืมมาจากภาษาอิตาลี
14
2330493
5720868
2026-04-22T01:53:56Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720868
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ga:กาแฟ
14
2330494
5720869
2026-04-22T01:53:58Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720869
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
caifé
0
2330495
5720870
2026-04-22T01:55:56Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720870
wikitext
text/x-wiki
== ภาษาไอริช ==
=== รูปแบบอื่น ===
* {{alter|ga|caife}}
=== รากศัพท์ ===
{{bor+|ga|it|caffè}} หรือ{{bor|ga|fr|café}}, จาก{{der|ga|ota|قهوه|tr=kahve}}, จาก{{der|ga|ar|قَهْوَة|t=กาแฟ}}; {{doublet|ga|caife}}
=== การออกเสียง ===
* {{IPA|ga|/ˈkafʲeː/}}
=== คำนาม ===
{{ga-noun|m|~|~anna}}
# [[คาเฟ่]], [[ร้านกาแฟ]], [[ร้านอาหาร]][[บริการ]][[ตนเอง]]
==== การผันรูป ====
{{ga-decl-m4|c|aifé|aiféanna}}
=== การกลายรูป ===
{{ga-mut}}
=== อ่านเพิ่ม ===
* {{R:ga:Ó Dónaill|caife}}
* {{R:ga:NEID}}
{{topics|ga|กาแฟ|ร้านอาหาร}}
rq59fdvc5qema4qoof1latojbybs2ie
อเมริกากลาง
0
2330496
5720874
2026-04-22T02:52:01Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษาไทย == {{wp|th:}} === รากศัพท์ === {{calque|th|en|Central America}}; {{surf|th|อเมริกา|กลาง}} === การออกเสียง === {{th-pron|อะ-เม-ริ-กา-กฺลาง}} === คำวิสามานยนาม === {{th-proper noun}} # {{senseid|th|Q27611}}{{place|th|ภูมิภาคแบบทวีป|cont/อเมริกาเหนือ|ประก..."
5720874
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
=== รากศัพท์ ===
{{calque|th|en|Central America}}; {{surf|th|อเมริกา|กลาง}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-กฺลาง}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q27611}}{{place|th|ภูมิภาคแบบทวีป|cont/อเมริกาเหนือ|ประกอบด้วยประเทศต่าง ๆ ที่ตั้งอยู่ระหว่าง[[เม็กซิโก]]และ[[อเมริกาใต้]]}}
3j6pfs5hea7fldvstgs6inqh5q58d8m
5720875
5720874
2026-04-22T02:54:44Z
OctraBot
3198
/* ภาษาไทย */
5720875
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:LocationCentralAmerica.svg|thumb|อเมริกากลาง]]
=== รากศัพท์ ===
{{calque|th|en|Central America}}; {{surf|th|อเมริกา|กลาง}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-กฺลาง}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q27611}}{{place|th|ภูมิภาคแบบทวีป|cont/อเมริกาเหนือ|ประกอบด้วยประเทศต่าง ๆ ที่ตั้งอยู่ระหว่าง[[เม็กซิโก]]และ[[อเมริกาใต้]]}}
jr67ygbju1p8g1n1c3icv620zf0gn4b
5720878
5720875
2026-04-22T03:03:56Z
OctraBot
3198
5720878
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:LocationCentralAmerica.svg|thumb|อเมริกากลาง]]
=== รากศัพท์ ===
{{calque|th|en|Central America}}; {{surf|th|อเมริกา|กลาง}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-กฺลาง}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q27611}}{{place|th|ภูมิภาคเชิงทวีป|cont/อเมริกาเหนือ|ประกอบด้วยประเทศต่าง ๆ ที่ตั้งอยู่ระหว่าง[[เม็กซิโก]]และ[[อเมริกาใต้]]}}
50x3y3nctqjlq93c3t55ph9qrmzkqvj
5720941
5720878
2026-04-22T09:10:01Z
OctraBot
3198
/* คำวิสามานยนาม */
5720941
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:LocationCentralAmerica.svg|thumb|อเมริกากลาง]]
=== รากศัพท์ ===
{{calque|th|en|Central America}}; {{surf|th|อเมริกา|กลาง}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-กฺลาง}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q27611}}{{place|th|ภูมิภาคเชิงทวีป|cont/อเมริกาเหนือ|ประกอบด้วยประเทศต่าง ๆ ที่ตั้งอยู่ระหว่าง[[เม็กซิโก]]และ[[อเมริกาใต้]]}}
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* Sranan Tongo: {{t|srn|Mindri-Amerika}}
* กรีก: {{t+|el|Κεντρική Αμερική|f}}
* กาลิเซีย: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* ครีโอลเฮติ: {{t|ht|Amerik santral}}
* คาซัค: {{t|kk|Орталық Америка}}
* จอร์เจีย: {{t+|ka|ცენტრალური ამერიკა}}
* จีน:
*: จีนกลาง: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|คำย่อ}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* เช็ก: {{t+|cs|Střední Amerika|f}}
* เซอร์โบ-โครเอเชีย: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* ญี่ปุ่น: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* ดัตช์: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* เดนมาร์ก: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* ตุรกี: {{t+|tr|Orta Amerika}}
* เตลูกู: {{t|te|మధ్య అమెరికా}}
* นอร์เวย์:
*: นอร์เวย์แบบบุ๊กมอล: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: นอร์เวย์แบบนือนอสก์: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* บัลแกเรีย: {{t|bg|Централна Америка|f}}
* เบงกอล: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* ปีปิล: {{t|ppl|Shiktal}}
* เปอร์เซีย: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* โปรตุเกส: {{t+|pt|América Central|f}}
* โปแลนด์: {{t+|pl|Ameryka Centralna|f}}
* ฝรั่งเศส: {{t+|fr|Amérique centrale|f}}
* ฟินแลนด์: {{t+|fi|Keski-Amerikka}}
* มาซิโดเนีย: {{t|mk|Средна Америка|f}}
* มาเลเซีย: {{t+|ms|Amerika Tengah}}
* ยูเครน: {{t|uk|Центра́льна Аме́рика|f}}
* เยอรมัน: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* รัสเซีย: {{t+|ru|Центра́льная Аме́рика|f}}
* โรมาเนีย: {{t|ro|America Centrală|f}}
* ละติน: {{t|la|America Centralis}}
* ลัตเวีย: {{t+|lv|Centrālamerika|f}}
* ลิทัวเนีย: {{t+|lt|Centrinė Amerika|f}}
* เวลส์: {{t+|cy|Canolbarth America|m}}
* โวลาปุก: {{t+|vo|Zänoda-Merop}}
* สเปน: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* สวีเดน: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* อังกฤษ: {{t+|en|Central America}}
* อิตาลี: {{t|it|America centrale|f}}
* อุยกูร์: {{t|ug|ئوتتۇرا ئامېرىكا}}
* ไอริช: {{t|ga|Meiriceá Láir|m}}
* ฮังการี: {{t+|hu|Közép-Amerika}}
* ฮินดี: {{t|hi|मध्य अमेरिका|m}}
{{trans-bottom}}
jumomxm5hg6hgpn379dob3kqcgo58lh
Central America
0
2330497
5720879
2026-04-22T03:08:30Z
OctraBot
3198
เก็บกวาด
5720879
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
[[ไฟล์:LocationCentralAmerica.svg|thumb|Central America]]
=== การออกเสียง ===
* {{IPA|en|/ˌsɛntɹəl əˈmɛɹɪkə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Central America.wav|a=Southern England}}
=== คำวิสามานยนาม ===
{{en-proper noun|head=[[central|Central]] [[America]]}}
# {{tcl|en|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|en|Mesoamerica}}
==== คำจ่ากลุ่ม ====
* {{l|en|Middle America}}
* {{l|en|North America}}
==== ดูเพิ่ม ====
{{list:continents/en}}
{{list:countries in Central America/en}}
* {{l|en|Latin America}}
==== อ่านเพิ่ม ====
* {{pedia}}
g7p5jlklypneke5q4eqh0laoqbllhgu
5720880
5720879
2026-04-22T03:08:51Z
OctraBot
3198
/* อ่านเพิ่ม */
5720880
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
[[ไฟล์:LocationCentralAmerica.svg|thumb|Central America]]
=== การออกเสียง ===
* {{IPA|en|/ˌsɛntɹəl əˈmɛɹɪkə/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-Central America.wav|a=Southern England}}
=== คำวิสามานยนาม ===
{{en-proper noun|head=[[central|Central]] [[America]]}}
# {{tcl|en|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|en|Mesoamerica}}
==== คำจ่ากลุ่ม ====
* {{l|en|Middle America}}
* {{l|en|North America}}
==== ดูเพิ่ม ====
{{list:continents/en}}
{{list:countries in Central America/en}}
* {{l|en|Latin America}}
==== อ่านเพิ่ม ====
* {{pedia|lang=en}}
0eatfjtgs6ckslc11s7z1ylczrxsy46
Централна Америка
0
2330498
5720881
2026-04-22T03:15:42Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา เรียงลำดับหัวเรื่องภาษา
5720881
wikitext
text/x-wiki
== ภาษามาซิโดเนีย ==
=== การออกเสียง ===
* {{mk-IPA}}
=== คำวิสามานยนาม ===
{{mk-proper noun|f|head=[[централен|Централна]] [[Америка]]}}
# {{tcl|mk|อเมริกากลาง|id=Q27611}}
#: {{syn|mk|Средна Америка}}
=== ดูเพิ่ม ===
* {{l|mk|Јужна Америка}}
* {{l|mk|Северна Америка}}
== ภาษารูซินแบบพันโนเนีย ==
=== การออกเสียง ===
* {{rsk-IPA}}
* {{hyph|rsk|Цен|трал|на Аме|ри|ка}}
=== คำวิสามานยนาม ===
{{rsk-proper noun|f|head=[[централни|Централна]] Америка}}
# {{tcl|rsk|อเมริกากลาง|id=Q27611}}
#: {{coord|rsk|Сиверна Америка|Южна Америка}}
==== การผันรูป ====
{{rsk-decl-noun-table|Централна Америка|Централней Америки|Централней Америки|Централну Америку|Централну Америку|Централней Америки|Централна Америко}}
{{cln|rsk|คำนามเอกพจน์เท่านั้น}}
ijcadbwjlgrvkme5wi8hybn00w07ysj
แม่แบบ:mk-proper noun
10
2330499
5720882
2026-04-22T03:16:06Z
OctraBot
3198
นำเข้าจาก enwikt
5720882
wikitext
text/x-wiki
{{#invoke:mk-headword|show|คำวิสามานยนาม}}<noinclude>{{documentation}}</noinclude>
4gbjmyoeoibkez9gfb956nmpcv3fmgs
中美洲
0
2330500
5720883
2026-04-22T03:16:59Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720883
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|type=21}}
=== การออกเสียง ===
{{zh-pron
|m=Zhōngměizhōu
|c=zung1 mei5 zau1
|h=pfs=Chûng-mî-chû
|mn=Tiong-bí-chiu
|cat=pn
}}
=== คำวิสามานยนาม ===
{{head|zh|คำวิสามานยนาม}}
# {{tcl|zh|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{zh-l|中美|Zhōngměi}}
jnq70p4apyumwe4c4dxhy3x3jdvhqaj
中美
0
2330501
5720884
2026-04-22T03:18:12Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720884
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms}}
{{wp|zh:}}
=== รากศัพท์ 1 ===
{{zh-etym-short|中國|美國|and=1}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōng-Měi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{C|zh|International relations}}{{cln|zh|dvandva compounds}}[[จีน]]และ[[สหรัฐอเมริกา]]
#: {{zh-co|^中--^美 關係|{{w|China–United States relations|'''China–United States''' relations}}}}
#: {{zh-co|^中--^美 貿易戰|{{w|China–United States trade war|'''China–United States''' trade war}}}}
#: {{zh-x|^中--^美 航線|{{w|Air route authority between the United States and China|Air route authority '''between the United States and China'''}}}}
#: {{zh-x|^中--^美 海纜|{{w|CUCN|'''CU'''CN}}; '''China-US''' Cable Network}}
=== รากศัพท์ 2 ===
จาก{{zh-l|中|กลาง; ตอนกลาง}} + {{zh-l|美*}}, คำย่อของ {{zh-l|美洲|ทวีปอเมริกาทั้งสอง}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōngměi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{tcl|zh|อเมริกากลาง|id=Q27611}}
#: {{zh-x|^中美 貘|{{w|Baird's tapir|'''Central American''' tapir}}}}
#: {{zh-x|^北美、^中美 和 ^加勒比 排球 聯合會|{{w|North, Central America and Caribbean Volleyball Confederation|the North, '''Central America''' and Caribbean Volleyball Confederation}}}}
===== คำพ้องความ =====
* {{zh-l|中美洲}}
n0ycv5kjs8uxtgulsb6oqgnz78ueb48
5720887
5720884
2026-04-22T03:21:21Z
OctraBot
3198
/* คำวิสามานยนาม */
5720887
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms}}
{{wp|zh:}}
=== รากศัพท์ 1 ===
{{zh-etym-short|中國|美國|and=1}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōng-Měi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{C|zh|International relations}}{{cln|zh|dvandva compounds}} [[จีน]]และ[[สหรัฐอเมริกา]]
#: {{zh-co|^中--^美 關係|{{w|China–United States relations|'''China–United States''' relations}}}}
#: {{zh-co|^中--^美 貿易戰|{{w|China–United States trade war|'''China–United States''' trade war}}}}
#: {{zh-x|^中--^美 航線|{{w|Air route authority between the United States and China|Air route authority '''between the United States and China'''}}}}
#: {{zh-x|^中--^美 海纜|{{w|CUCN|'''CU'''CN}}; '''China-US''' Cable Network}}
=== รากศัพท์ 2 ===
จาก{{zh-l|中|กลาง; ตอนกลาง}} + {{zh-l|美*}}, คำย่อของ {{zh-l|美洲|ทวีปอเมริกาทั้งสอง}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōngměi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{tcl|zh|อเมริกากลาง|id=Q27611}}
#: {{zh-x|^中美 貘|{{w|Baird's tapir|'''Central American''' tapir}}}}
#: {{zh-x|^北美、^中美 和 ^加勒比 排球 聯合會|{{w|North, Central America and Caribbean Volleyball Confederation|the North, '''Central America''' and Caribbean Volleyball Confederation}}}}
===== คำพ้องความ =====
* {{zh-l|中美洲}}
2cip30ar8t0epw883efh0dwj8olz6ge
5720888
5720887
2026-04-22T03:22:02Z
OctraBot
3198
/* คำวิสามานยนาม */
5720888
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms}}
{{wp|zh:}}
=== รากศัพท์ 1 ===
{{zh-etym-short|中國|美國|and=1}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōng-Měi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{C|zh|ความสัมพันธ์ระหว่างประเทศ}}{{cln|zh|dvandva compounds}} [[จีน]]และ[[สหรัฐอเมริกา]]
#: {{zh-co|^中--^美 關係|{{w|China–United States relations|'''China–United States''' relations}}}}
#: {{zh-co|^中--^美 貿易戰|{{w|China–United States trade war|'''China–United States''' trade war}}}}
#: {{zh-x|^中--^美 航線|{{w|Air route authority between the United States and China|Air route authority '''between the United States and China'''}}}}
#: {{zh-x|^中--^美 海纜|{{w|CUCN|'''CU'''CN}}; '''China-US''' Cable Network}}
=== รากศัพท์ 2 ===
จาก{{zh-l|中|กลาง; ตอนกลาง}} + {{zh-l|美*}}, คำย่อของ {{zh-l|美洲|ทวีปอเมริกาทั้งสอง}}
==== การออกเสียง ====
{{zh-pron
|m=Zhōngměi
|c=zung1 mei5
|mn=tw:Tiong-bí
|cat=pn
}}
==== คำวิสามานยนาม ====
{{head|zh|คำวิสามานยนาม}}
# {{tcl|zh|อเมริกากลาง|id=Q27611}}
#: {{zh-x|^中美 貘|{{w|Baird's tapir|'''Central American''' tapir}}}}
#: {{zh-x|^北美、^中美 和 ^加勒比 排球 聯合會|{{w|North, Central America and Caribbean Volleyball Confederation|the North, '''Central America''' and Caribbean Volleyball Confederation}}}}
===== คำพ้องความ =====
* {{zh-l|中美洲}}
rooggxa778lvgx8z5mtkayljt7a0pgb
Střední Amerika
0
2330502
5720889
2026-04-22T03:23:16Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720889
wikitext
text/x-wiki
== ภาษาเช็ก ==
=== การออกเสียง ===
* {{cs-IPA}}
=== คำวิสามานยนาม ===
{{cs-proper noun|f|head=[[střední|Střední]] [[Amerika]]}}
# {{tcl|cs|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{cs-ndecl|střední|Střední<+> Amerika<f.sg>}}
==== คำเกี่ยวข้อง ====
* ดูที่ {{l|cs|Amerika}}
gklxtlpxp46blpvxgwtn8c1vssegl8t
Centralamerika
0
2330503
5720890
2026-04-22T03:24:06Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720890
wikitext
text/x-wiki
== ภาษาสวีเดน ==
{{wp|sv:}}
=== รากศัพท์ ===
{{compound|sv|central|Amerika}}
=== คำวิสามานยนาม ===
{{sv-proper noun|n}}
# {{tcl|sv|อเมริกากลาง|id=Q27611}}
#: {{syn|sv|Mellanamerika}}
==== ดูเพิ่ม ====
* {{l|sv|Nordamerika}}
* {{l|sv|Sydamerika}}
{{list:countries in Central America/sv}}
=== อ้างอิง ===
* {{R:svenska.se|saol}}
* [https://mesh.kib.ki.se/term/D002489/central-america Svensk MeSH]
avs782fstmwgs8hrn18agda8lehnyo6
Centralamerikas
0
2330504
5720891
2026-04-22T03:24:22Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720891
wikitext
text/x-wiki
== ภาษาสวีเดน ==
=== คำวิสามานยนาม ===
{{head|sv|รูปวิสามานยนาม}}
# {{inflection of|sv|Centralamerika||gen}}
490ed1k956iiz4r9ef9ebip0t6d4zny
Centrālamerika
0
2330505
5720892
2026-04-22T03:24:58Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720892
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
{{swp|lv:}}
[[ไฟล์:Location Central America.png|thumb|250px|Centrālamerika]]
=== รากศัพท์ ===
จาก{{compound|lv|centrāla|Amerika|gloss1=กลาง[{{l|en|feminine|fem.}}]|gloss2=อเมริกา}}
=== การออกเสียง ===
* {{audio|lv|lv-riga-Centrālamerika.ogg}}
=== คำวิสามานยนาม ===
{{lv-proper noun|f|4th}}
# {{tcl|lv|อเมริกากลาง|id=Q27611}}
#: {{ux|lv|'''Centrālamerikā''' pavisam atrodas septiņas valstis: Beliza, Kostarika, Salvadora, Gvatemala, Hondurasa, Nikaragva un Panama|In '''Central America''' there are in total sevel countries: Belize, Costa Rica, El Salvador, Guatemala, Honduras, Nicaragua and Panama|inline=1}}
==== การผันรูป ====
{{lv-decl-noun|Centrālamerik|a|4th|no-pl||||proper}}
==== ดูเพิ่ม ====
* {{l|lv|Amerika}}
sy5f39yite75vtrvq5f8iyvfozro3rs
5720893
5720892
2026-04-22T03:25:13Z
OctraBot
3198
/* รากศัพท์ */
5720893
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
{{swp|lv:}}
[[ไฟล์:Location Central America.png|thumb|250px|Centrālamerika]]
=== รากศัพท์ ===
จาก{{compound|lv|centrāla|Amerika|gloss1=กลาง[ญ.]|gloss2=อเมริกา}}
=== การออกเสียง ===
* {{audio|lv|lv-riga-Centrālamerika.ogg}}
=== คำวิสามานยนาม ===
{{lv-proper noun|f|4th}}
# {{tcl|lv|อเมริกากลาง|id=Q27611}}
#: {{ux|lv|'''Centrālamerikā''' pavisam atrodas septiņas valstis: Beliza, Kostarika, Salvadora, Gvatemala, Hondurasa, Nikaragva un Panama|In '''Central America''' there are in total sevel countries: Belize, Costa Rica, El Salvador, Guatemala, Honduras, Nicaragua and Panama|inline=1}}
==== การผันรูป ====
{{lv-decl-noun|Centrālamerik|a|4th|no-pl||||proper}}
==== ดูเพิ่ม ====
* {{l|lv|Amerika}}
ky6fh9kba9a7mbgdxu2bfjq5mmfnzhg
Centrālamerikā
0
2330506
5720894
2026-04-22T03:25:58Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720894
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
=== คำวิสามานยนาม ===
{{head|lv|รูปวิสามานยนาม|g=f}}
# {{inflection of|lv|Centrālamerika||loc|s}}
t613px9oig7ddjq7500om55qhwrm9f6
Centrālameriku
0
2330507
5720895
2026-04-22T03:26:23Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720895
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
=== คำวิสามานยนาม ===
{{head|lv|รูปวิสามานยนาม|g=f}}
# {{inflection of|lv|Centrālamerika||acc//ins|s}}
8saznj6o9i9r341lumb6tpuox4xo7tx
Centrālamerikas
0
2330508
5720896
2026-04-22T03:26:28Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720896
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
=== คำวิสามานยนาม ===
{{head|lv|รูปวิสามานยนาม|g=f}}
# {{inflection of|lv|Centrālamerika||gen|s}}
qgzc42pko1x6vmf072vqe5a4tv7dkmo
Centrālamerikai
0
2330509
5720897
2026-04-22T03:26:31Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720897
wikitext
text/x-wiki
== ภาษาลัตเวีย ==
=== คำวิสามานยนาม ===
{{head|lv|รูปวิสามานยนาม|g=f}}
# {{inflection of|lv|Centrālamerika||dat|s}}
ashxvnoj8b3ze58qn1cafm9xscm9v1s
Midden-Amerika
0
2330510
5720898
2026-04-22T03:28:40Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720898
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{affix|nl|midden-|t1=กลาง, ตอนกลาง|Amerika|t2=อเมริกา}}
=== การออกเสียง ===
* {{audio|nl|Nl-Midden-Amerika.ogg}}
=== คำวิสามานยนาม ===
{{nl-proper noun|n}}
# {{tcl|nl|อเมริกากลาง|id=Q27611}} {{q|รวมหรือไม่รวม[[หมู่เกาะเวสต์อินดีส]]ใน[[ทะเลแคริบเบียน]]}}
#: ''Continentaal '''Midden-Amerika''' omvat de reus Mexico en een trist bananenrepublieken van Belize tot Panama''
#:: ''Continental Central-America comprises the giant Mexico and a series of banana republics from Belize to Panama''
==== คำพ้องความ ====
* {{l|nl|Centraal-Amerika}}
==== ลูกคำ ====
* {{l|nl|Midden-Amerikaan}}
* {{l|nl|Midden-Amerikaans}}
==== คำเกี่ยวข้อง ====
* {{l|nl|Latijns-Amerika}}
* {{l|nl|Noord-Amerika}}
* {{l|nl|Zuid-Amerika}}
2luhikajd2o0vmi1bpie9xofkjv0d9k
5720900
5720898
2026-04-22T03:29:56Z
OctraBot
3198
/* คำวิสามานยนาม */
5720900
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{affix|nl|midden-|t1=กลาง, ตอนกลาง|Amerika|t2=อเมริกา}}
=== การออกเสียง ===
* {{audio|nl|Nl-Midden-Amerika.ogg}}
=== คำวิสามานยนาม ===
{{nl-proper noun|n}}
# {{tcl|nl|อเมริกากลาง|id=Q27611}} {{q|รวมหรือไม่รวมถึง[[หมู่เกาะเวสต์อินดีส]]ใน[[ทะเลแคริบเบียน]]}}
#: ''Continentaal '''Midden-Amerika''' omvat de reus Mexico en een trist bananenrepublieken van Belize tot Panama''
#:: ''Continental Central-America comprises the giant Mexico and a series of banana republics from Belize to Panama''
==== คำพ้องความ ====
* {{l|nl|Centraal-Amerika}}
==== ลูกคำ ====
* {{l|nl|Midden-Amerikaan}}
* {{l|nl|Midden-Amerikaans}}
==== คำเกี่ยวข้อง ====
* {{l|nl|Latijns-Amerika}}
* {{l|nl|Noord-Amerika}}
* {{l|nl|Zuid-Amerika}}
dxgzrfx51ys4ukzpu3ng2au75b6zwl7
Centraal-Amerika
0
2330511
5720899
2026-04-22T03:29:53Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720899
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:Midden-Amerika}}
=== รากศัพท์ ===
จาก{{affix|nl|centraal|t1=กลาง|Amerika|t2=อเมริกา}}
=== การออกเสียง ===
* {{IPA|nl|/sɛnˌtraːl.aːˈmeː.ri.kaː/}}
* {{audio|nl|Nl-Centraal-Amerika.ogg}}
* {{hyphenation|nl|Cen|traal-Ame|ri|ka}}
=== คำวิสามานยนาม ===
{{nl-proper noun|n}}
# {{tcl|nl|อเมริกากลาง|id=Q27611}} {{q|รวมหรือไม่รวมถึง[[หมู่เกาะเวสต์อินดีส]]ใน[[ทะเลแคริบเบียน]]}}
#: {{ux|nl|'''Centraal-Amerika''' wordt gekenmerkt door een grote soortenrijkdom en de invloeden van meerdere oude beschavingen.|'''Central-America''' is characterised by a large biodiversity and the influences from several ancient civilisations.}}
==== คำพ้องความ ====
* {{l|nl|Midden-Amerika}}
==== ลูกคำ ====
* {{l|nl|Centraal-Amerikaan}}
* {{l|nl|Centraal-Amerikaans}}
==== คำเกี่ยวข้อง ====
* {{l|nl|Centraal-Azië}}
* {{l|nl|Centraal-Europa}}
* {{l|nl|Centraal-Afrika}}
* {{l|nl|Latijns-Amerika}}
* {{l|nl|Noord-Amerika}}
* {{l|nl|Zuid-Amerika}}
4oph8mkll6cin9dmahmwgsqefk56qf5
Keski-Amerikka
0
2330512
5720901
2026-04-22T03:31:08Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720901
wikitext
text/x-wiki
== ภาษาฟินแลนด์ ==
=== รากศัพท์ ===
{{affix|fi|keski-<naf>|Amerikka}}
=== การออกเสียง ===
{{fi-p}}
=== คำวิสามานยนาม ===
{{head|fi|คำวิสามานยนาม|head=[[keski-|Keski]]-[[Amerikka]]}}
# {{tcl|fi|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{fi-decl-solakka|n=sg|Keski-Ameri|kk|k|a}}
==== ลูกคำ ====
{{col|fi
|keskiamerikkalainen
}}
{{col|fi|title=compounds
|keskiamerikanhiirunen
|keskiamerikanvyötiäinen
}}
6zjli4qzmlfx3q8lehv7e21n7vbtc01
Amérique centrale
0
2330513
5720902
2026-04-22T03:32:40Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720902
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== การออกเสียง ===
* {{audio|fr|LL-Q150 (fra)-Lyokoï-Amérique centrale.wav|a=<<France>> (<<Lyon>>)}}
=== คำวิสามานยนาม ===
{{fr-proper noun|f}}
# {{tcl|fr|อเมริกากลาง|id=Q27611}}
a01lie6ggdbpe8mdn5c9yyvar76p0c0
América Central
0
2330514
5720903
2026-04-22T03:34:01Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5720903
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
{{wp|gl:}}
=== รากศัพท์ ===
{{lit|Central America}}
=== การออกเสียง ===
* {{audio|gl|Gl-América Central.ogg}}
=== คำวิสามานยนาม ===
{{gl-proper noun|f|head=[[América]] [[central|Central]]}}
# {{tcl|gl|อเมริกากลาง|id=Q27611}}
#: {{syn|gl|Centroamérica}}
== ภาษาโปรตุเกส ==
{{wp|pt:}}
[[ไฟล์:Mittelamerika-Pos.png|thumb|América Central]]
=== รากศัพท์ ===
{{lit|Central America}}
=== คำวิสามานยนาม ===
{{pt-proper noun|f|head=América central|Central}}
# {{tcl|pt|อเมริกากลาง|id=Q27611}}
#* {{quote-book|pt|year=2005|author=Wagner Blini, vários autores|title=Salvando Vida - Com Medicina Natural|pageurl=http://books.google.com.br/books?id=IRTbfcR6BEIC&pg=PA215#v=onepage&q&f=false|isbn=9788599513019|page=215|publisher=Editora DCL|text=O abacate é uma fruta de sabor suave e gosto agradável, nem doce e nem amargo. O sabor neutro, aliado à polpa carnuda e macia, faz dele um dos ingredientes mais versáteis da culinária popular. Na Europa e na '''América Central''', o abacate é um importante ingrediente para saladas.}}
== ภาษาสเปน ==
{{wp|es:}}
=== รากศัพท์ ===
{{lit|Central America}}
=== การออกเสียง ===
{{es-pr}}
{{rfap|es}}
=== คำวิสามานยนาม ===
{{es-proper noun|f|head=América central|Central}}
# {{tcl|es|อเมริกากลาง|id=Q27611}}
#: {{syn|es|Centroamérica}}
fze5dv6fmvzqo4rmydt4xy2r2byes0m
5720904
5720903
2026-04-22T03:34:38Z
OctraBot
3198
/* คำวิสามานยนาม */
5720904
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
{{wp|gl:}}
=== รากศัพท์ ===
{{lit|Central America}}
=== การออกเสียง ===
* {{audio|gl|Gl-América Central.ogg}}
=== คำวิสามานยนาม ===
{{gl-proper noun|f|head=[[América]] [[central|Central]]}}
# {{tcl|gl|อเมริกากลาง|id=Q27611}}
#: {{syn|gl|Centroamérica}}
== ภาษาโปรตุเกส ==
{{wp|pt:}}
[[ไฟล์:Mittelamerika-Pos.png|thumb|América Central]]
=== รากศัพท์ ===
{{lit|Central America}}
=== คำวิสามานยนาม ===
{{pt-proper noun|f|head=América Central}}
# {{tcl|pt|อเมริกากลาง|id=Q27611}}
#* {{quote-book|pt|year=2005|author=Wagner Blini, vários autores|title=Salvando Vida - Com Medicina Natural|pageurl=http://books.google.com.br/books?id=IRTbfcR6BEIC&pg=PA215#v=onepage&q&f=false|isbn=9788599513019|page=215|publisher=Editora DCL|text=O abacate é uma fruta de sabor suave e gosto agradável, nem doce e nem amargo. O sabor neutro, aliado à polpa carnuda e macia, faz dele um dos ingredientes mais versáteis da culinária popular. Na Europa e na '''América Central''', o abacate é um importante ingrediente para saladas.}}
== ภาษาสเปน ==
{{wp|es:}}
=== รากศัพท์ ===
{{lit|Central America}}
=== การออกเสียง ===
{{es-pr}}
{{rfap|es}}
=== คำวิสามานยนาม ===
{{es-proper noun|f|head=América central|Central}}
# {{tcl|es|อเมริกากลาง|id=Q27611}}
#: {{syn|es|Centroamérica}}
2iwfbb8459se11o506v25zrufrtmtou
5720906
5720904
2026-04-22T03:35:22Z
OctraBot
3198
5720906
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
{{wp|gl:}}
=== รากศัพท์ ===
{{lit|อเมริกากลาง}}
=== การออกเสียง ===
* {{audio|gl|Gl-América Central.ogg}}
=== คำวิสามานยนาม ===
{{gl-proper noun|f|head=[[América]] [[central|Central]]}}
# {{tcl|gl|อเมริกากลาง|id=Q27611}}
#: {{syn|gl|Centroamérica}}
== ภาษาโปรตุเกส ==
{{wp|pt:}}
[[ไฟล์:Mittelamerika-Pos.png|thumb|América Central]]
=== รากศัพท์ ===
{{lit|อเมริกากลาง}}
=== คำวิสามานยนาม ===
{{pt-proper noun|f|head=[[América]] [[central|Central]]}}
# {{tcl|pt|อเมริกากลาง|id=Q27611}}
#* {{quote-book|pt|year=2005|author=Wagner Blini, vários autores|title=Salvando Vida - Com Medicina Natural|pageurl=http://books.google.com.br/books?id=IRTbfcR6BEIC&pg=PA215#v=onepage&q&f=false|isbn=9788599513019|page=215|publisher=Editora DCL|text=O abacate é uma fruta de sabor suave e gosto agradável, nem doce e nem amargo. O sabor neutro, aliado à polpa carnuda e macia, faz dele um dos ingredientes mais versáteis da culinária popular. Na Europa e na '''América Central''', o abacate é um importante ingrediente para saladas.}}
== ภาษาสเปน ==
{{wp|es:}}
=== รากศัพท์ ===
{{lit|อเมริกากลาง}}
=== การออกเสียง ===
{{es-pr}}
{{rfap|es}}
=== คำวิสามานยนาม ===
{{es-proper noun|f|head=[[América]] [[central|Central]]}}
# {{tcl|es|อเมริกากลาง|id=Q27611}}
#: {{syn|es|Centroamérica}}
3327ad9aji4hqoy12n1m1mrt5mxjdaa
Centroamérica
0
2330515
5720907
2026-04-22T03:36:43Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5720907
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
{{wp|gl:}}
=== รากศัพท์ ===
จาก{{affix|gl|centro|t1=กลาง|América|t2=อเมริกา}}
=== คำวิสามานยนาม ===
{{gl-proper noun|f}}
# {{tcl|gl|อเมริกากลาง|id=Q27611}}
#: {{syn|gl|América Central}}
== ภาษาสเปน ==
{{wp|es:}}
=== รากศัพท์ ===
จาก{{affix|es|centro-|t1=กลาง|América|t2=อเมริกา}}
=== การออกเสียง ===
{{es-pr}}
=== คำวิสามานยนาม ===
{{es-proper noun|f}}
# {{tcl|es|อเมริกากลาง|id=Q27611}}
#: {{syn|es|América Central}}
f0mpi0d04a510eqttlmn1wr9prdp554
ცენტრალური ამერიკა
0
2330516
5720908
2026-04-22T03:37:24Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720908
wikitext
text/x-wiki
== ภาษาจอร์เจีย ==
=== การออกเสียง ===
* {{ka-IPA}}
* {{ka-hyphen}}
=== คำวิสามานยนาม ===
{{ka-proper noun}}
# {{tcl|ka|อเมริกากลาง|id=Q27611}}
co17us53o8d7wxo7juhhvus8c3uli9t
Mittelamerika
0
2330517
5720909
2026-04-22T03:37:56Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720909
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
{{wp|de:}}
=== รากศัพท์ ===
จาก{{affix|de|mittel-|Amerika}}
=== การออกเสียง ===
* {{IPA|de|/ˌmɪtəl.aˈmeːrika/|/ˈmɪtəl.aˌmeːrika/|[mɪ.tl̩.ʔa.meː.ʁi.ka]|[-təl.ʔa-]|[-tla-]|[-tə.la-]|[-ʁɪ-]}}
* {{IPA|de|/ˌmɪtl̩.ɑˈmɛɐ̯ʀikɑ/|aa=Austria}}
* {{audio|de|De-Mittelamerika.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำวิสามานยนาม ===
{{head|de|คำวิสามานยนาม|g=n}}
# {{tcl|de|อเมริกากลาง|id=Q27611}}
==== ลูกคำ ====
* {{l|de|mittelamerikanisch}}
oq4un92vcnyngu6yt5lkgzmgutosgz5
Zentralamerika
0
2330518
5720911
2026-04-22T03:39:21Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720911
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
{{wp|de:}}
=== รูปแบบอื่น ===
* {{alter|de|Centralamerica||obsolete}}
=== รากศัพท์ ===
จาก{{compound|de|zentral|gloss1=กลาง|Amerika|gloss2=อเมริกา}}
=== การออกเสียง ===
* {{audio|de|De-Zentralamerika.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำวิสามานยนาม ===
{{de-proper noun|n}}
# {{tcl|de|อเมริกากลาง|id=Q27611}}
167geiyq1cdypdwdb9jkujcavbhvngq
Κεντρική Αμερική
0
2330519
5720912
2026-04-22T03:40:02Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720912
wikitext
text/x-wiki
== ภาษากรีก ==
=== คำวิสามานยนาม ===
{{el-noun-proper|f|head=[[κεντρικός|Κεντρική]] [[Αμερική]]}}
# {{tcl|el|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{el-inflection-see|κεντρικός|Αμερική}}
==== อ่านเพิ่ม ====
* {{pedia|lang=el}}
faz6gb80h8t7nuv4hc1060rkj2rgj5o
मध्य अमेरिका
0
2330520
5720913
2026-04-22T03:40:53Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720913
wikitext
text/x-wiki
== ภาษาฮินดี ==
{{wp|hi:}}
=== รากศัพท์ ===
จาก{{affix|hi|मध्य|अमेरिका}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำวิสามานยนาม ===
{{hi-proper noun|m}}
# {{tcl|hi|อเมริกากลาง|id=Q27611}}
2txs69gw32qifmb40gluvylven01o8r
Közép-Amerika
0
2330521
5720914
2026-04-22T03:41:46Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720914
wikitext
text/x-wiki
== ภาษาฮังการี ==
{{swp|hu:}}
=== รากศัพท์ ===
จาก{{affix|hu|közép|Amerika|t1=กลาง|t2=อเมริกา|pos=คำวิสามานยนาม}}
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|Kö|zép-Ame|ri|ka}}
* {{rhymes|hu|kɒ|s=6}}
=== คำวิสามานยนาม ===
{{head|hu|คำวิสามานยนาม|head=[[közép|Közép]]-[[Amerika]]}}
# {{tcl|hu|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{hu-infl-nom|Közép-Ameriká|o|n=sg}}{{hu-pos-tok|Közép-Ameriká|n=sg}}
==== ลูกคำ ====
{{col4|hu
|közép-amerikai
}}
09b068f63dfm2frgxq0ufrtxh6ocqy5
Meiriceá Láir
0
2330522
5720915
2026-04-22T03:42:29Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720915
wikitext
text/x-wiki
== ภาษาไอริช ==
=== คำวิสามานยนาม ===
{{ga-proper noun|m|head=[[Meiriceá]] [[láir|Láir]]|Mheiriceá Láir}}
# {{tcl|ga|อเมริกากลาง|id=Q27611}}
=== การกลายรูป ===
{{ga-mut}}
=== อ่านเพิ่ม ===
* {{R:ga:NEID}}
15uifoxw3izfy3vu37zf9pacmln0abp
中米
0
2330523
5720916
2026-04-22T03:43:25Z
OctraBot
3198
เก็บกวาด
5720916
wikitext
text/x-wiki
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|ちゅう|べい|yomi=on}}
=== รากศัพท์ 1 ===
==== การออกเสียง ====
{{ja-pron|ちゅうべい|acc=0}}
==== คำวิสามานยนาม ====
{{ja-pos|proper|ちゅうべい}}
# {{tcl|ja|อเมริกากลาง|id=Q27611}}
#* {{quote-web|ja|author=Japan for UNHCR|title=Chūbei no nanmin kiki: Naze, Chūbei no shōnen, shōjo wa kita o mezasu no ka|work=Kokuren UNHCR Kyōkai|url=https://www.japanforunhcr.org/lp/americas|accessdate=April 17, 2018|archiveurl=https://web.archive.org/web/20170726145801/https://www.japanforunhcr.org/lp/americas|archivedate=26 July 2017}}
#*: {{ja-usex|こうしている今も、[[エルサルバドル]]、[[ホンジュラス]]、[[グアテマラ]]などの'''中%米'''の[[国%々]]では、[[十代|10%代]]の[[少%年]]%・[[少%女]]が[[母%国]]を[[逃れる|逃れて]]、[[子ども]]だけで[[アメリカ]]や[[メキシコ]]を[[目指す|目%指しています]]。|^こう して いる いま も、^エル ^サルバドル、^ホンジュラス、^グアテマラ など の '''^ちゅう%べい''' の くに%ぐに で は、じゅう%だい の しょう%ねん%・しょう%じょ が ぼ%こく を のがれて、こども だけ で ^アメリカ や ^メキシコ を め%ざして います。|Even now as we write this, in El Salvador, Honduras, Guatemala and other countries in '''Central America''', young men and women in their teens are fleeing their home country, mere children headed for the United States or Mexico.}}
===== คำพ้องความ =====
* {{ja-r|中%央 アメリカ|^ちゅう%おう ^アメリカ}}
===== ดูเพิ่ม =====
* {{ja-r|南%米|^なん%べい|South America}}
* {{ja-r|北%米|^ほく%べい|North America}}
* {{ja-r|米%州|^べい%しゅう|the Americas}}
=== รากศัพท์ 2 ===
==== คำวิสามานยนาม ====
{{ja-pos|proper|ちゅうべい}}
# {{lb|ja|uncommon}} [[จีน]]และ[[สหรัฐอเมริกา]]
===== คำพ้องความ =====
* {{ja-r|米中|べいちゅう}}
12kuajtwqudr0wobjrt635hiauew05r
5720917
5720916
2026-04-22T03:44:05Z
OctraBot
3198
/* คำวิสามานยนาม */
5720917
wikitext
text/x-wiki
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|ちゅう|べい|yomi=on}}
=== รากศัพท์ 1 ===
==== การออกเสียง ====
{{ja-pron|ちゅうべい|acc=0}}
==== คำวิสามานยนาม ====
{{ja-pos|proper|ちゅうべい}}
# {{tcl|ja|อเมริกากลาง|id=Q27611}}
#* {{quote-web|ja|author=Japan for UNHCR|title=Chūbei no nanmin kiki: Naze, Chūbei no shōnen, shōjo wa kita o mezasu no ka|work=Kokuren UNHCR Kyōkai|url=https://www.japanforunhcr.org/lp/americas|accessdate=April 17, 2018|archiveurl=https://web.archive.org/web/20170726145801/https://www.japanforunhcr.org/lp/americas|archivedate=26 July 2017}}
#*: {{ja-usex|こうしている今も、[[エルサルバドル]]、[[ホンジュラス]]、[[グアテマラ]]などの'''中%米'''の[[国%々]]では、[[十代|10%代]]の[[少%年]]%・[[少%女]]が[[母%国]]を[[逃れる|逃れて]]、[[子ども]]だけで[[アメリカ]]や[[メキシコ]]を[[目指す|目%指しています]]。|^こう して いる いま も、^エル ^サルバドル、^ホンジュラス、^グアテマラ など の '''^ちゅう%べい''' の くに%ぐに で は、じゅう%だい の しょう%ねん%・しょう%じょ が ぼ%こく を のがれて、こども だけ で ^アメリカ や ^メキシコ を め%ざして います。|แม้กระทั่งในปัจจุบัน ในประเทศแถบอเมริกากลาง เช่น เอลซัลวาดอร์ ฮอนดูรัส และกัวเตมาลา เด็กวัยรุ่นชายและหญิงยังคงหนีออกจากประเทศบ้านเกิดและมุ่งหน้าไปยังสหรัฐอเมริกาหรือเม็กซิโกโดยลำพัง}}
===== คำพ้องความ =====
* {{ja-r|中%央 アメリカ|^ちゅう%おう ^アメリカ}}
===== ดูเพิ่ม =====
* {{ja-r|南%米|^なん%べい|South America}}
* {{ja-r|北%米|^ほく%べい|North America}}
* {{ja-r|米%州|^べい%しゅう|the Americas}}
=== รากศัพท์ 2 ===
==== คำวิสามานยนาม ====
{{ja-pos|proper|ちゅうべい}}
# {{lb|ja|uncommon}} [[จีน]]และ[[สหรัฐอเมริกา]]
===== คำพ้องความ =====
* {{ja-r|米中|べいちゅう}}
i9zcnk3trtwvmo1q1qqwkv9g3jlddpy
Средна Америка
0
2330524
5720918
2026-04-22T03:45:21Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720918
wikitext
text/x-wiki
== ภาษามาซิโดเนีย ==
{{wp|mk:}}
=== การออกเสียง ===
* {{mk-IPA}}
=== คำวิสามานยนาม ===
{{mk-proper noun|f|head=[[среден|Средна]] [[Америка]]}}
# {{tcl|mk|อเมริกากลาง|id=Q27611}}
#: {{syn|mk|Централна Америка}}
=== ดูเพิ่ม ===
* {{l|mk|Јужна Америка}}
* {{l|mk|Северна Америка}}
28t68f53v4uvjmnucsojf53w6ot4881
Mellom-Amerika
0
2330525
5720919
2026-04-22T03:46:02Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5720919
wikitext
text/x-wiki
== ภาษานอร์เวย์แบบนือนอสก์ ==
{{wp|nn:}}
=== รากศัพท์ ===
จาก{{compound|nn|mellom|Amerika}}
=== คำวิสามานยนาม ===
{{head|nn|คำวิสามานยนาม}}
# {{tcl|nn|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|nn|Sentral-Amerika}}
==== คำเกี่ยวข้อง ====
* {{l|nn|Amerika}}
* {{l|nn|mellomamerikansk}}
* {{l|no|Nord-Amerika}}
* {{l|no|Sør-Amerika}}
== ภาษานอร์เวย์แบบบุ๊กมอล ==
{{wp|no:}}
=== รากศัพท์ ===
จาก{{compound|nb|mellom|Amerika}}
=== คำวิสามานยนาม ===
{{head|nb|คำวิสามานยนาม}}
# {{tcl|nb|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|nb|Sentral-Amerika}}
==== คำเกี่ยวข้อง ====
* {{l|nb|Amerika}}
* {{l|nb|mellomamerikansk}}
* {{l|no|Nord-Amerika}}
* {{l|no|Sør-Amerika}}
ooco3w0vjo2rkfku9t7rh9qmgzdb8vh
Sentral-Amerika
0
2330526
5720920
2026-04-22T03:46:34Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720920
wikitext
text/x-wiki
== ภาษานอร์เวย์แบบบุ๊กมอล ==
{{wp|no:Mellom-Amerika}}
=== รากศัพท์ ===
จาก{{compound|nb|sentral|Amerika}}
=== คำวิสามานยนาม ===
{{head|nb|คำวิสามานยนาม}}
# {{tcl|nb|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|nb|Mellom-Amerika}}
==== คำเกี่ยวข้อง ====
* {{l|nb|Amerika}}
* {{l|no|Nord-Amerika}}
* {{l|no|Sør-Amerika}}
== ภาษานอร์เวย์แบบนือนอสก์ ==
{{wp|nn:Mellom-Amerika}}
=== รากศัพท์ ===
จาก{{compound|nn|sentral|Amerika}}
=== คำวิสามานยนาม ===
{{head|nn|คำวิสามานยนาม}}
# {{tcl|nn|อเมริกากลาง|id=Q27611}}
==== คำพ้องความ ====
* {{l|nn|Mellom-Amerika}}
==== คำเกี่ยวข้อง ====
* {{l|nn|Amerika}}
* {{l|no|Nord-Amerika}}
* {{l|no|Sør-Amerika}}
jvn2xw91bxnpx7zjw8y6ure1cncchnu
آمریکای مرکزی
0
2330527
5720921
2026-04-22T03:47:03Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720921
wikitext
text/x-wiki
== ภาษาเปอร์เซีย ==
{{wp|fa:}}
=== คำวิสามานยนาม ===
{{fa-proper noun|tr=âmrikâ-ye markazi}}
# {{tcl|fa|อเมริกากลาง|id=Q27611}}
qpitkk12e58umpy0vvskkf95tabw8ys
Ameryka Centralna
0
2330528
5720922
2026-04-22T03:47:40Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720922
wikitext
text/x-wiki
== ภาษาโปแลนด์ ==
{{wp|pl:}}
[[ไฟล์:LocationCentralAmerica.png|thumb|Ameryka Centralna]]
=== รากศัพท์ ===
{{lit|อเมริกากลาง}}
=== การออกเสียง ===
{{pl-pr|&|a=LL-Q809 (pol)-Liskowskyy-Ameryka Centralna.wav}}
=== คำวิสามานยนาม ===
{{pl-proper noun|f|head=[[Ameryka]] [[centralny|Centralna]]}}
# {{tcl|pl|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{pl-decl-phrase|f|adj-f|tantum=s}}
=== อ่านเพิ่ม ===
* {{R:pl:PWN|Ameryka Centralna}}
hw3ciz60a3fdc2yuaw0rgboe5ccemmn
America Centrală
0
2330529
5720923
2026-04-22T03:48:31Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720923
wikitext
text/x-wiki
== ภาษาโรมาเนีย ==
=== การออกเสียง ===
* {{IPA|ro|[aˈme.ri.ka.t͡ʃenˌtɾa.lə]}}
=== คำวิสามานยนาม ===
{{head|ro|คำวิสามานยนาม|g=f|head=[[America]] [[centrală|Centrală]]}}
# {{tcl|ro|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{ro-country|Americii Centrale}}
==== คำเกี่ยวข้อง ====
* {{l|ro|America}}
* {{l|ro|America de Nord}}
* {{l|ro|America de Sud}}
* {{l|ro|central-american}}
c4sbnis33r6aydzbgjadxac1zwsxwjl
Центральная Америка
0
2330530
5720924
2026-04-22T03:49:05Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720924
wikitext
text/x-wiki
== ภาษารัสเซีย ==
=== การออกเสียง ===
* {{ru-IPA|Центра́льная Аме́рика}}
=== คำวิสามานยนาม ===
{{ru-proper noun+|[[центральный|Центра́льная]]|+|_|[[Аме́рика]]}}
# {{tcl|ru|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{ru-noun-table|центральный|Центра́льная|+|_|Аме́рика|n=sg}}
==== ดูเพิ่ม ====
* {{l|ru|Се́верная Аме́рика}}
* {{l|ru|Ю́жная Аме́рика}}
ocd0v0re159oet8pja9weia26jpv7fl
Mellanamerika
0
2330531
5720925
2026-04-22T03:50:04Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720925
wikitext
text/x-wiki
== ภาษาสวีเดน ==
{{wp|sv:}}
=== รากศัพท์ ===
{{affix|sv|mellan|Amerika}}
=== คำวิสามานยนาม ===
{{sv-proper noun|n}}
# {{syn of|sv|Centralamerika|t=อเมริกากลาง}}
==== คำเกี่ยวข้อง ====
* {{l|sv|mellanamerikan}}
* {{l|sv|mellanamerikansk}}
* {{l|sv|mellanamerikanska}}
=== อ้างอิง ===
* {{R:svenska.se|saol}}
opmqmovdtjjrjgtznjx824nd2dzyzu8
మధ్య అమెరికా
0
2330532
5720926
2026-04-22T03:50:31Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720926
wikitext
text/x-wiki
== ภาษาเตลูกู ==
=== คำวิสามานยนาม ===
{{te-proper noun}}
# {{tcl|te|อเมริกากลาง|id=Q27611}}
5yahspfjqxy1e9ez1e1hf7ccnoyggpw
Центральна Америка
0
2330533
5720927
2026-04-22T03:51:10Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720927
wikitext
text/x-wiki
== ภาษายูเครน ==
{{wp|uk:}}
=== การออกเสียง ===
* {{uk-IPA|Центра́льна Аме́рика}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Центральна Америка.wav}}
=== คำวิสามานยนาม ===
{{uk-proper noun|[[центральний|Центра́льна]]<+> [[Аме́рика]]<sg>|adj=центральноамерика́нський}}
# {{tcl|uk|อเมริกากลาง|id=Q27611}}
==== การผันรูป ====
{{uk-ndecl|центральний|Центра́льна<+> Аме́рика<sg>}}
=== ดูเพิ่ม ===
{{list:continents/uk}}
=== อ้างอิง ===
* {{R:uk:SUM-11}}
* {{R:uk:Horokh}}
muzckh2r8om6tx80634bglx9yrjywps
มอดูล:uk-adjective
828
2330534
5720928
2026-04-22T03:51:38Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/gender/number. Example slot names for adjectives are "gen_f" (genitive feminine singular) and "loc_p" (locative plural). Each slot is filled with zero or more forms. -- "form" = The declined Ukrainian form representing the value of a given slot. -- "lemma" = The dictionary form of a given Ukrainian term. Generally..."
5720928
Scribunto
text/plain
local export = {}
--[=[
Authorship: Ben Wing <benwing2>
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular combination of case/gender/number.
Example slot names for adjectives are "gen_f" (genitive feminine singular) and
"loc_p" (locative plural). Each slot is filled with zero or more forms.
-- "form" = The declined Ukrainian form representing the value of a given slot.
-- "lemma" = The dictionary form of a given Ukrainian term. Generally the nominative
masculine singular, but may occasionally be another form if the nominative
masculine singular is missing.
]=]
local lang = require("Module:languages").getByCode("uk")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local m_para = require("Module:parameters")
local com = require("Module:uk-common")
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local AC = u(0x0301) -- acute = ́
-- All slots that are used by any of the different tables. The key is the slot and the value is a list of the
-- tables that use the slot. "" = regular, "surname" = 'surname' indicator, "plonly" = special=plonly in
-- {{uk-adecl-manual}}, "dva" = special=dva in {{uk-adecl-manual}}. Note that the accelerators for some of the
-- below slots (gen_m, dat_m, ins_m, loc_m) are different for surnames vs. others, which we need to handle
-- specially when constructing the output slots.
local input_adjective_slots = {
nom_m = {"", "surname"},
nom_f = {"", "surname"},
nom_n = {""},
nom_p = {"", "surname", "plonly"},
nom_mp = {"dva"},
nom_fp = {"dva"},
gen_m = {"", "surname"},
gen_f = {"", "surname"},
gen_p = {"", "surname", "plonly", "dva"},
dat_m = {"", "surname"},
dat_f = {"", "surname"},
dat_p = {"", "surname", "plonly", "dva"},
acc_m = {"surname"},
acc_m_an = {""},
acc_m_in = {""},
acc_f = {"", "surname"},
acc_n = {""},
acc_p = {"surname"},
acc_p_an = {"", "plonly", "dva"},
acc_p_in = {"", "plonly"},
acc_mp_in = {"dva"},
acc_fp_in = {"dva"},
ins_m = {"", "surname"},
ins_f = {"", "surname"},
ins_p = {"", "surname", "plonly", "dva"},
loc_m = {"", "surname"},
loc_f = {"", "surname"},
loc_p = {"", "surname", "plonly", "dva"},
voc_m = {"", "surname"},
voc_f = {"", "surname"},
voc_p = {"", "surname"},
voc_mp = {"dva"},
voc_fp = {"dva"},
short = {""},
}
local output_adjective_slots = {
nom_m = "nom|m|s",
nom_m_linked = "nom|m|s", -- used in [[Module:uk-noun]]?
nom_f = "nom|f|s",
nom_n = "nom|n|s",
nom_p = "nom|p",
nom_mp = "nom|m//n|p",
nom_fp = "nom|f|p",
gen_m = "gen|m//n|s",
gen_f = "gen|f|s",
gen_p = "gen|p",
dat_m = "dat|m//n|s",
dat_f = "dat|f|s",
dat_p = "dat|p",
acc_m = "acc|m|s",
acc_m_an = "an|acc|m|s",
acc_m_in = "in|acc|m|s",
acc_f = "acc|f|s",
acc_n = "acc|n|s",
acc_p = "acc|p",
acc_p_an = "an|acc|p",
acc_p_in = "in|acc|p",
acc_mp_in = "in|acc|m//n|p",
acc_fp_in = "in|acc|f|p",
ins_m = "ins|m//n|s",
ins_f = "ins|f|s",
ins_p = "ins|p",
loc_m = "loc|m//n|s",
loc_f = "loc|f|s",
loc_p = "loc|p",
voc_m = "voc|m|s",
voc_f = "voc|f|s",
voc_n = "voc|n|s",
voc_p = "voc|p",
voc_mp = "voc|m//n|p",
voc_fp = "voc|f|p",
short = "short|form",
}
local function get_output_adjective_slots(alternant_multiword_spec)
if alternant_multiword_spec.surname then
output_adjective_slots.gen_m = "gen|m|s"
output_adjective_slots.dat_m = "dat|m|s"
output_adjective_slots.ins_m = "ins|m|s"
output_adjective_slots.loc_m = "loc|m|s"
end
return output_adjective_slots
end
local function add(base, slot, stems, endings)
iut.add_forms(base.forms, slot, stems, endings, com.combine_stem_ending)
end
local function add_normal_decl(base, stem,
nom_m, nom_f, nom_n, nom_p,
gen_m, gen_f, gen_p,
dat_m, dat_f, dat_p,
acc_f,
ins_m, ins_f, ins_p,
loc_m, loc_f, loc_p,
footnote)
stem = com.generate_form(stem, footnote)
add(base, "nom_m", stem, nom_m)
add(base, "nom_f", stem, nom_f)
add(base, "nom_n", stem, nom_n)
add(base, "nom_p", stem, nom_p)
add(base, "gen_m", stem, gen_m)
add(base, "gen_f", stem, gen_f)
add(base, "gen_p", stem, gen_p)
add(base, "dat_m", stem, dat_m)
add(base, "dat_f", stem, dat_f)
add(base, "dat_p", stem, dat_p)
add(base, "acc_f", stem, acc_f)
add(base, "ins_m", stem, ins_m)
add(base, "ins_f", stem, ins_f)
add(base, "ins_p", stem, ins_p)
add(base, "loc_m", stem, loc_m)
add(base, "loc_f", stem, loc_f)
add(base, "loc_p", stem, loc_p)
end
local function add_vocative(base, stem, voc_m, voc_f, voc_p)
add(base, "voc_m", stem, voc_m)
add(base, "voc_f", stem, voc_f)
add(base, "voc_p", stem, voc_p)
end
local function stress_ending(ending)
if type(ending) == "string" then
return com.maybe_stress_initial_syllable(ending)
else
for i, e in ipairs(ending) do
ending[i] = com.maybe_stress_initial_syllable(e)
end
return ending
end
end
local function maybe_stress_endings(suffix, endings)
if com.is_stressed(suffix) then
for i, e in ipairs(endings) do
endings[i] = stress_ending(e)
end
end
end
local decls = {}
decls["normal"] = function(base)
local normal_endings, old_endings
local stem, suffix
local function add_endings()
maybe_stress_endings(suffix, normal_endings)
add_normal_decl(base, stem, unpack(normal_endings))
if base.old then
maybe_stress_endings(suffix, old_endings)
local nom_f, nom_n, nom_p, acc_f = unpack(old_endings)
old_endings = {
{}, nom_f, nom_n, nom_p, --nom
{}, {}, {}, --gen
{}, {}, {}, --dat
acc_f, --acc
{}, {}, {}, --ins
{}, {}, {}, --loc
"[dated or dialectal]",
}
add_normal_decl(base, stem, unpack(old_endings))
end
end
-- semi-soft in -ций
stem, suffix = rmatch(base.lemma, "^(.*ц)(и́?й)$")
if stem then
normal_endings = {
"ий", "я", "е", "і", --nom
"ього", "ьої", "их", --gen
"ьому", "ій", "им", --dat
"ю", --acc
"им", "ьою", "ими", --ins
{"ьому", "ім"}, "ій", "их", --loc
}
old_endings = {
"яя", "еє", "ії", --nom
"юю", --acc
}
add_endings()
return
end
-- hard in -ий
stem, suffix = rmatch(base.lemma, "^(.*)(и́?й)$")
if stem then
normal_endings = {
"ий", "а", "е", "і", --nom
"ого", "ої", "их", --gen
"ому", "ій", "им", --dat
"у", --acc
"им", "ою", "ими", --ins
{"ому", "ім"}, "ій", "их", --loc
}
old_endings = {
"ая", "еє", "ії", --nom
"ую", --acc
}
add_endings()
return
end
-- soft in -ій
stem, suffix = rmatch(base.lemma, "^(.*)(і́?й)$")
if stem then
normal_endings = {
"ій", "я", "є", "і", --nom
"ього", "ьої", "іх", --gen
"ьому", "ій", "ім", --dat
"ю", --acc
"ім", "ьою", "іми", --ins
{"ьому", "ім"}, "ій", "іх", --loc
}
old_endings = {
"яя", "єє", "ії", --nom
"юю", --acc
}
add_endings()
return
end
-- soft-after-vowel in -їй
stem, suffix = rmatch(base.lemma, "^(.*)(ї́?й)$")
if stem then
normal_endings = {
"їй", "я", "є", "ї", --nom
"його", "йої", "їх", --gen
"йому", "їй", "їм", --dat
"ю", --acc
"їм", "йою", "їми", --ins
{"йому", "їм"}, "їй", "їх", --loc
}
old_endings = {
"яя", "єє", "її", --nom
"юю", --acc
}
add_endings()
return
end
error("Unrecognized adjective lemma, should end in '-ий', '-ій' or '-їй': '" .. base.lemma .. "'")
end
decls["poss"] = function(base)
local ending_prefix
local stem, suffix
while true do
stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$")
if stem then
ending_prefix = com.apply_vowel_alternation(base.ialt, suffix)
break
end
stem, suffix = rmatch(base.lemma, "^(.*)([иї]́?н)$")
if stem then
ending_prefix = suffix
break
end
error("Unrecognized possessive adjective lemma, should end in '-ів', '-їв', '-ин' or '-їн': '" .. base.lemma .. "'")
end
local endings = {
"а", "е", "і", --nom
"ого", "ої", "их", --gen
"ому", "ій", "им", --dat
"у", --acc
"им", "ою", "ими", --ins
{"ому", "ім"}, "ій", "их", --loc
}
if com.is_stressed(suffix) then
ending_prefix = com.maybe_stress_initial_syllable(ending_prefix)
end
-- Do the nominative singular separately from the rest, which may have
-- a different stem ending (e.g. -ов vs. -ів).
add_normal_decl(base, stem, suffix)
add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings))
-- FIXME: Are there 'old' endings here too?
end
decls["surname"] = function(base)
local ending_prefix
local stem, suffix
while true do
stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$")
if stem then
ending_prefix = com.apply_vowel_alternation(base.ialt, suffix)
break
end
stem, suffix = rmatch(base.lemma, "^(.*)([оє]́?в)$")
if stem then
ending_prefix = suffix
break
end
stem, suffix = rmatch(base.lemma, "^(.*)([иії]́?н)$")
if stem then
ending_prefix = suffix
break
end
error("Unrecognized possessive surname lemma, should end in '-ів', '-їв', '-ов', '-єв', '-ин', '-ін' or '-їн': '" .. base.lemma .. "'")
end
local endings = {
"а", nil, "и", --nom
"а", "ої", "их", --gen
"у", "ій", "им", --dat
"у", --acc
"им", "ою", "ими", --ins
{"у", "і"}, "ій", "их", --loc
}
-- Do the nominative singular separately from the rest, which may have
-- a different stem ending (e.g. -ов vs. -ів).
add_normal_decl(base, stem, suffix)
add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings))
add_vocative(base, stem, suffix)
add_vocative(base, stem .. ending_prefix, "е", "а", "и")
-- FIXME: Are there 'old' endings here too?
end
local function parse_indicator_spec(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local base = {forms = {}}
if inside ~= "" then
local parts = rsplit(inside, ".", true)
for _, part in ipairs(parts) do
if part == "old" then
if base.old then
error("Can't specify 'old' twice: '" .. inside .. "'")
end
base.old = true
elseif part == "surname" then
if base.surname then
error("Can't specify 'surname' twice: '" .. inside .. "'")
end
base.surname = true
elseif part == "io" or part == "ijo" or part == "ie" then
if base.ialt then
error("Can't specify і-alternation indicator twice: '" .. inside .. "'")
end
base.ialt = part
else
error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'")
end
end
end
return base
end
-- Check that multisyllabic lemmas have stress, and add stress to monosyllabic
-- lemmas if needed.
local function normalize_all_lemmas(alternant_multiword_spec)
iut.map_word_specs(alternant_multiword_spec, function(base)
base.orig_lemma = base.lemma
base.orig_lemma_no_links = com.add_monosyllabic_stress(m_links.remove_links(base.lemma))
base.lemma = base.orig_lemma_no_links
if not rfind(base.lemma, AC) then
error("Multisyllabic lemma '" .. base.orig_lemma .. "' needs an accent")
end
end)
end
local function detect_indicator_spec(base)
if rfind(base.lemma, "й$") then
base.decl = "normal"
elseif rfind(base.lemma, "[вн]$") then
if base.surname then
base.decl = "surname"
else
base.decl = "poss"
end
else
error("Unrecognized adjective lemma: '" .. base.lemma .. "'")
end
if base.ialt and base.decl ~= "poss" and base.decl ~= "surname" then
error("Vowel alternation spec '" .. base.ialt .. "' can only be specified with possessive/surname adjectives")
end
end
local function detect_all_indicator_specs(alternant_multiword_spec)
iut.map_word_specs(alternant_multiword_spec, function(base)
detect_indicator_spec(base)
if alternant_multiword_spec.surname == nil then
alternant_multiword_spec.surname = base.surname or false
elseif alternant_multiword_spec.surname ~= (base.surname or false) then
error("If 'surname' is specified in one alternant, it must be specified in all of them")
end
end)
end
local function decline_adjective(base)
if not decls[base.decl] then
error("Internal error: Unrecognized declension type '" .. base.decl .. "'")
end
decls[base.decl](base)
-- handle_derived_slots_and_overrides(base)
end
local function get_variants(form)
return
form:find(com.VAR1) and "var1" or
form:find(com.VAR2) and "var2" or
form:find(com.VAR3) and "var3" or
nil
end
local function fetch_footnotes(separated_group)
local footnotes
for j = 2, #separated_group - 1, 2 do
if separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'")
end
if not footnotes then
footnotes = {}
end
table.insert(footnotes, separated_group[j])
end
return footnotes
end
-- Process override for the arguments in `args`, storing the results into `forms`. If `do_acc_voc`, only do accusative and vocative
-- slots; otherwise, don't do accusative or vocative slots.
local function process_overrides(forms, args, do_acc_voc)
do_acc_voc = not not do_acc_voc
for slot, _ in pairs(input_adjective_slots) do
local case = slot:sub(1, 3)
if args[slot] and (do_acc_voc == (case == "acc") or do_acc_voc == (case == "voc")) then
forms[slot] = nil
if args[slot] ~= "-" and args[slot] ~= "—" then
local segments = put.parse_balanced_segment_run(args[slot], "[", "]")
local comma_separated_groups = put.split_alternating_runs(segments, "%s*,%s*")
for _, comma_separated_group in ipairs(comma_separated_groups) do
local formobj = {
form = comma_separated_group[1],
footnotes = fetch_footnotes(comma_separated_group),
}
iut.insert_form(forms, slot, formobj)
end
end
end
end
end
local function check_allowed_overrides(alternant_multiword_spec, args)
local special = alternant_multiword_spec.special or alternant_multiword_spec.surname and "surname" or ""
for slot, types in pairs(input_adjective_slots) do
if args[slot] then
local allowed = false
for _, typ in ipairs(types) do
if typ == special then
allowed = true
break
end
end
if not allowed then
error(("Override %s= not allowed for %s"):format(slot, special == "" and "regular declension" or
"special=" .. special))
end
end
end
end
local function set_accusative_vocative(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
if alternant_multiword_spec.surname then
iut.insert_forms(forms, "acc_m", forms["gen_m"])
iut.insert_forms(forms, "acc_p", forms["gen_p"])
iut.insert_forms(forms, "voc_m", forms["nom_m"])
iut.insert_forms(forms, "voc_f", forms["nom_f"])
iut.insert_forms(forms, "voc_p", forms["nom_p"])
elseif alternant_multiword_spec.special == "dva" then
iut.insert_forms(forms, "acc_p_an", forms["gen_p"])
iut.insert_forms(forms, "acc_mp_in", forms["nom_mp"])
iut.insert_forms(forms, "acc_fp_in", forms["nom_fp"])
iut.insert_forms(forms, "voc_mp", forms["nom_mp"])
iut.insert_forms(forms, "voc_fp", forms["nom_fp"])
else
iut.insert_forms(forms, "acc_n", forms["nom_n"])
iut.insert_forms(forms, "acc_m_an", forms["gen_m"])
iut.insert_forms(forms, "acc_m_in", forms["nom_m"])
iut.insert_forms(forms, "acc_p_an", forms["gen_p"])
iut.insert_forms(forms, "acc_p_in", forms["nom_p"])
iut.insert_forms(forms, "voc_m", forms["nom_m"])
iut.insert_forms(forms, "voc_f", forms["nom_f"])
iut.insert_forms(forms, "voc_n", forms["nom_n"])
iut.insert_forms(forms, "voc_p", forms["nom_p"])
end
end
local function add_categories(alternant_multiword_spec)
local cats = {}
local function insert(cattype)
table.insert(cats, "Ukrainian " .. cattype .. " adjectives")
end
if not alternant_multiword_spec.manual then
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.decl == "poss" then
insert("possessive")
elseif rfind(base.lemma, "ци́?й$") then
insert("ц-stem")
elseif rfind(base.lemma, "ий$") then
insert("hard-stem stem-stressed")
elseif rfind(base.lemma, "и́й$") then
insert("hard-stem ending-stressed")
elseif rfind(base.lemma, "і́?й$") then
insert("soft-stem")
elseif rfind(base.lemma, "ї́?й$") then
insert("vowel-stem")
end
end)
end
alternant_multiword_spec.categories = cats
end
local function show_forms(alternant_multiword_spec)
local lemmas = {}
local lemmaform = alternant_multiword_spec.forms.nom_m or alternant_multiword_spec.forms.nom_p or
alternant_multiword_spec.forms.nom_mp
if lemmaform then
for _, form in ipairs(lemmaform) do
table.insert(lemmas, com.remove_monosyllabic_stress(form.form))
end
end
local props = {
lemmas = lemmas,
slot_table = get_output_adjective_slots(alternant_multiword_spec),
lang = lang,
canonicalize = function(form)
return com.remove_variant_codes(com.remove_monosyllabic_stress(form))
end,
include_translit = true,
}
iut.show_forms(alternant_multiword_spec.forms, props)
end
local function make_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local frame = mw.getCurrentFrame()
local function template_prelude()
return frame:expandTemplate{
title = 'inflection-table-top',
args = {
title = '{title}{annotation}',
palette = 'blue',
tall = 'yes',
class="tr-alongside"
}
}
end
local function template_postlude()
return frame:expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '{footnote}',
}
}
end
local table_spec = template_prelude() .. [=[
! class="outer" colspan="2" |
! class="outer" colspan="3" | singular
! class="outer" rowspan="2" | plural
|-
! colspan="2" |
! masculine
! neuter
! feminine
|-
! colspan="2" | nominative
| {nom_m}
| {nom_n}
| {nom_f}
| {nom_p}
|-
! colspan="2" | genitive
| colspan="2" | {gen_m}
| {gen_f}
| {gen_p}
|-
! colspan="2" | dative
| colspan="2" | {dat_m}
| {dat_f}
| {dat_p}
|-
! rowspan="2" | accusative
! class="secondary" | animate
| {acc_m_an}
| rowspan="2" | {acc_n}
| rowspan="2" | {acc_f}
| {acc_p_an}
|-
! class="secondary" | inanimate
| {acc_m_in}
| {acc_p_in}
|-
! colspan="2" | instrumental
| colspan="2" | {ins_m}
| {ins_f}
| {ins_p}
|-
! colspan="2" | locative
| colspan="2" | {loc_m}
| {loc_f}
| {loc_p}
|-
! colspan="2" | vocative
| {voc_m}
| {voc_n}
| {voc_f}
| {voc_p}{short_clause}
]=] .. template_postlude()
local table_spec_surname = template_prelude() .. [=[
! class="outer" |
! class="outer" colspan="2" | singular
! class="outer" rowspan="2" | plural
|-
!
! masculine
! feminine
|-
! nominative
| {nom_m}
| {nom_f}
| {nom_p}
|-
! genitive
| {gen_m}
| {gen_f}
| {gen_p}
|-
! dative
| {dat_m}
| {dat_f}
| {dat_p}
|-
! accusative
| {acc_m}
| {acc_f}
| {acc_p}
|-
! instrumental
| {ins_m}
| {ins_f}
| {ins_p}
|-
! locative
| {loc_m}
| {loc_f}
| {loc_p}
|-
! vocative
| {voc_m}
| {voc_f}
| {voc_p}
]=] .. template_postlude()
local table_spec_plonly = template_prelude() .. [=[
! colspan="2" |
! plural
|-
! colspan="2" | nominative
| {nom_p}
|-
! colspan="2" | genitive
| {gen_p}
|-
! colspan="2" | dative
| {dat_p}
|-
! rowspan="2" | accusative
! class="secondary" | animate
| {acc_p_an}
|-
! class="secondary" | inanimate
| {acc_p_in}
|-
! colspan="2" | instrumental
| {ins_p}
|-
! colspan="2" | locative
| {loc_p}
|-
! colspan="2" | vocative
| {voc_p}
]=] .. template_postlude()
local table_spec_dva = template_prelude() .. [=[
! colspan="2" |
! class="outer" colspan="2" | plural
|-
! colspan="2" |
! masculine/neuter
! feminine
|-
! colspan="2" | nominative
| {nom_mp}
| {nom_fp}
|-
! colspan="2" | genitive
| colspan="2" | {gen_p}
|-
! colspan="2" | dative
| colspan="2" | {dat_p}
|-
! rowspan="2" | accusative
! class="secondary" | animate
| colspan="2" | {acc_p_an}
|-
! class="secondary" | inanimate
| {acc_mp_in}
| {acc_fp_in}
|-
! colspan="2" | instrumental
| colspan="2" | {ins_p}
|-
! colspan="2" | locative
| colspan="2" | {loc_p}
|-
! colspan="2" | vocative
| {voc_mp}
| {voc_fp}
]=] .. template_postlude()
local short_form_template = [=[
|-
! colspan="6" |
|-
! colspan="2" | short form
| colspan="1" | {short}]=]
if alternant_multiword_spec.title then
forms.title = alternant_multiword_spec.title
else
forms.title = 'Declension of <i lang="uk" class="Cyrl">' .. forms.lemma .. '</i>'
end
if alternant_multiword_spec.manual then
forms.annotation = ""
else
local ann_parts = {}
local decls = {}
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.decl == "surname" then
m_table.insertIfNot(decls, "surname")
elseif base.decl == "poss" then
m_table.insertIfNot(decls, "possessive")
elseif rfind(base.lemma, "и́?й$") then
m_table.insertIfNot(decls, "hard")
else
m_table.insertIfNot(decls, "soft")
end
end)
table.insert(ann_parts, table.concat(decls, " // "))
forms.annotation = " (" .. table.concat(ann_parts, ", ") .. ")"
end
forms.short_clause = forms.short and forms.short ~= "—" and
m_string_utilities.format(short_form_template, forms) or ""
return m_string_utilities.format(
alternant_multiword_spec.surname and table_spec_surname or
alternant_multiword_spec.special == "plonly" and table_spec_plonly or
alternant_multiword_spec.special == "dva" and table_spec_dva or
table_spec, forms
)
end
-- Externally callable function to parse and decline an adjective given
-- user-specified arguments. Return value is WORD_SPEC, an object where the
-- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values
-- for a slot, the slot key will be missing. The value for a given slot is a
-- list of objects {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms(parent_args, pos, from_headword, def)
local params = {
[1] = {required = true, default = "си́ній"},
json = {type = "boolean"}, -- for use with bots
title = {},
}
for slot, _ in pairs(input_adjective_slots) do
params[slot] = {}
end
local args = m_para.process(parent_args, params)
local parse_props = {
parse_indicator_spec = parse_indicator_spec,
allow_default_indicator = true,
}
local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props)
alternant_multiword_spec.title = args.title
alternant_multiword_spec.forms = {}
normalize_all_lemmas(alternant_multiword_spec)
detect_all_indicator_specs(alternant_multiword_spec)
check_allowed_overrides(alternant_multiword_spec, args)
local inflect_props = {
slot_table = get_output_adjective_slots(alternant_multiword_spec),
get_variants = get_variants,
inflect_word_spec = decline_adjective,
}
iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)
-- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately.
process_overrides(alternant_multiword_spec.forms, args)
set_accusative_vocative(alternant_multiword_spec)
-- Do accusative and vocative overrides after copying the accusative/vocative forms.
process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc")
add_categories(alternant_multiword_spec)
if args.json and not from_headword then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Externally callable function to parse and decline an adjective where all
-- forms are given manually. Return value is WORD_SPEC, an object where the
-- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values
-- for a slot, the slot key will be missing. The value for a given slot is a
-- list of objects {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms_manual(parent_args, pos, from_headword, def)
local params = {
special = {},
json = {type = "boolean"}, -- for use with bots
title = {},
}
for slot, _ in pairs(input_adjective_slots) do
params[slot] = {}
end
local args = m_para.process(parent_args, params)
local alternant_multiword_spec = {
special = args.special,
title = args.title,
forms = {},
manual = true,
}
check_allowed_overrides(alternant_multiword_spec, args)
-- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately.
process_overrides(alternant_multiword_spec.forms, args)
set_accusative_vocative(alternant_multiword_spec)
-- Do accusative and vocative overrides after copying the accusative/vocative forms.
process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc")
add_categories(alternant_multiword_spec)
if args.json and not from_headword then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Entry point for {{uk-adecl}}. Template-callable function to parse and decline
-- an adjective given user-specified arguments and generate a displayable table
-- of the declined forms.
function export.show(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms(parent_args)
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang)
end
-- Entry point for {{uk-adecl-manual}}. Template-callable function to parse and
-- decline an adjective given manually-specified inflections and generate a
-- displayable table of the declined forms.
function export.show_manual(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms_manual(parent_args)
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang)
end
return export
ijbi92n5r31dlpd4epb9gywh70suxya
Canolbarth America
0
2330535
5720929
2026-04-22T03:52:38Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด
5720929
wikitext
text/x-wiki
== ภาษาเวลส์ ==
{{wp|cy:}}
=== คำวิสามานยนาม ===
{{cy-proper noun|f|head=[[canolbarth|Canolbarth]] [[America]]}}
# {{tcl|cy|อเมริกากลาง|id=Q27611}}
=== ดูเพิ่ม ===
{{list:continents/cy}}
{{list:countries in Central America/cy}}
oehl41jigaqdqgsovsupe2qva5xj59m
อเมริกาเหนือ
0
2330536
5720931
2026-04-22T04:25:31Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษาไทย == {{wp|th:}} [[ไฟล์:LocationNorthAmerica.svg|thumb|อเมริกาเหนือ]] === รากศัพท์ === {{calque|th|en|North America}}; {{surf|th|อเมริกา|เหนือ}} === การออกเสียง === {{th-pron|อะ-เม-ริ-กา-เหฺนือ}} === คำวิสามานยนาม === {{th-proper noun}} # {{senseid|th|Q49}}{{place|th|<<ทวี..."
5720931
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:LocationNorthAmerica.svg|thumb|อเมริกาเหนือ]]
=== รากศัพท์ ===
{{calque|th|en|North America}}; {{surf|th|อเมริกา|เหนือ}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-เหฺนือ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q49}}{{place|th|<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง); ซึ่งอยู่ทางตะวันออกของ[[มหาสมุทรแปซิฟิก]] ทางตะวันตกของ[[มหาสมุทรแอตแลนติก]] ทางเหนือของ[[อเมริกาใต้]] และทางใต้ของ[[มหาสมุทรอาร์กติก]]|tcl=<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง)}}
e351fd9bc5doaa7hzpxspjrpom0a5ab
5720933
5720931
2026-04-22T04:32:33Z
OctraBot
3198
/* ภาษาไทย */
5720933
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:Location North America.svg|thumb|อเมริกาเหนือ]]
=== รากศัพท์ ===
{{calque|th|en|North America}}; {{surf|th|อเมริกา|เหนือ}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-เหฺนือ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q49}}{{place|th|<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง); ซึ่งอยู่ทางตะวันออกของ[[มหาสมุทรแปซิฟิก]] ทางตะวันตกของ[[มหาสมุทรแอตแลนติก]] ทางเหนือของ[[อเมริกาใต้]] และทางใต้ของ[[มหาสมุทรอาร์กติก]]|tcl=<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง)}}
b6i7aozpdk67zeqr8koqtk4r7vxkxcu
5720934
5720933
2026-04-22T04:34:43Z
OctraBot
3198
/* คำวิสามานยนาม */
5720934
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp|th:}}
[[ไฟล์:Location North America.svg|thumb|อเมริกาเหนือ]]
=== รากศัพท์ ===
{{calque|th|en|North America}}; {{surf|th|อเมริกา|เหนือ}}
=== การออกเสียง ===
{{th-pron|อะ-เม-ริ-กา-เหฺนือ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{senseid|th|Q49}} {{lang|th|(ทวีป~)}} {{place|th|<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง); ซึ่งอยู่ทางตะวันออกของ[[มหาสมุทรแปซิฟิก]] ทางตะวันตกของ[[มหาสมุทรแอตแลนติก]] ทางเหนือของ[[อเมริกาใต้]] และทางใต้ของ[[มหาสมุทรอาร์กติก]]|tcl=<<ทวีป>>ที่ประกอบเป็นส่วนเหนือของ[[อเมริกาส์]] (ทวีปทั้งสอง)}}
nkruzcgo7c2d1sqebaw2o89c4hygtln
ผู้ใช้:OctraBot/กระบะทราย
2
2330537
5720935
2026-04-22T09:05:08Z
OctraBot
3198
สร้างหน้าด้วย "==== คำแปลภาษาอื่น ==== {{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}} * Bengali: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}} * Bulgarian: {{t|bg|Централна Америка|f}} * Chinese: *: Mandarin: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|abbreviation}} {{t+|cmn|中美|tr=[[Zhōngměi]]}} * Czech: {{t+|cs|Střední Amerika|f}} * D..."
5720935
wikitext
text/x-wiki
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* Bengali: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* Bulgarian: {{t|bg|Централна Америка|f}}
* Chinese:
*: Mandarin: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|abbreviation}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* Czech: {{t+|cs|Střední Amerika|f}}
* Danish: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* Dutch: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* Finnish: {{t+|fi|Keski-Amerikka}}
* French: {{t+|fr|Amérique centrale|f}}
* Galician: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* Georgian: {{t+|ka|ცენტრალური ამერიკა}}
* German: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* Greek: {{t+|el|Κεντρική Αμερική|f}}
* Haitian Creole: {{t|ht|Amerik santral}}
* Hindi: {{t|hi|मध्य अमेरिका|m}}
* Hungarian: {{t+|hu|Közép-Amerika}}
* Irish: {{t|ga|Meiriceá Láir|m}}
* Italian: {{t|it|America centrale|f}}
* Japanese: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* Kazakh: {{t|kk|Орталық Америка}}
* Latin: {{t|la|America Centralis}}
* Latvian: {{t+|lv|Centrālamerika|f}}
* Lithuanian: {{t+|lt|Centrinė Amerika|f}}
* Macedonian: {{t|mk|Средна Америка|f}}
* Malay: {{t+|ms|Amerika Tengah}}
* Norwegian:
*: Bokmål: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: Nynorsk: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* Persian: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* Pipil: {{t|ppl|Shiktal}}
* Polish: {{t+|pl|Ameryka Centralna|f}}
* Portuguese: {{t+|pt|América Central|f}}
* Romanian: {{t|ro|America Centrală|f}}
* Russian: {{t+|ru|Центра́льная Аме́рика|f}}
* Serbo-Croatian: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* Spanish: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* Sranan Tongo: {{t|srn|Mindri-Amerika}}
* Swedish: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* Telugu: {{t|te|మధ్య అమెరికా}}
* Thai: {{t+|th|อเมริกากลาง}}
* Turkish: {{t+|tr|Orta Amerika}}
* Ukrainian: {{t|uk|Центра́льна Аме́рика|f}}
* Uyghur: {{t|ug|ئوتتۇرا ئامېرىكا}}
* Volapük: {{t+|vo|Zänoda-Merop}}
* Welsh: {{t+|cy|Canolbarth America|m}}
{{trans-bottom}}
qtc130trze436s7wrqudoxum9ynmvti
5720936
5720935
2026-04-22T09:05:32Z
OctraBot
3198
5720936
wikitext
text/x-wiki
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* Bengali: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* Bulgarian: {{t|bg|Централна Америка|f}}
* Chinese:
*: Mandarin: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|abbreviation}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* Czech: {{t+|cs|Střední Amerika|f}}
* Danish: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* Dutch: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* Finnish: {{t+|fi|Keski-Amerikka}}
* French: {{t+|fr|Amérique centrale|f}}
* Galician: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* Georgian: {{t+|ka|ცენტრალური ამერიკა}}
* German: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* Greek: {{t+|el|Κεντρική Αμερική|f}}
* Haitian Creole: {{t|ht|Amerik santral}}
* Hindi: {{t|hi|मध्य अमेरिका|m}}
* Hungarian: {{t+|hu|Közép-Amerika}}
* Irish: {{t|ga|Meiriceá Láir|m}}
* Italian: {{t|it|America centrale|f}}
* Japanese: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* Kazakh: {{t|kk|Орталық Америка}}
* Latin: {{t|la|America Centralis}}
* Latvian: {{t+|lv|Centrālamerika|f}}
* Lithuanian: {{t+|lt|Centrinė Amerika|f}}
* Macedonian: {{t|mk|Средна Америка|f}}
* Malay: {{t+|ms|Amerika Tengah}}
* Norwegian:
*: Bokmål: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: Nynorsk: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* Persian: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* Pipil: {{t|ppl|Shiktal}}
* Polish: {{t+|pl|Ameryka Centralna|f}}
* Portuguese: {{t+|pt|América Central|f}}
* Romanian: {{t|ro|America Centrală|f}}
* Russian: {{t+|ru|Центра́льная Аме́рика|f}}
* Serbo-Croatian: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* Spanish: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* Sranan Tongo: {{t|srn|Mindri-Amerika}}
* Swedish: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* Telugu: {{t|te|మధ్య అమెరికా}}
* English: {{t+|en|Central America}}
* Turkish: {{t+|tr|Orta Amerika}}
* Ukrainian: {{t|uk|Центра́льна Аме́рика|f}}
* Uyghur: {{t|ug|ئوتتۇرا ئامېرىكا}}
* Volapük: {{t+|vo|Zänoda-Merop}}
* Welsh: {{t+|cy|Canolbarth America|m}}
{{trans-bottom}}
q9jnlqxt43iwwfifbi1vwiqisjy9qiv
5720938
5720936
2026-04-22T09:07:37Z
OctraBot
3198
5720938
wikitext
text/x-wiki
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* {{#if:|เบงกอล|เบงกอล}}: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* {{#if:|บัลแกเรีย|บัลแกเรีย}}: {{t|bg|Централна Америка|f}}
* Chinese:
*: {{#if:|จีนกลาง|จีนกลาง}}: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|abbreviation}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* {{#if:|เช็ก|เช็ก}}: {{t+|cs|Střední Amerika|f}}
* {{#if:|เดนมาร์ก|เดนมาร์ก}}: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* {{#if:|ดัตช์|ดัตช์}}: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* {{#if:|ฟินแลนด์|ฟินแลนด์}}: {{t+|fi|Keski-Amerikka}}
* {{#if:|ฝรั่งเศส|ฝรั่งเศส}}: {{t+|fr|Amérique centrale|f}}
* {{#if:|กาลิเซีย|กาลิเซีย}}: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* {{#if:|จอร์เจีย|จอร์เจีย}}: {{t+|ka|ცენტრალური ამერიკა}}
* {{#if:|เยอรมัน|เยอรมัน}}: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* {{#if:|กรีก|กรีก}}: {{t+|el|Κεντρική Αμερική|f}}
* {{#if:|ครีโอลเฮติ|ครีโอลเฮติ}}: {{t|ht|Amerik santral}}
* {{#if:|ฮินดี|ฮินดี}}: {{t|hi|मध्य अमेरिका|m}}
* {{#if:|ฮังการี|ฮังการี}}: {{t+|hu|Közép-Amerika}}
* {{#if:|ไอริช|ไอริช}}: {{t|ga|Meiriceá Láir|m}}
* {{#if:|อิตาลี|อิตาลี}}: {{t|it|America centrale|f}}
* {{#if:|ญี่ปุ่น|ญี่ปุ่น}}: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* {{#if:|คาซัค|คาซัค}}: {{t|kk|Орталық Америка}}
* {{#if:|ละติน|ละติน}}: {{t|la|America Centralis}}
* {{#if:|ลัตเวีย|ลัตเวีย}}: {{t+|lv|Centrālamerika|f}}
* {{#if:|ลิทัวเนีย|ลิทัวเนีย}}: {{t+|lt|Centrinė Amerika|f}}
* {{#if:|มาซิโดเนีย|มาซิโดเนีย}}: {{t|mk|Средна Америка|f}}
* {{#if:|มาเลเซีย|มาเลเซีย}}: {{t+|ms|Amerika Tengah}}
* Norwegian:
*: {{#if:|นอร์เวย์แบบบุ๊กมอล|นอร์เวย์แบบบุ๊กมอล}}: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: {{#if:|นอร์เวย์แบบนือนอสก์|นอร์เวย์แบบนือนอสก์}}: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* {{#if:|เปอร์เซีย|เปอร์เซีย}}: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* {{#if:|ปีปิล|ปีปิล}}: {{t|ppl|Shiktal}}
* {{#if:|โปแลนด์|โปแลนด์}}: {{t+|pl|Ameryka Centralna|f}}
* {{#if:|โปรตุเกส|โปรตุเกส}}: {{t+|pt|América Central|f}}
* {{#if:|โรมาเนีย|โรมาเนีย}}: {{t|ro|America Centrală|f}}
* {{#if:|รัสเซีย|รัสเซีย}}: {{t+|ru|Центра́льная Аме́рика|f}}
* {{#if:|เซอร์โบ-โครเอเชีย|เซอร์โบ-โครเอเชีย}}: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* {{#if:|สเปน|สเปน}}: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* {{#if:|Sranan Tongo|Sranan Tongo}}: {{t|srn|Mindri-Amerika}}
* {{#if:|สวีเดน|สวีเดน}}: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* {{#if:|เตลูกู|เตลูกู}}: {{t|te|మధ్య అమెరికా}}
* {{#if:|อังกฤษ|อังกฤษ}}: {{t+|en|Central America}}
* {{#if:|ตุรกี|ตุรกี}}: {{t+|tr|Orta Amerika}}
* {{#if:|ยูเครน|ยูเครน}}: {{t|uk|Центра́льна Аме́рика|f}}
* {{#if:|อุยกูร์|อุยกูร์}}: {{t|ug|ئوتتۇرا ئامېرىكا}}
* {{#if:|โวลาปุก|โวลาปุก}}: {{t+|vo|Zänoda-Merop}}
* {{#if:|เวลส์|เวลส์}}: {{t+|cy|Canolbarth America|m}}
{{trans-bottom}}
1gstf69ayolztyg808s78axg1by5th8
5720939
5720938
2026-04-22T09:07:55Z
OctraBot
3198
5720939
wikitext
text/x-wiki
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* เบงกอล: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* บัลแกเรีย: {{t|bg|Централна Америка|f}}
* Chinese:
*: จีนกลาง: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|abbreviation}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* เช็ก: {{t+|cs|Střední Amerika|f}}
* เดนมาร์ก: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* ดัตช์: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* ฟินแลนด์: {{t+|fi|Keski-Amerikka}}
* ฝรั่งเศส: {{t+|fr|Amérique centrale|f}}
* กาลิเซีย: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* จอร์เจีย: {{t+|ka|ცენტრალური ამერიკა}}
* เยอรมัน: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* กรีก: {{t+|el|Κεντρική Αμερική|f}}
* ครีโอลเฮติ: {{t|ht|Amerik santral}}
* ฮินดี: {{t|hi|मध्य अमेरिका|m}}
* ฮังการี: {{t+|hu|Közép-Amerika}}
* ไอริช: {{t|ga|Meiriceá Láir|m}}
* อิตาลี: {{t|it|America centrale|f}}
* ญี่ปุ่น: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* คาซัค: {{t|kk|Орталық Америка}}
* ละติน: {{t|la|America Centralis}}
* ลัตเวีย: {{t+|lv|Centrālamerika|f}}
* ลิทัวเนีย: {{t+|lt|Centrinė Amerika|f}}
* มาซิโดเนีย: {{t|mk|Средна Америка|f}}
* มาเลเซีย: {{t+|ms|Amerika Tengah}}
* Norwegian:
*: นอร์เวย์แบบบุ๊กมอล: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: นอร์เวย์แบบนือนอสก์: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* เปอร์เซีย: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* ปีปิล: {{t|ppl|Shiktal}}
* โปแลนด์: {{t+|pl|Ameryka Centralna|f}}
* โปรตุเกส: {{t+|pt|América Central|f}}
* โรมาเนีย: {{t|ro|America Centrală|f}}
* รัสเซีย: {{t+|ru|Центра́льная Аме́рика|f}}
* เซอร์โบ-โครเอเชีย: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* สเปน: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* Sranan Tongo: {{t|srn|Mindri-Amerika}}
* สวีเดน: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* เตลูกู: {{t|te|మధ్య అమెరికా}}
* อังกฤษ: {{t+|en|Central America}}
* ตุรกี: {{t+|tr|Orta Amerika}}
* ยูเครน: {{t|uk|Центра́льна Аме́рика|f}}
* อุยกูร์: {{t|ug|ئوتتۇرا ئامېرىكا}}
* โวลาปุก: {{t+|vo|Zänoda-Merop}}
* เวลส์: {{t+|cy|Canolbarth America|m}}
{{trans-bottom}}
krkism03nas4xxluw21eq3kpzw48gqa
5720940
5720939
2026-04-22T09:09:31Z
OctraBot
3198
5720940
wikitext
text/x-wiki
==== คำแปลภาษาอื่น ====
{{trans-top|id=Q27611|ส่วนหนึ่งของอเมริกาเหนือ}}
* Sranan Tongo: {{t|srn|Mindri-Amerika}}
* กรีก: {{t+|el|Κεντρική Αμερική|f}}
* กาลิเซีย: {{t+|gl|América Central}}, {{t+|gl|Centroamérica}}
* ครีโอลเฮติ: {{t|ht|Amerik santral}}
* คาซัค: {{t|kk|Орталық Америка}}
* จอร์เจีย: {{t+|ka|ცენტრალური ამერიკა}}
* จีน:
*: จีนกลาง: {{t+|cmn|中美洲|tr=[[Zhōngměizhōu]]}}, {{qualifier|คำย่อ}} {{t+|cmn|中美|tr=[[Zhōngměi]]}}
* เช็ก: {{t+|cs|Střední Amerika|f}}
* เซอร์โบ-โครเอเชีย: {{t|sh|Središnja Amerika}}, {{t+|sh|Srednja Amerika}}
* ญี่ปุ่น: {{t+|ja|中央アメリカ|tr=ちゅうおうアメリカ, Chūō Amerika}}, {{t+|ja|中米|tr=ちゅうべい, Chūbei}}
* ดัตช์: {{t+|nl|Midden-Amerika}}, {{t+|nl|Centraal-Amerika}}
* เดนมาร์ก: {{t|da|Centralamerika}}, {{t+|da|Mellemamerika}}
* ตุรกี: {{t+|tr|Orta Amerika}}
* เตลูกู: {{t|te|మధ్య అమెరికా}}
* นอร์เวย์:
*: นอร์เวย์แบบบุ๊กมอล: {{t|nb|Mellom-Amerika}}, {{t|nb|Sentral-Amerika}}
*: นอร์เวย์แบบนือนอสก์: {{t|nn|Mellom-Amerika}}, {{t|nn|Sentral-Amerika}}
* บัลแกเรีย: {{t|bg|Централна Америка|f}}
* เบงกอล: {{t|bn|মধ্য মার্কিন|tr=môddhô markin}}
* ปีปิล: {{t|ppl|Shiktal}}
* เปอร์เซีย: {{t|fa|آمریکای مرکزی|tr=âmrikâ-ye markazi}}
* โปรตุเกส: {{t+|pt|América Central|f}}
* โปแลนด์: {{t+|pl|Ameryka Centralna|f}}
* ฝรั่งเศส: {{t+|fr|Amérique centrale|f}}
* ฟินแลนด์: {{t+|fi|Keski-Amerikka}}
* มาซิโดเนีย: {{t|mk|Средна Америка|f}}
* มาเลเซีย: {{t+|ms|Amerika Tengah}}
* ยูเครน: {{t|uk|Центра́льна Аме́рика|f}}
* เยอรมัน: {{t+|de|Mittelamerika|n}}, {{t+|de|Zentralamerika|n}}
* รัสเซีย: {{t+|ru|Центра́льная Аме́рика|f}}
* โรมาเนีย: {{t|ro|America Centrală|f}}
* ละติน: {{t|la|America Centralis}}
* ลัตเวีย: {{t+|lv|Centrālamerika|f}}
* ลิทัวเนีย: {{t+|lt|Centrinė Amerika|f}}
* เวลส์: {{t+|cy|Canolbarth America|m}}
* โวลาปุก: {{t+|vo|Zänoda-Merop}}
* สเปน: {{t+|es|América Central}}, {{t+|es|Centroamérica}}
* สวีเดน: {{t+|sv|Centralamerika|n}}, {{t+|sv|Mellanamerika|n}}
* อังกฤษ: {{t+|en|Central America}}
* อิตาลี: {{t|it|America centrale|f}}
* อุยกูร์: {{t|ug|ئوتتۇرا ئامېرىكا}}
* ไอริช: {{t|ga|Meiriceá Láir|m}}
* ฮังการี: {{t+|hu|Közép-Amerika}}
* ฮินดี: {{t|hi|मध्य अमेरिका|m}}
{{trans-bottom}}
oxtm8uli9f5nytee283y2mzp9b0iheu
5720943
5720940
2026-04-22T09:12:15Z
OctraBot
3198
/* คำแปลภาษาอื่น */
5720943
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Orta Amerika
0
2330538
5720942
2026-04-22T09:11:52Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษาตุรกี == === คำวิสามานยนาม === {{tr-proper noun}} # {{tcl|tr|อเมริกากลาง|id=Q27611}}"
5720942
wikitext
text/x-wiki
== ภาษาตุรกี ==
=== คำวิสามานยนาม ===
{{tr-proper noun}}
# {{tcl|tr|อเมริกากลาง|id=Q27611}}
thhkp1qigsux56tbd3zov9xsz6ohade
Amerika Tengah
0
2330539
5720944
2026-04-22T09:12:43Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษามาเลเซีย == === คำวิสามานยนาม === {{ms-proper noun}} # {{tcl|ms|อเมริกากลาง|id=Q27611}}"
5720944
wikitext
text/x-wiki
== ภาษามาเลเซีย ==
=== คำวิสามานยนาม ===
{{ms-proper noun}}
# {{tcl|ms|อเมริกากลาง|id=Q27611}}
hdhkrp0jej4bwcwyazgq7xjnqsqxkwr
Centrinė Amerika
0
2330540
5720945
2026-04-22T09:13:38Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษาลิทัวเนีย == === คำวิสามานยนาม === {{lt-proper noun}} # {{tcl|lt|อเมริกากลาง|id=Q27611}}"
5720945
wikitext
text/x-wiki
== ภาษาลิทัวเนีย ==
=== คำวิสามานยนาม ===
{{lt-proper noun}}
# {{tcl|lt|อเมริกากลาง|id=Q27611}}
1amtpk66vx4n96d92fhdrfd4j8dwlzn
คุยกับผู้ใช้:Promerits Formaciones Online
3
2330541
5720946
2026-04-22T10:53:27Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
5720946
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Promerits Formaciones Online}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 17:53, 22 เมษายน 2569 (+07)
1zxi2x6qv5ude9ohd0qgjqs2nnxpxnm
มอดูล:mk-headword
828
2330542
5720947
2026-04-22T11:25:06Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} local pos_functions = {} local lang = require("Module:languages").getByCode("mk") local langname = lang:getCategoryName() --th local umatch = mw.ustring.match local insert = table.insert local function make_stripped_text(head) return lang:stripDiacritics(require("Module:links").remove_links(head)) end local function glossary_link(entry, text) text = text or entry return "[[ภาคผนวก:อภิธานศัพท..."
5720947
Scribunto
text/plain
local export = {}
local pos_functions = {}
local lang = require("Module:languages").getByCode("mk")
local langname = lang:getCategoryName() --th
local umatch = mw.ustring.match
local insert = table.insert
local function make_stripped_text(head)
return lang:stripDiacritics(require("Module:links").remove_links(head))
end
local function glossary_link(entry, text)
text = text or entry
return "[[ภาคผนวก:อภิธานศัพท์#" .. entry .. "|" .. text .. "]]"
end
local function track(page)
require("Module:debug").track("mk-headword/" .. page)
return true
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local NAMESPACE = mw.title.getCurrentTitle().nsText
local tracking_categories = {}
local iparams = {
[1] = {required = true},
["def"] = true,
["suff_type"] = true,
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local args = frame:getParent().args
local poscat = iargs[1]
-- หมวดหมู่เป็นภาษาไทย
local poscat_th = require("Module:th-utilities").th_pos(poscat)
local def = iargs.def
local suff_type = iargs.suff_type
local postype = nil
if suff_type then
postype = 'รูป' .. poscat_th .. 'เป็น' .. suff_type
else
postype = poscat_th
end
local data = {lang = lang, categories = {}, heads = {}, genders = {}, inflections = {}}
if poscat_th == "ปัจจัย" then
insert(data.categories, "ปัจจัยสร้าง" .. suff_type .. langname)
end
if pos_functions[postype] then
local new_poscat = pos_functions[postype](postype, def, args, data)
if new_poscat then
poscat_th = new_poscat
end
end
for _, head in ipairs(data.heads) do
if umatch(head, "[́̀ѐѝ]") then
track("accents")
end
end
if not poscat_th:match("^รูป") then
for _, head in ipairs(data.heads) do
-- Don't trigger on prefixes, suffixes or reflexive verbs.
if (head:find(" ", nil, true) or head:match(".%-.")) and not head:match("^се [^ ]+$") then
insert(data.categories, "multiword terms" .. langname)
break
end
end
end
for _, inflection_set in ipairs(data.inflections) do
local outerbreak = false
for _, inflection in ipairs(inflection_set) do
local title = mw.title.new(lang:logicalToPhysical(make_stripped_text(inflecction)))
if title and not title:getContent() then
insert(tracking_categories, poscat_th .. langname .. "ที่มีลิงก์แดงในบรรทัดคำหลัก")
outerbreak = true
break
end
end
if outerbreak then
break
end
end
data.pos_category = poscat_th
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["คำกริยา"] = function(postype, def, args, data)
local list = {list = true}
local params = {
["head"] = list,
[1] = true,
["pf"] = list,
["impf"] = list,
["dim"] = list,
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
local cats = {}
data.heads = args.head
data.id = args.id
if args[1] == "pf" then
data.genders = {"pf"}
cats = {"คำกริยาperfective"}
elseif args[1] == "impf" then
data.genders = {"impf"}
cats = {"คำกริยาimperfective"}
elseif args[1] == "both" then
data.genders = {"impf", "pf"}
cats = {"คำกริยาbiaspectual", "คำกริยาimperfective", "คำกริยาperfective"}
elseif args[1] == "?" or not args[1] then
data.genders = {"?"}
else
error("Unrecognized aspect '" .. args[1] .. "'")
end
for _, cat in ipairs(cats) do
insert(data.categories, cat .. "ภาษามาซิโดเนีย")
end
local pf = args.pf
if #pf == 1 and pf[1] == "-" then
insert(data.inflections, {label = "ไม่มีperfective"})
elseif #pf > 0 then
pf.label = "perfective"
insert(data.inflections, pf)
end
local impf = args.impf
if #impf == 1 and impf[1] == "-" then
insert(data.inflections, {label = "ไม่มีimperfective"})
elseif #impf > 0 then
impf.label = "imperfective"
insert(data.inflections, impf)
end
local dim = args.dim
if #dim == 1 and dim[0] == "-" then
insert(data.inflections, {label = "ไม่มีตัวบอกความเล็ก"})
elseif #dim > 0 then
dim.label = "ตัวบอกความเล็ก"
insert(data.inflections, dim)
end
data.gloss = "บุรุษที่สามเอกพจน์ปัจจุบันกาล"
end
local function nouns(pos, def, args, data)
local list = {list = true}
local params = {
["head"] = list,
[1] = {list = "g"},
[2] = {list = "pl"},
[3] = {alias_of = "dim", list = false},
["dim"] = list,
["m"] = list,
["f"] = list,
["adj"] = list,
["aug"] = list,
["voc"] = list,
["indecl"] = {type = "boolean"},
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
local genders = {}
local cat2 = nil
for _, g in ipairs(args[1]) do
if g == "m" or g == "m-p" then
cat2 = "คำนามเพศชายภาษามาซิโดเนีย"
elseif g == "f" or g == "f-p" then
cat2 = "คำนามเพศหญิงภาษามาซิโดเนีย"
elseif g == "n" or g == "n-p" then
cat2 = "คำนามเพศกลางภาษามาซิโดเนีย"
elseif g ~= "p" and g ~= "?" then
error("Unrecognized gender: '" .. g .. "'")
end
if g == "m-p" or g == "f-p" or g == "n-p" or g == "p" then
insert(data.categories, "คำนามพหูพจน์เท่านั้นภาษามาซิโดเนีย")
end
insert(genders, g)
end
if #genders == 0 then
genders = {"?"}
end
if cat2 then
insert(data.categories, cat2)
end
if #genders > 1 then
insert(data.categories, "คำนามภาษามาซิโดเนียที่มีหลายเพศ")
end
data.genders = genders
if args.indecl then
insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")})
insert(data.categories, "คำนามผันรูปไม่ไดภาษามาซิโดเนีย")
end
local pl = args[2]
if #pl == 1 and pl[1] == "-" then
insert(data.inflections, {label = glossary_link("นับไม่ได้")})
insert(data.categories, "คำนามเอกพจน์เท่านั้นภาษามาซิโดเนีย")
elseif #pl > 0 then
pl.label = "พหูพจน์"
pl.accel = {form = "indef|pl|;|voc|pl"}
insert(data.inflections, pl)
end
local m = args.m
if #m > 0 then
m.label = "เพศชาย"
insert(data.inflections, m)
end
local f = args.f
if #f > 0 then
f.label = "เพศหญิง"
insert(data.inflections, f)
end
local adj = args.adj
if #adj > 0 then
adj.label = "คำคุณศัพท์สัมพันธ์"
insert(data.inflections, adj)
end
local dim = args.dim
if #dim == 1 and dim[0] == "-" then
insert(data.inflections, {label = "ไม่มีตัวบอกความเล็ก"})
elseif #dim > 0 then
dim.label = "ตัวบอกความเล็ก"
insert(data.inflections, dim)
end
local aug = args.aug
if #aug == 1 and aug[0] == "-" then
insert(data.inflections, {label = "ไม่มีตัวบอกความใหญ่"})
elseif #aug > 0 then
aug.label = "ตัวบอกความใหญ่"
aug.accel = {form = "augmentative"}
insert(data.inflections, aug)
end
local voc = args.voc
if #voc == 1 and voc[0] == "-" then
insert(data.inflections, {label = "ไม่มีสัมโพธนการก"})
elseif #voc > 0 then
voc.label = "สัมโพธนการก"
insert(data.inflections, voc)
end
data.id = args.id
end
pos_functions["คำนาม"] = nouns
pos_functions["คำวิสามานยนาม"] = nouns
local function adverbs(pos, def, args, data)
local params = {
["head"] = {list = true},
[1] = {list = "comp"},
[2] = {list = "sup"},
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
local comp = args[1]
if comp[1] == "-" then
insert(data.inflections, {label = glossary_link("เปรียบเทียบไม่ได้")})
else
local head
if #data.heads > 0 then
head = make_stripped_text(data.heads[1])
else
head = mw.loadData("Module:headword/data").pagename
end
if #comp == 0 then
comp = {"по" .. head}
end
comp.label = "ขั้นกว่า"
comp.accel = {form = "comparative"}
insert(data.inflections, comp)
local sup = args[2]
if #sup == 0 then
sup = {"нај" .. head}
end
sup.label = "ขั้นสุด"
sup.accel = {form = "superlative"}
insert(data.inflections, sup)
end
data.id = args.id
end
pos_functions["คำกริยาวิเศษณ์"] = adverbs
local function adjectives(pos, def, args, data)
local list = {list = true}
local params = {
["head"] = list,
[1] = {list = "comp"},
[2] = {list = "sup"},
["indecl"] = {type = "boolean"},
["dim"] = list,
["adv"] = list,
["absn"] = list,
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
if args.indecl then
insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")})
insert(data.categories, "คำคุณศัพท์ผันรูปไม่ไดภาษามาซิโดเนีย")
end
local comp = args[1]
if comp[1] == "-" then
insert(data.inflections, {label = glossary_link("เปรียบเทียบไม่ได้")})
else
local head
if #data.heads > 0 then
head = make_stripped_text(data.heads[1])
else
head = mw.loadData("Module:headword/data").pagename
end
if #comp == 0 then
comp = {"по" .. head}
end
comp.label = "ขั้นกว่า"
comp.accel = {form = "indef|m|sg|comd"}
insert(data.inflections, comp)
local sup = args[2]
if #sup == 0 then
sup = {"нај" .. head}
end
sup.label = "ขั้นสุด"
sup.accel = {form = "indef|m|sg|supd"}
insert(data.inflections, sup)
end
local dim = args.dim
if #dim > 0 then
dim.label = "ตัวบอกความเล็ก"
insert(data.inflections, dim)
end
local adv = args.adv
if #adv > 0 then
adv.label = "คำกริยาวิเศษณ์"
adv.accel = {form = "adverb"}
insert(data.inflections, adv)
end
local absn = args.absn
if #absn > 0 then
absn.label = "คำอาการนาม"
insert(data.inflections, absn)
end
data.id = args.id
end
pos_functions["คำคุณศัพท์"] = adjectives
pos_functions["ตัวกำหนด"] = adjectives
pos_functions["คำสรรพนาม"] = adjectives
pos_functions["suffixes-adjective"] = function(postype, def, args, data)
return adjectives("ปัจจัย", def, args, data)
end
pos_functions["numerals-adjective"] = function(postype, def, args, data)
return adjectives("เลข", def, args, data)
end
pos_functions["รูปกริยาขยาย"] = function(pos, def, args, data)
local params = {
["head"] = {list = true},
[1] = {required = true, list = true, default = "aor"},
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
data.id = args.id
insert(data.categories, "รูปกริยาภาษามาซิโดเนีย")
for _, part in ipairs(args[1]) do
if part == "adv" then
insert(data.categories, "รูปกริยาขยายเชิงกริยาวิเศษณภาษามาซิโดเนีย")
elseif part == "aor" then
insert(data.categories, "รูปกริยาขยายaoristกรรตุวาจกอดีตกาลภาษามาซิโดเนีย")
elseif part == "impf" then
insert(data.categories, "รูปกริยาขยายimperfectกรรตุวาจกอดีตกาลภาษามาซิโดเนีย")
elseif part == "pres" then
insert(data.categories, "รูปกริยาขยายกรรตุวาจกปัจจุบันกาลภาษามาซิโดเนีย")
elseif part == "pass" or part == "ppp" then
insert(data.categories, "รูปกริยาขยายกรรมวาจกอดีตกาลภาษามาซิโดเนีย")
elseif part == "prespass" then
insert(data.categories, "รูปกริยาขยายกรรมวาจกปัจจุบันกาลภาษามาซิโดเนีย")
else
error("Unrecognized participle type '" .. part .. "': Should be adv, aor, impf, pres, pass or prespass")
end
end
end
pos_functions["วลี"] = function(postype, def, args, data)
local params = {
["head"] = {list = true, default = def},
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
data.id = args.id
end
local function non_lemma_forms(postype, def, args, data)
local params = {
["head"] = {list = true, default = def},
["g"] = {list = true},
["id"] = true,
}
local args = require("Module:parameters").process(args, params)
data.heads = args.head
data.genders = args.g
data.id = args.id
if postype == "รูปผันรูปกริยาขยาย" or postype == "คำกริยานาม" then
insert(data.categories, "รูปกริยาภาษามาซิโดเนีย")
elseif postype == "รูปกริยานาม" then
insert(data.categories, "รูปกริยาภาษามาซิโดเนีย")
return "รูปนาม"
end
end
pos_functions["รูปนาม"] = non_lemma_forms
pos_functions["รูปวิสามานยนาม"] = non_lemma_forms
pos_functions["รูปสรรพนาม"] = non_lemma_forms
pos_functions["รูปกริยา"] = non_lemma_forms
pos_functions["คำกริยานาม"] = non_lemma_forms
pos_functions["รูปกริยานาม"] = non_lemma_forms
pos_functions["รูปคุณศัพท์"] = non_lemma_forms
pos_functions["รูปผันรูปกริยาขยาย"] = non_lemma_forms
pos_functions["รูปตัวกำหนด"] = non_lemma_forms
pos_functions["รูปเลข"] = non_lemma_forms
pos_functions["รูปปัจจัย"] = non_lemma_forms
return export
osvd2fcebzqz0uoel5t8qu8m63y2abw
หมวดหมู่:คำวิสามานยนามภาษามาซิโดเนีย
14
2330543
5720948
2026-04-22T11:29:57Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720948
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:คำกริยาวิเศษณ์ภาษามาซิโดเนีย
14
2330544
5720949
2026-04-22T11:30:10Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720949
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:คำคุณศัพท์ภาษามาซิโดเนีย
14
2330545
5720950
2026-04-22T11:30:17Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720950
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:คำคุณศัพท์ภาษาบัลแกเรีย
14
2330546
5720951
2026-04-22T11:30:20Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720951
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:คำนามเอกพจน์เท่านั้นภาษามาซิโดเนีย
14
2330547
5720956
2026-04-22T11:41:12Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720956
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาบัลแกเรียที่ยืมมาจากภาษาละติน
14
2330548
5720957
2026-04-22T11:41:15Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720957
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาบัลแกเรียที่รับมาจากภาษากรีกโบราณ
14
2330549
5720958
2026-04-22T11:41:17Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720958
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:kk:ฟิสิกส์
14
2330550
5720959
2026-04-22T11:41:20Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720959
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:bg:ฟิสิกส์
14
2330551
5720960
2026-04-22T11:41:21Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720960
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:uk:ดาราศาสตร์
14
2330552
5720961
2026-04-22T11:41:53Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720961
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:kk:ดาราศาสตร์
14
2330553
5720962
2026-04-22T11:41:55Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720962
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:sh:ดาราศาสตร์
14
2330554
5720963
2026-04-22T11:41:57Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720963
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:ดาราศาสตร์
14
2330555
5720964
2026-04-22T11:42:07Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720964
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:โลหะ
14
2330556
5720965
2026-04-22T11:43:06Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720965
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาคาซัคที่รับมาจากภาษาอิตาลี
14
2330557
5720966
2026-04-22T11:43:20Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720966
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษามาซิโดเนียที่รับมาจากภาษาอังกฤษ
14
2330558
5720967
2026-04-22T11:44:10Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720967
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษามาซิโดเนียที่ยืมมาจากภาษาอังกฤษ
14
2330559
5720968
2026-04-22T11:44:11Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720968
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาบัลแกเรียที่ยืมมาจากภาษากรีกโบราณ
14
2330560
5720969
2026-04-22T11:44:13Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720969
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:รูปคุณศัพท์ภาษายูเครน
14
2330561
5720970
2026-04-22T11:44:27Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720970
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ru:สัตววิทยา
14
2330562
5720971
2026-04-22T11:44:31Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720971
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:กายวิภาคศาสตร์
14
2330563
5720972
2026-04-22T11:44:39Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720972
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:ไข่
14
2330564
5720973
2026-04-22T11:44:41Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720973
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:ธรณีสัณฐาน
14
2330565
5720974
2026-04-22T11:44:55Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720974
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:rsk:ธรณีสัณฐาน
14
2330566
5720975
2026-04-22T11:44:58Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720975
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษามาซิโดเนียที่รับมาจากภาษาเตอร์กิกดั้งเดิม
14
2330567
5720976
2026-04-22T11:45:26Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720976
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:bg:ธรณีสัณฐาน
14
2330568
5720977
2026-04-22T11:45:43Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720977
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษามาซิโดเนียที่รับมาจากภาษานาวัตล์
14
2330569
5720978
2026-04-22T11:45:49Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720978
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาเซอร์โบ-โครเอเชียที่รับมาจากภาษาเยอรมันสูงกลาง
14
2330570
5720979
2026-04-22T11:46:39Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720979
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:uk:เครื่องหมายวรรคตอน (หัวข้อ)
14
2330571
5720980
2026-04-22T11:47:13Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720980
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
5721002
5720980
2026-04-22T11:53:15Z
OctraBot
3198
OctraBot ย้ายหน้า [[หมวดหมู่:uk:เครื่องหมายวรรคตอน]] ไปยัง [[หมวดหมู่:uk:เครื่องหมายวรรคตอน (หัวข้อ)]] โดยไม่สร้างหน้าเปลี่ยนทางตามมา
5720980
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:bg:เครื่องหมายวรรคตอน (หัวข้อ)
14
2330572
5720981
2026-04-22T11:47:18Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720981
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
5720986
5720981
2026-04-22T11:48:38Z
OctraBot
3198
OctraBot ย้ายหน้า [[หมวดหมู่:bg:เครื่องหมายวรรคตอน]] ไปยัง [[หมวดหมู่:bg:เครื่องหมายวรรคตอน (หัวข้อ)]] โดยไม่สร้างหน้าเปลี่ยนทางตามมา
5720981
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:bg:คณิตศาสตร์
14
2330573
5720982
2026-04-22T11:47:20Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720982
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:เครื่องหมายวรรคตอน (หัวข้อ)
14
2330574
5720983
2026-04-22T11:47:22Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720983
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
5720987
5720983
2026-04-22T11:48:44Z
OctraBot
3198
OctraBot ย้ายหน้า [[หมวดหมู่:mk:เครื่องหมายวรรคตอน]] ไปยัง [[หมวดหมู่:mk:เครื่องหมายวรรคตอน (หัวข้อ)]] โดยไม่สร้างหน้าเปลี่ยนทางตามมา
5720983
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ru:เครื่องหมายวรรคตอน (หัวข้อ)
14
2330575
5720984
2026-04-22T11:47:28Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720984
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
5720985
5720984
2026-04-22T11:47:50Z
OctraBot
3198
OctraBot ย้ายหน้า [[หมวดหมู่:ru:เครื่องหมายวรรคตอน]] ไปยัง [[หมวดหมู่:ru:เครื่องหมายวรรคตอน (หัวข้อ)]] โดยไม่สร้างหน้าเปลี่ยนทางตามมา
5720984
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาเซอร์โบ-โครเอเชียที่รับมาจากภาษาสเปน
14
2330576
5720988
2026-04-22T11:48:57Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720988
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาเซอร์โบ-โครเอเชียที่รับมาจากภาษาโปรตุเกส
14
2330577
5720989
2026-04-22T11:48:59Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720989
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษามาซิโดเนียที่รับมาจากภาษาอาหรับ
14
2330578
5720990
2026-04-22T11:49:02Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720990
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:ไวยากรณ์
14
2330579
5720994
2026-04-22T11:51:05Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720994
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ru:การก
14
2330580
5720996
2026-04-22T11:52:00Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720996
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:mk:การก
14
2330581
5720997
2026-04-22T11:52:01Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720997
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:sh:การก
14
2330582
5720998
2026-04-22T11:52:03Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720998
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:uk:การก
14
2330583
5720999
2026-04-22T11:52:40Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5720999
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:uk:ภาษาศาสตร์
14
2330584
5721000
2026-04-22T11:52:41Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5721000
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:uk:ไวยากรณ์
14
2330585
5721001
2026-04-22T11:52:42Z
OctraBot
3198
สร้างหมวดหมู่อัตโนมัติ
5721001
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx