Wiktionary viwiktionary https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh MediaWiki 1.47.0-wmf.11 case-sensitive Phương tiện Đặc biệt Thảo luận Thành viên Thảo luận Thành viên Wiktionary Thảo luận Wiktionary Tập tin Thảo luận Tập tin MediaWiki Thảo luận MediaWiki Bản mẫu Thảo luận Bản mẫu Trợ giúp Thảo luận Trợ giúp Thể loại Thảo luận Thể loại Phụ lục Thảo luận Phụ lục TimedText TimedText talk Mô đun Thảo luận Mô đun Event Event talk Bản mẫu:-name- 10 2109 2463560 2463402 2026-07-19T15:40:04Z Kateru Zakuro 34522 2463560 wikitext text/x-wiki {{-pr-noun-}}{{#ifeq:{{NAMESPACE}}||[[Thể loại:Tên]]}}<noinclude>{{Tài liệu đề mục|2}}</noinclude> jnsn8j1117u9ey86qcwn9dmladf63im 2463596 2463560 2026-07-19T16:18:06Z Kateru Zakuro 34522 2463596 wikitext text/x-wiki {{-pr-noun-}}{{#ifeq:{{NAMESPACE}}||[[Thể loại:Tên gọi]]}}<noinclude>{{Tài liệu đề mục|2}}</noinclude> 4cnosluivz4rdcsjov5daa714724yg9 2463645 2463596 2026-07-19T22:17:49Z Kateru Zakuro 34522 2463645 wikitext text/x-wiki {{-pr-noun-}}<!--{{#ifeq:{{NAMESPACE}}||[[Thể loại:Tên]]}}--><noinclude>{{Tài liệu đề mục|2}}</noinclude> 305zvnat6l1ej1wlkmoy0hg68822ypj 2463647 2463645 2026-07-19T22:25:01Z Kateru Zakuro 34522 2463647 wikitext text/x-wiki {{-pr-noun-}}{{#ifeq:{{NAMESPACE}}||[[Thể loại:Tên]]}}<noinclude>{{Tài liệu đề mục|2}}</noinclude> jnsn8j1117u9ey86qcwn9dmladf63im ma cà rồng 0 3492 2463498 2152960 2026-07-19T12:38:33Z TheHighFighter2 42988 2463498 wikitext text/x-wiki =={{langname|vi}}== {{-info-}} ==={{ĐM|etym}}=== Từ {{af|vi|ma|alt2=cà rồng}}, {{unk|vi|nocap=y}} từ nguyên của yếu tố thứ hai. Được chứng thực trong các sách ''{{w|Kiến văn tiểu lục}}'' ({{w|Lê Quý Đôn}}), ''{{w|Thoái thực ký văn}}'' ({{w|Trương Quốc Dụng}}) và ''{{w|Hưng Hóa kỷ lược}}'' ({{w|Phạm Thận Duật}}) dưới dạng {{mention|vi|chữ Nôm}} là {{mention|vi|cà rồng quỷ}} ({{mention|vi|茄蠬鬼}}), {{mention|vi|kì lằng quỷ}} ({{mention|vi|奇䗀鬼}}), {{mention|vi|càn sùng quỷ}} ({{mention|vi|乾崇鬼}}). ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun|head=[[ma]] cà rồng}} # {{lb|vi|folklore|mythological creature}} {{syn of|vi|ma cà lồ}}. # {{lb|vi|by extension|mythological creature|_|phương Tây}} [[sinh vật|Sinh vật]] [[huyền thoại]] (thường có hình dạng giống người và [[bất tử]]) được cho là tồn tại nhờ việc hút máu hay [[sinh lực]] của sinh vật sống. #: {{ux|vi|Abraham Lincoln, thợ săn '''ma cà rồng'''.}} ===={{ĐM|trans}}==== {{trans-top|Sinh vật huyền thoại}} * {{langname|en}}: {{t+|en|vampire}} {{trans-bottom}} ==={{ĐM|ref}}=== * {{R:Lê Văn Đức 1970|page=873}} {{C|vi|Nhân vật kiểu mẫu}} 070jwy0k0uyo54ei1xjx7v2l1nb6chw 2463644 2463498 2026-07-19T19:22:53Z TheHighFighter2 42988 /* Danh từ */ 2463644 wikitext text/x-wiki =={{langname|vi}}== {{-info-}} ==={{ĐM|etym}}=== Từ {{af|vi|ma|alt2=cà rồng}}, {{unk|vi|nocap=y}} từ nguyên của yếu tố thứ hai. Được chứng thực trong các sách ''{{w|Kiến văn tiểu lục}}'' ({{w|Lê Quý Đôn}}), ''{{w|Thoái thực ký văn}}'' ({{w|Trương Quốc Dụng}}) và ''{{w|Hưng Hóa kỷ lược}}'' ({{w|Phạm Thận Duật}}) dưới dạng {{mention|vi|chữ Nôm}} là {{mention|vi|cà rồng quỷ}} ({{mention|vi|茄蠬鬼}}), {{mention|vi|kì lằng quỷ}} ({{mention|vi|奇䗀鬼}}), {{mention|vi|càn sùng quỷ}} ({{mention|vi|乾崇鬼}}). ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun|head=[[ma]] cà rồng}} # {{lb|vi|folklore|mythological creature}} {{syn of|vi|ma cà lồ}}. # {{lb|vi|by extension|mythological creature|_|phương Tây}} [[sinh vật|Sinh vật]] [[huyền thoại]] (thường có hình dạng giống người và [[bất tử]]) được cho là tồn tại nhờ việc hút [[máu]] hay [[sinh lực]] của sinh vật sống. #: {{ux|vi|Abraham Lincoln, thợ săn '''ma cà rồng'''.}} ===={{ĐM|trans}}==== {{trans-top|Sinh vật huyền thoại}} * {{langname|en}}: {{t+|en|vampire}} {{trans-bottom}} ==={{ĐM|ref}}=== * {{R:Lê Văn Đức 1970|page=873}} {{C|vi|Nhân vật kiểu mẫu}} gxvob521e045znn38mmep9ye45fvkgp 0 83969 2463590 1788609 2026-07-19T16:13:16Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463590 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-paro-}} {{đầu}} :* [[vỏ]] :* [[vó]] :* [[vơ]] :* [[vỡ]] :* [[vợ]] {{giữa}} :* [[võ]] :* [[Võ]] :* [[vỗ]] :* [[vờ]] :* [[vớ]] {{cuối}} {{-name-}} '''Võ''' # Họ [[Võ]]. # Tên [[Võ]]. # Tên lót [[Võ]] {{-noun-}} '''Võ''' # [[mỏm|Mỏm]] [[núi]] đá hình cái [[cửa]] có [[sóng]] [[dữ]], [[tục truyền]] hàng năm vào [[tiết]] [[tháng ba]], [[cá chép]] khắp nơi [[kéo]] về [[vượt]] [[Vũ Môn]], con nào [[nhảy]] qua được thì [[hoá rồng]]. [[nhân|Nhân]] đó, cửa [[Vũ]] chỉ [[trường thi]], và [[thi]] [[đỗ]] gọi [[vượt qua]] [[Vũ Môn]]. {{-syn-}} * [[Vũ Môn]] {{-drv-}} * [[vượt qua Vũ Môn]] {{-trans-}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ riêng tiếng Việt]] {{C|vi|Tên}} 21dr330yy4lgoao4njky3qmq56k333v 2463595 2463590 2026-07-19T16:17:40Z BlueShurikenNinjaBot 50371 /* top */ clean up, replaced: {{C|vi|Tên}} → [[Thể loại:Tên gọi tiếng Việt]] 2463595 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-paro-}} {{đầu}} :* [[vỏ]] :* [[vó]] :* [[vơ]] :* [[vỡ]] :* [[vợ]] {{giữa}} :* [[võ]] :* [[Võ]] :* [[vỗ]] :* [[vờ]] :* [[vớ]] {{cuối}} {{-name-}} '''Võ''' # Họ [[Võ]]. # Tên [[Võ]]. # Tên lót [[Võ]] {{-noun-}} '''Võ''' # [[mỏm|Mỏm]] [[núi]] đá hình cái [[cửa]] có [[sóng]] [[dữ]], [[tục truyền]] hàng năm vào [[tiết]] [[tháng ba]], [[cá chép]] khắp nơi [[kéo]] về [[vượt]] [[Vũ Môn]], con nào [[nhảy]] qua được thì [[hoá rồng]]. [[nhân|Nhân]] đó, cửa [[Vũ]] chỉ [[trường thi]], và [[thi]] [[đỗ]] gọi [[vượt qua]] [[Vũ Môn]]. {{-syn-}} * [[Vũ Môn]] {{-drv-}} * [[vượt qua Vũ Môn]] {{-trans-}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên gọi tiếng Việt]] {{C|vi|Tên}} ik24c4vwi18edxn2jhxgwdsnagil3bg 2463617 2463595 2026-07-19T16:31:00Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463617 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-paro-}} {{đầu}} :* [[vỏ]] :* [[vó]] :* [[vơ]] :* [[vỡ]] :* [[vợ]] {{giữa}} :* [[võ]] :* [[Võ]] :* [[vỗ]] :* [[vờ]] :* [[vớ]] {{cuối}} {{-name-}} '''Võ''' # Họ [[Võ]]. # Tên [[Võ]]. # Tên lót [[Võ]] {{-noun-}} '''Võ''' # [[mỏm|Mỏm]] [[núi]] đá hình cái [[cửa]] có [[sóng]] [[dữ]], [[tục truyền]] hàng năm vào [[tiết]] [[tháng ba]], [[cá chép]] khắp nơi [[kéo]] về [[vượt]] [[Vũ Môn]], con nào [[nhảy]] qua được thì [[hoá rồng]]. [[nhân|Nhân]] đó, cửa [[Vũ]] chỉ [[trường thi]], và [[thi]] [[đỗ]] gọi [[vượt qua]] [[Vũ Môn]]. {{-syn-}} * [[Vũ Môn]] {{-drv-}} * [[vượt qua Vũ Môn]] {{-trans-}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên gọi tiếng Việt]] i5fp1q6vqqb0atdf3n5w3szloo8wacz 2463692 2463617 2026-07-20T02:06:57Z Hiyuune 50834 2463692 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "vo"}} =={{langname|vi}}== ==={{section|etym}}=== {{vi-etym-sino|武}}, thường đọc là {{mention|vi|Vũ}}. ==={{section|pron}}=== {{vi-pron}} * {{hmp|vi|võ|vỏ|giỏ}} ==={{section|pr-noun}}=== {{vi-propn|head=[[võ|Võ]]}} # {{surname|vi|from=tiếng Trung Quốc}} ==={{section|n}}=== {{vi-noun|head=[[võ|Võ]]}} # [[mỏm|Mỏm]] [[núi]] đá hình cái [[cửa]] có [[sóng]] [[dữ]], [[tục truyền]] hàng năm vào [[tiết]] [[tháng ba]], [[cá chép]] khắp nơi [[kéo]] về [[vượt]] [[Vũ Môn]], con nào [[nhảy]] qua được thì [[hoá rồng]]. [[nhân|Nhân]] đó, cửa [[Vũ]] chỉ [[trường thi]], và [[thi]] [[đỗ]] gọi [[vượt qua]] [[Vũ Môn]]. ==={{section|see}}=== * {{vi-l|Vũ}} ==={{section|ref}}=== * {{R:FVDP}} 4cq0o3y844z4dd17w37ux5vhg794pzi Thể loại:Địa danh 14 90300 2463568 2259067 2026-07-19T15:51:11Z Kateru Zakuro 34522 đã dời [[Thể loại:Tên]] dùng [[w:WP:HOTCAT|HotCat]] 2463568 wikitext text/x-wiki {{auto cat}} [[Thể loại:Danh sách chủ đề thuộc nhóm tên gọi]] 0mv8wriss5z3f3zhp4617fwf5de4m1a 2463641 2463568 2026-07-19T18:27:30Z Kateru Zakuro 34522 2463641 wikitext text/x-wiki {{auto cat}} [[Thể loại:Tên]] [[Thể loại:Danh sách chủ đề thuộc nhóm tên gọi]] 9n2u9u21yc3oweksprluxgcgrf86fak 2463642 2463641 2026-07-19T18:28:10Z Kateru Zakuro 34522 2463642 wikitext text/x-wiki {{auto cat}} [[Thể loại:Danh sách chủ đề thuộc nhóm tên gọi]] 0mv8wriss5z3f3zhp4617fwf5de4m1a Goliath 0 100545 2463609 2369136 2026-07-19T16:22:25Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463609 wikitext text/x-wiki {{-eng-}} [[Tập tin:Osmar Schindler David und Goliath.jpg|nhỏ|phải|Goliath]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/ɡə.ˈlɑɪ.əθ/}} {{-name-}} {{eng-pr-noun}} # {{context|tôn giáo}} [[Go-li-át]], [[người]] [[khổng lồ]] [[thua]] [[Đa-vịt]] trong [[Cựu Ước]]. {{-noun-}} {{eng-noun}} # {{context|bóng}} [[người|Người]] [[khổng lồ]]. # [[cần trục|Cần trục]] [[khổng lồ]]. {{-syn-}} ; cần trục khổng lồ * [[goliath crane]] {{-ref-}} {{R:FVDP}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Danh từ tiếng Anh]] {{C|vi|Tên}} 4tutpop00tnhz6edo24dr6p5azar0w2 2463622 2463609 2026-07-19T16:32:01Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463622 wikitext text/x-wiki {{-eng-}} [[Tập tin:Osmar Schindler David und Goliath.jpg|nhỏ|phải|Goliath]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/ɡə.ˈlɑɪ.əθ/}} {{-name-}} {{eng-pr-noun}} # {{context|tôn giáo}} [[Go-li-át]], [[người]] [[khổng lồ]] [[thua]] [[Đa-vịt]] trong [[Cựu Ước]]. {{-noun-}} {{eng-noun}} # {{context|bóng}} [[người|Người]] [[khổng lồ]]. # [[cần trục|Cần trục]] [[khổng lồ]]. {{-syn-}} ; cần trục khổng lồ * [[goliath crane]] {{-ref-}} {{R:FVDP}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Danh từ tiếng Anh]] trlg8qmg4vgpe3bvfvtyhd41gz21dko duck 0 101889 2463729 2287148 2026-07-20T08:15:22Z Hiyuune 50834 2463729 wikitext text/x-wiki {{also|Duck}} =={{langname|en}}== ==={{section|pron}}=== * {{enPR|dŭk}}, {{IPA4|en|/dʌk/}} ** {{audio|en|en-us-duck.ogg|a=US}} ** {{audio|en|EN-AU ck1 duck.ogg|a=AU}} * {{IPA4|en|/dʊk/|a=Northern England,Ireland}} * {{rhymes|en|ʌk|s=1}} ==={{section|etym}} 1=== {{ety|en|id=cúi xuống|:inh|enm:ducken<ety:inh<ang:*dūcan>>|tree=1}} Từ {{inh|en|enm|ducken}}, {{mention|enm|duken}}, {{mention|enm|douken}}, từ {{der|en|ang|*dūcan}}, từ {{der|en|gmw-pro|*dūkan}}, từ {{der|en|gem-pro|*dūkaną}}. {{col-top|2|cog}} Có liên quan đến {{cog|sco|dulk}}, {{cog|dum|ducken}}, {{cog|nds|ducken}}, {{cog|de|ducken}}, {{cog|da|dukke}}, {{mention|da|dykke}}. Có liên quan thêm đến {{cog|sco|dook}}, {{mention|sco|douk}}, {{cog|fy|dûke}}, {{cog|nl|duiken}}, {{cog|nds|duken}}, {{cog|de|tauchen}}, {{cog|sv|dyka}}. {{col-bottom}} ===={{section|v}}==== {{en-verb}} # {{lb|en|transitive}} Nhanh chóng [[cúi]] đầu hay thân người xuống để tránh va vào gì đó. # [[dìm|Dìm]] xuống nước, [[ngụp]]. # {{lb|en|intransitive}} [[cúi|Cúi]] [[đầu]] để chào hỏi. # [[trốn|Trốn]]. ====={{section|drv}}===== {{col|en|duck and cover|duck and dive|duck down|duck out|duck off|unducked|beduck|duckable|ducker|duckroll}} ===={{section|n}}==== {{en-noun}} # {{lb|en|caving}} Lối đi trong [[hang động]] chứa đầy [[nước]] mà không có khoảng trống chứa [[không khí]]. ==={{section|etym}} 2=== [[File:Anas_platyrhynchos_in_Aveyron.jpg|thumb|vịt cổ xanh ({{taxfmt|Anas platyrhynchos|loài}})]] {{ety|en|id=chim|:inh|enm:doke|tree=1}} Từ {{inh|en|enm|doke}}, {{mention|enm|ducke}}, {{mention|enm|dukke}}, {{mention|enm|dokke}}, {{mention|enm|douke}}, {{mention|enm|duke}}, từ {{inh|en|ang|duce}}, {{mention|ang|dūce}}, từ {{der|en|ang|*dūcan}}, từ {{der|en|gmw-pro|*dūkan}}, from {{der|en|gem-pro|*dūkaną}}. Xem thêm ở [[{{pagename}}#Từ nguyên 1|động từ]] trên. {{col-top|2|cog}} Cùng gốc với {{cog|sco|duik}}, {{mention|sco|duke}}, {{mention|sco|dook||duck}}, {{cog|da|dukand}}, {{mention|da|dykand||vịt biển}}, {{cog|sv|dykfågel}}, {{cog|nl|duiker}}, {{cog|nds-de|Düker}}, {{cog|de|Taucher}}. {{col-bottom}} So sánh với sự phát triển theo nghĩa {{m+|ru|ныро́к}} (< {{mention|ru|ныря́ть}}). ===={{section|alt}}==== * {{alter|en|ducke||obsolete}} ===={{section|n}}==== {{en-noun|~|s|*}} # [[con|Con]] [[vịt]], [[vịt]] [[cái]]. #: {{hypo|en|drake|duckling}} # {{lb|en|uncountable}} [[thịt|Thịt]] [[vịt]]. # {{lb|en|cricket}} [[ván|Ván]] [[trắng]] (viết tắt của {{mention|en|duck's egg}}). # {{ellipsis of|en|architectural duck}} #: {{syn|en|duck building}} #: {{cot|en|duck architecture}} ====={{section|drv}}===== {{col|en|all duck or no dinner|duck-squeezer|marbled duck |American black duck|falcated duck|fish duck|put one's ducks in a row |antiduck|duck-shover|western duck sickness |architectural duck|Daffy Duck offense|baby duck syndrome |Beijing duck|duck-frost,duck's frost |Black Duck |black-headed duck |blue-billed duck |blue duck |Bombay duck |box of fluffy ducks |Brahminy duck |break one's duck |buffel duck |Burdekin duck |burrow duck |can a duck|duck snort|yellow-billed duck |can a duck swim|aromatic duck|Carolina duck |chance the ducks |chuckey |cold duck |could eat the arse out of a low flying duck |could eat the crotch out of a low flying duck |could eat the crutch from a low flying duck |crocoduck|duck fit|duck orchid |crutches for lame ducks |dabbling duck |Daffy Duck|nigger duck|dead duck |decoy-duck |demon duck of doom |diamond duck |diving duck |divvy duck |domestic duck|in more shit than a Werribee duck |Donald Duck |don't teach your grandmother how to milk ducks |duck ague |duck and dive |duck ant |duck-arsed |duck arsed |duckbill |duck-bill |duckbilled |duck-billed |duck-billed cat |duck-billed dinosaur |duck-billed platypus |duckboard |Duckburg |duckburger |duck architecture |duck butter |duck call |duck clam |Duck Creek |duck curve |duck decoy |duck derby |duck dinner |duck dive |duck-drownder |duck egg |duck-egg blue |duckery |duckess |duckface |duck fart |duckfluff |duckfoot |duck-footed |duckfucker |duck hawk |duckhood |duckie |duckish |duckism |duck itch |duckkind |duck-legged |duckless |ducklet |ducklike |duckling |duckly |duckman |duckmeat |duck mole |duckmole |duckness |duck on a rock |duck on drake |duck on the rock |duck or no dinner |duckpin |duckpond,duck pond |duck potato |duckpower |duck press |duck race |duckroll |ducks and drakes |ducks and geese |duck sauce |ducks guts |duckshit |duckshove |ducksmeat |ducks on the pond |duck soup |duckspeak |duck stamp |ducktail |duck test |duck tour |duck typing |duckwalk |duck walk |duckweed |duckwing |eider duck |eiderduck |ferruginous duck |Field-lane duck |fine weather for ducks |fluffy duck |freckled duck |fuck a duck |fuzzy duck |German duck |get one's ducks in a row |go hunting where the ducks are |golden duck |gooducken |Gressingham duck |guck |harlequin duck |have one's ducks in a row |hook-a-duck |hunt where the ducks are |hunt where the ducks were |if it looks like a duck |Indian whistling duck |Labrador duck |lame-duck |lame duck |Laysan duck |lesser whistling duck |like a duck takes to water |like a duck to water |like a dying duck in a thunderstorm |like water off a duck's back |line up one's ducks |loggerhead duck |long-tailed duck |Lord love a duck |love a duck |lovely weather for ducks |lucky duck |mandarin duck |Mexican duck |milkshake duck |mottled duck |mud duck |Muscovy duck |musk duck |nice weather for ducks |odd duck |one little duck |out for a duck |Pekin duck |Peking duck |pink-eared duck |pintail duck |platinum duck |pressed duck |quack like a duck |queer duck |raft duck |raven's duck |ring-necked duck |roan duck |royal duck |rubber duck |rubber-duck |rubber duck debugging |ruddy duck |ruptured duck |savoury duck |sea duck |shelduck |sitting duck |spirit duck |spotted whistling duck |squawk duck |St. Cuthbert's duck |steamer duck |step on a duck |stiff-tailed duck |surf duck |take to something like a duck to water |torrent duck |tree duck |tufted duck |turducken |two little ducks |unsinkable rubber duck |velvet duck |wandering whistling duck |water off a duck |whew duck |whistling duck |white-headed duck |wood duck |Zhangcha duck }} ====={{section|desc}}===== * {{desctree|srn|doksi|qq=dạng số nhiều}} ===={{section|see}}==== {{col|en |anatine |drake |goose |quack |swan |waterfowl }} ===={{section|ref}}==== * Weisenberg, Michael (2000) ''[http://www.poker1.com/mcu/pokerdictionary/mculib_dictionary_info.asp The Official Dictionary of Poker].'' MGI/Mike Caro University. {{ISBN|978-1880069523}} * '''1873''', John Camden Hotten, ''The Slang Dictionary'' * {{R:FVDP|db=ev}} ==={{section|etym}} 3=== {{ety|en|id=vải|:bor|nl:doek|tree=1}} Từ {{bor|en|nl|doek}}, từ {{der|en|dum|doeck}}, {{mention|dum|doec||vải linen}}, từ {{der|en|odt|*dōc}}, từ {{der|en|gmw-pro|*dōk}}, từ {{der|en|gem-pro|*dōkaz}}, từ {{der|en|ine-pro|*dwōg-}}, {{mention|ine-pro|*dwōk-}}. Cùng gốc với {{cog|de|Tuch}}, {{cog|sv|duk}}, {{cog|is|dúkur}}. {{doublet|en|doek}}. ===={{section|alt}}==== * {{l|en|dook}}, {{l|en|doock}} {{qualifier|Scotland}} ===={{section|n}}==== {{en-noun|~}} # [[vải bông|Vải bông]] [[dày]] (may buồm, áo ngoài của thuỷ thủ). #: {{syn|en|duckcloth}} # [[quần|Quần]] [[vải bông]] [[dày]]. ====={{section|drv}}===== {{col|en |duckcloth |duck tape,ducktape |sailduck }} ====={{section|rel}}===== * {{l|en|deech}} ==={{section|etym}} 4=== {{ety|en|id=người yêu, cục cưng}} {{rfe|en}} ===={{section|n}}==== {{en-noun}} # [[người yêu|Người yêu]], [[cục cưng]]. ====={{section|syn}}===== * Xem [[Kho từ vựng:friend]] ====={{section|drv}}===== * {{l|en|ay up me duck}} * {{l|en|ducky|duckie}} * {{l|en|ducks}} ===={{section|ref}}==== * {{R:OneLook}} * {{cite-web|url=http://www.bbc.co.uk/stoke/voices2005/features/steve_birks.shtml|title=The history of the Potteries dialect|first=Steve|last=Birks|work=BBC|date=2005-01-26|accessdate=2014-11-19}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|altform=1}} # {{alt form|enm|duk}} =={{langname|de}}== ==={{section|pron}}=== * {{audio|de|De-duck.ogg|a=Berlin}} * {{rhymes|de|ʊk|s=1}} ==={{section|v}}=== {{head|de|Biến thể hình thái động từ}} # {{verb form of|de|ducken||imp|s}} 6dao05ctc8tp5f8ec7hue4clxwht9g8 2463731 2463729 2026-07-20T08:15:54Z Hiyuune 50834 /* {{section|etym}} 2 */ 2463731 wikitext text/x-wiki {{also|Duck}} =={{langname|en}}== ==={{section|pron}}=== * {{enPR|dŭk}}, {{IPA4|en|/dʌk/}} ** {{audio|en|en-us-duck.ogg|a=US}} ** {{audio|en|EN-AU ck1 duck.ogg|a=AU}} * {{IPA4|en|/dʊk/|a=Northern England,Ireland}} * {{rhymes|en|ʌk|s=1}} ==={{section|etym}} 1=== {{ety|en|id=cúi xuống|:inh|enm:ducken<ety:inh<ang:*dūcan>>|tree=1}} Từ {{inh|en|enm|ducken}}, {{mention|enm|duken}}, {{mention|enm|douken}}, từ {{der|en|ang|*dūcan}}, từ {{der|en|gmw-pro|*dūkan}}, từ {{der|en|gem-pro|*dūkaną}}. {{col-top|2|cog}} Có liên quan đến {{cog|sco|dulk}}, {{cog|dum|ducken}}, {{cog|nds|ducken}}, {{cog|de|ducken}}, {{cog|da|dukke}}, {{mention|da|dykke}}. Có liên quan thêm đến {{cog|sco|dook}}, {{mention|sco|douk}}, {{cog|fy|dûke}}, {{cog|nl|duiken}}, {{cog|nds|duken}}, {{cog|de|tauchen}}, {{cog|sv|dyka}}. {{col-bottom}} ===={{section|v}}==== {{en-verb}} # {{lb|en|transitive}} Nhanh chóng [[cúi]] đầu hay thân người xuống để tránh va vào gì đó. # [[dìm|Dìm]] xuống nước, [[ngụp]]. # {{lb|en|intransitive}} [[cúi|Cúi]] [[đầu]] để chào hỏi. # [[trốn|Trốn]]. ====={{section|drv}}===== {{col|en|duck and cover|duck and dive|duck down|duck out|duck off|unducked|beduck|duckable|ducker|duckroll}} ===={{section|n}}==== {{en-noun}} # {{lb|en|caving}} Lối đi trong [[hang động]] chứa đầy [[nước]] mà không có khoảng trống chứa [[không khí]]. ==={{section|etym}} 2=== [[File:Anas_platyrhynchos_in_Aveyron.jpg|thumb|vịt cổ xanh ({{taxfmt|Anas platyrhynchos|loài}})]] {{ety|en|id=chim|:inh|enm:doke|tree=1}} Từ {{inh|en|enm|doke}}, {{mention|enm|ducke}}, {{mention|enm|dukke}}, {{mention|enm|dokke}}, {{mention|enm|douke}}, {{mention|enm|duke}}, từ {{inh|en|ang|duce}}, {{mention|ang|dūce}}, từ {{der|en|ang|*dūcan}}, từ {{der|en|gmw-pro|*dūkan}}, from {{der|en|gem-pro|*dūkaną}}. Xem thêm ở [[{{pagename}}#Từ nguyên 1|động từ]] trên. {{col-top|2|cog}} Cùng gốc với {{cog|sco|duik}}, {{mention|sco|duke}}, {{mention|sco|dook}}, {{cog|da|dukand}}, {{mention|da|dykand||vịt biển}}, {{cog|sv|dykfågel}}, {{cog|nl|duiker}}, {{cog|nds-de|Düker}}, {{cog|de|Taucher}}. {{col-bottom}} So sánh với sự phát triển theo nghĩa {{m+|ru|ныро́к}} (< {{mention|ru|ныря́ть}}). ===={{section|alt}}==== * {{alter|en|ducke||obsolete}} ===={{section|n}}==== {{en-noun|~|s|*}} # [[con|Con]] [[vịt]], [[vịt]] [[cái]]. #: {{hypo|en|drake|duckling}} # {{lb|en|uncountable}} [[thịt|Thịt]] [[vịt]]. # {{lb|en|cricket}} [[ván|Ván]] [[trắng]] (viết tắt của {{mention|en|duck's egg}}). # {{ellipsis of|en|architectural duck}} #: {{syn|en|duck building}} #: {{cot|en|duck architecture}} ====={{section|drv}}===== {{col|en|all duck or no dinner|duck-squeezer|marbled duck |American black duck|falcated duck|fish duck|put one's ducks in a row |antiduck|duck-shover|western duck sickness |architectural duck|Daffy Duck offense|baby duck syndrome |Beijing duck|duck-frost,duck's frost |Black Duck |black-headed duck |blue-billed duck |blue duck |Bombay duck |box of fluffy ducks |Brahminy duck |break one's duck |buffel duck |Burdekin duck |burrow duck |can a duck|duck snort|yellow-billed duck |can a duck swim|aromatic duck|Carolina duck |chance the ducks |chuckey |cold duck |could eat the arse out of a low flying duck |could eat the crotch out of a low flying duck |could eat the crutch from a low flying duck |crocoduck|duck fit|duck orchid |crutches for lame ducks |dabbling duck |Daffy Duck|nigger duck|dead duck |decoy-duck |demon duck of doom |diamond duck |diving duck |divvy duck |domestic duck|in more shit than a Werribee duck |Donald Duck |don't teach your grandmother how to milk ducks |duck ague |duck and dive |duck ant |duck-arsed |duck arsed |duckbill |duck-bill |duckbilled |duck-billed |duck-billed cat |duck-billed dinosaur |duck-billed platypus |duckboard |Duckburg |duckburger |duck architecture |duck butter |duck call |duck clam |Duck Creek |duck curve |duck decoy |duck derby |duck dinner |duck dive |duck-drownder |duck egg |duck-egg blue |duckery |duckess |duckface |duck fart |duckfluff |duckfoot |duck-footed |duckfucker |duck hawk |duckhood |duckie |duckish |duckism |duck itch |duckkind |duck-legged |duckless |ducklet |ducklike |duckling |duckly |duckman |duckmeat |duck mole |duckmole |duckness |duck on a rock |duck on drake |duck on the rock |duck or no dinner |duckpin |duckpond,duck pond |duck potato |duckpower |duck press |duck race |duckroll |ducks and drakes |ducks and geese |duck sauce |ducks guts |duckshit |duckshove |ducksmeat |ducks on the pond |duck soup |duckspeak |duck stamp |ducktail |duck test |duck tour |duck typing |duckwalk |duck walk |duckweed |duckwing |eider duck |eiderduck |ferruginous duck |Field-lane duck |fine weather for ducks |fluffy duck |freckled duck |fuck a duck |fuzzy duck |German duck |get one's ducks in a row |go hunting where the ducks are |golden duck |gooducken |Gressingham duck |guck |harlequin duck |have one's ducks in a row |hook-a-duck |hunt where the ducks are |hunt where the ducks were |if it looks like a duck |Indian whistling duck |Labrador duck |lame-duck |lame duck |Laysan duck |lesser whistling duck |like a duck takes to water |like a duck to water |like a dying duck in a thunderstorm |like water off a duck's back |line up one's ducks |loggerhead duck |long-tailed duck |Lord love a duck |love a duck |lovely weather for ducks |lucky duck |mandarin duck |Mexican duck |milkshake duck |mottled duck |mud duck |Muscovy duck |musk duck |nice weather for ducks |odd duck |one little duck |out for a duck |Pekin duck |Peking duck |pink-eared duck |pintail duck |platinum duck |pressed duck |quack like a duck |queer duck |raft duck |raven's duck |ring-necked duck |roan duck |royal duck |rubber duck |rubber-duck |rubber duck debugging |ruddy duck |ruptured duck |savoury duck |sea duck |shelduck |sitting duck |spirit duck |spotted whistling duck |squawk duck |St. Cuthbert's duck |steamer duck |step on a duck |stiff-tailed duck |surf duck |take to something like a duck to water |torrent duck |tree duck |tufted duck |turducken |two little ducks |unsinkable rubber duck |velvet duck |wandering whistling duck |water off a duck |whew duck |whistling duck |white-headed duck |wood duck |Zhangcha duck }} ====={{section|desc}}===== * {{desctree|srn|doksi|qq=dạng số nhiều}} ===={{section|see}}==== {{col|en |anatine |drake |goose |quack |swan |waterfowl }} ===={{section|ref}}==== * Weisenberg, Michael (2000) ''[http://www.poker1.com/mcu/pokerdictionary/mculib_dictionary_info.asp The Official Dictionary of Poker].'' MGI/Mike Caro University. {{ISBN|978-1880069523}} * '''1873''', John Camden Hotten, ''The Slang Dictionary'' * {{R:FVDP|db=ev}} ==={{section|etym}} 3=== {{ety|en|id=vải|:bor|nl:doek|tree=1}} Từ {{bor|en|nl|doek}}, từ {{der|en|dum|doeck}}, {{mention|dum|doec||vải linen}}, từ {{der|en|odt|*dōc}}, từ {{der|en|gmw-pro|*dōk}}, từ {{der|en|gem-pro|*dōkaz}}, từ {{der|en|ine-pro|*dwōg-}}, {{mention|ine-pro|*dwōk-}}. Cùng gốc với {{cog|de|Tuch}}, {{cog|sv|duk}}, {{cog|is|dúkur}}. {{doublet|en|doek}}. ===={{section|alt}}==== * {{l|en|dook}}, {{l|en|doock}} {{qualifier|Scotland}} ===={{section|n}}==== {{en-noun|~}} # [[vải bông|Vải bông]] [[dày]] (may buồm, áo ngoài của thuỷ thủ). #: {{syn|en|duckcloth}} # [[quần|Quần]] [[vải bông]] [[dày]]. ====={{section|drv}}===== {{col|en |duckcloth |duck tape,ducktape |sailduck }} ====={{section|rel}}===== * {{l|en|deech}} ==={{section|etym}} 4=== {{ety|en|id=người yêu, cục cưng}} {{rfe|en}} ===={{section|n}}==== {{en-noun}} # [[người yêu|Người yêu]], [[cục cưng]]. ====={{section|syn}}===== * Xem [[Kho từ vựng:friend]] ====={{section|drv}}===== * {{l|en|ay up me duck}} * {{l|en|ducky|duckie}} * {{l|en|ducks}} ===={{section|ref}}==== * {{R:OneLook}} * {{cite-web|url=http://www.bbc.co.uk/stoke/voices2005/features/steve_birks.shtml|title=The history of the Potteries dialect|first=Steve|last=Birks|work=BBC|date=2005-01-26|accessdate=2014-11-19}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|altform=1}} # {{alt form|enm|duk}} =={{langname|de}}== ==={{section|pron}}=== * {{audio|de|De-duck.ogg|a=Berlin}} * {{rhymes|de|ʊk|s=1}} ==={{section|v}}=== {{head|de|Biến thể hình thái động từ}} # {{verb form of|de|ducken||imp|s}} abxsmlouz2zp46n2zva7n6vqq6zpwk8 直升机 0 215510 2463669 1987835 2026-07-20T01:31:04Z Hiyuune 50834 2463669 wikitext text/x-wiki {{also|直升機|直昇機}} =={{langname|zh}}== {{zh-see|直升機}} qwfrn2gth5eh0gqp6siulg5ahbw9nll 木鱼 0 215534 2463543 1987333 2026-07-19T15:08:32Z Hiyuune 50834 2463543 wikitext text/x-wiki {{also|木魚}} =={{langname|zh}}== {{zh-see|木魚}} s32bahkc1jsmscp7hknh7utchggux2x 化工 0 215569 2463540 1986577 2026-07-19T15:03:28Z Hiyuune 50834 2463540 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{section|pronunciation}}=== {{zh-pron |m=huàgōng |c=faa3 gung1 |mn=hòa-kang |cat=n }} ==={{section|noun}}=== {{head|zh|Danh từ}} # {{zh-abbrev|化學工業|[[công nghiệp]] [[hóa chất]]}} # {{zh-abbrev|化學工程|[[kỹ thuật]] [[hóa học]]}} # {{lb|zh|literary}} [[tác phẩm|Tác phẩm]] [[thiên nhiên]]. {{cat|cmn|Intermediate Mandarin}} {{C|zh|Hóa học}} h3qtggidejjfg57s2yzb1d1ovroi4vb 赞成 0 215598 2463545 1988474 2026-07-19T15:11:31Z Hiyuune 50834 2463545 wikitext text/x-wiki {{also|贊成}} =={{langname|zh}}== {{zh-see|贊成}} dytl6p70e0pygv2e6nvvxt0b70aq8yv 孤儿 0 215794 2463685 1986921 2026-07-20T01:54:22Z Hiyuune 50834 2463685 wikitext text/x-wiki {{also|孤兒}} =={{langname|zh}}== {{zh-see|孤兒}} dc9ym7atrufaczl1ivw0cb863w79qjk 烟霞 0 215814 2463683 1987615 2026-07-20T01:51:21Z Hiyuune 50834 2463683 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|煙霞}} t7jsvzy8o831thh8ays40yvujyiwah4 摘要 0 215832 2463535 1987232 2026-07-19T14:54:06Z Hiyuune 50834 2463535 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{section|pron}}=== {{zh-pron |m=zhāiyào |ma=Zh-zhaiyào.ogg |c=zaak6 jiu3 |ca=LL-Q9186 (yue)-Luilui6666-摘要.wav |mn=tiah-iàu |mn-t=diah4 iao3 |cat=n,v }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[trích dẫn|Trích dẫn]]; [[tóm tắt]]. ===={{section|syn}}==== {{syn-saurus|zh|提綱}} ==={{section|v}}=== {{head|zh|Động từ}} # [[tóm tắt|Tóm tắt]], [[kết luận]]. ===={{section|syn}}==== {{syn-saurus|zh|總結}} ===={{section|desc}}==== {{CJKV||てきよう|적요|trích yếu}} {{cat|cmn|Advanced Mandarin}} 9ajtv16o7nvqf5lvv8v3vtg4lkv8ob0 aspiring 0 228604 2463558 2163068 2026-07-19T15:30:55Z Hiyuune 50834 2463558 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|aspire||ing-form}}. ==={{section|ana}}=== * {{anagrams|en|a=agiinprs|pairings|praising}} gn48tg46q3e8db3sd9rtj9mf9awrtnl Bản mẫu:unknown 10 232307 2463501 2086148 2026-07-19T12:49:28Z TheHighFighter2 42988 2463501 wikitext text/x-wiki {{#invoke:etymology/templates|misc_variant_no_term|text={{#if:{{{nocap|}}}|k|K}}hông rõ|cat=Từ không rõ từ nguyên|title2_alias=1}}<noinclude>{{documentation}}</noinclude> 7cj4a2f9njrvpobdc936qizpmk4nedj Thể loại:Tên 14 233086 2463565 2267973 2026-07-19T15:49:19Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên]] thành [[Thể loại:Tên gọi]] 2267973 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463574 2463565 2026-07-19T15:57:27Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên gọi]] thành [[Thể loại:Tên]] (đã tắt đổi hướng) 2267973 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463634 2463574 2026-07-19T18:03:59Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên]] thành [[Thể loại:Tên gọi]] (đã tắt đổi hướng) 2267973 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463640 2463634 2026-07-19T18:24:35Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên gọi]] thành [[Thể loại:Tên]] (đã tắt đổi hướng) 2267973 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Trần Đoàn 0 233107 2463646 1330289 2026-07-19T22:23:48Z Kateru Zakuro 34522 2463646 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|Trần|Đoàn}} {{-name-}} # Người đời [[Ngũ Quý]] đầu [[đời]] [[Tống]], [[hiệu]] [[Đồ Nam]]. [[ông|Ông]] còn có hiệu là [[Hy Di]] [[tiên sinh]]. [[Thể loại:Danh từ riêng tiếng Việt]] aypwrgtsqs8h20hyoltkyam3hb2zvee Thể loại:Tên người theo ngôn ngữ 14 237870 2463583 1333290 2026-07-19T16:06:25Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên người]] thành [[Thể loại:Tên người theo ngôn ngữ]] 1333290 wikitext text/x-wiki [[Thể loại:Tên]] jh52vgkj2k9i4gv7odlxq4e70p8cbgg Đức 0 238268 2463666 2380149 2026-07-19T22:39:06Z Kateru Zakuro 34522 2463666 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Tên nước'') Bắt nguồn từ [[tiếng Trung]]. Trong tiếng Trung, nước Đức được gọi là <big>[[德意志]]</big> (âm [[Hán-Việt]]: Đức Ý Chí), gọi tắt là <big>[[德國]]</big> (''Đức quốc''). Cũng giống như [[Anh]], [[Pháp]], [[Mỹ]]..., người Việt hay bỏ chữ "quốc" đi, chỉ còn gọi là "Đức". * (''Tên người'') Phiên âm từ [[chữ Hán]] <big>[[德]]</big>. {{-pron-}} {{vie-pron}} {{-homo-}} * [[đức]] * [[đứt]] {{-paro-}} {{đầu}} * [[dục]] * [[đúc]] * [[đục]] * [[đức]] * [[đực]] {{cuối}} {{-place-}} [[Tập tin:EU-Germany.svg|nhỏ|Vị trí của nước '''Đức''' trên bản đồ châu Âu (phần xanh đậm).]] {{pn}} # {{senseid|vi|Q183}} Một [[quốc gia]] ở [[Trung Âu]]. Tên chính thức: [[Cộng hòa Liên bang Đức]]. #* '''2008''', Thanh Tuấn, ''[https://tuoitre.vn/nuoc-duc-va-cuoc-chien-voi-lon-rung-288081.htm Nước Đức và cuộc chiến với lợn rừng]'', Tuổi Trẻ: #*: Đã có người chết trong cuộc chiến với lợn rừng bắt đầu từ vài tháng nay ở nước '''Đức'''. Những nhà động vật học coi lợn rừng là “loài vật nguy hiểm nhất” nước '''Đức'''. Trong suốt thời gian dài, lợn rừng đã “khủng bố” các vùng quê của nước '''Đức'''. #* '''2021''', Vũ Anh, ''[https://vnexpress.net/lo-dat-khien-nhieu-nguoi-chet-mat-tich-o-duc-4325840.html Lở đất khiến nhiều người chết, mất tích ở Đức]'', VnExpress: #*: Hàng loạt ngôi nhà bị cuốn trôi, nhiều người chết và mất tích do lở đất tại vùng Erftstadt-Blessem, miền tây nước '''Đức''', nhưng chưa có thống kê cụ thể. {{-drv-}} {{đầu}} * [[Đông Đức]] * [[Đức Quốc xã]] * [[Tây Đức]] * [[tiếng Đức]] {{cuối}} {{-trans-}} {{trans-top|Tên quốc gia}} * {{ara}}: {{t|ar|ألمانيا|f|tr=ʾalmānyā}} ** {{arz}}: {{t|arz|ألمانيا}} * {{abk}}: {{t|ab|Алмантәыла|tr=Almanṭ°əla}} * {{ace}}: {{t|ace|Jeureuman}} * {{ady}}: {{t|ady|Германие|tr=Ɣermānie}} * {{afr}}: {{t|af|Duitsland}} * {{langname|ak}}: {{t|ak|Gyaaman}} * {{sqi}}: {{t|sq|Gjermani|f}} {{q|bất định}}, {{t|sq|Gjermania|f}} {{q|hạn định}} * {{amh}}: {{t|am|ጀርመን|tr=ǧärmän}} * {{eng}}: {{t|en|Germany}} * {{langname|an}}: {{t|an|Alemanya}} * {{arc}}: ** {{aii}}: {{t|aii|ܐܠܡܢܝܐ|f|tr=ālmanya}}, {{t|aii|ܓܪܡܢ|tr=jerman}} {{q|cổ}} * {{hye}}: {{t|hy|Գերմանիա|tr=Germania}} * {{rup}}: {{t|rup|Ghermãnii|f}} {{q|bất định}}, {{t|rup|Ghermãnia}} {{q|hạn định}}, {{t|rup|Ghirmanii|f}} {{q|bất định}}, {{t|rup|Ghirmania|f}} {{q|hạn định}}, {{t|rup|Ghermanii|f}} {{q|bất định}}, {{t|rup|Ghermania|f}} {{q|hạn định}} * {{asm}}: {{t|as|জাৰ্মানী|tr=zarmani}} * {{ast}}: {{t|ast|Alemaña|f}} * {{ava}}: {{t|av|Алмания|tr=Almanija}} * {{aym}}: {{t|ay|Alimaña}} * {{aze}}: {{t|az|Almaniya}} * {{bam}}: {{t|bm|Alimaɲi}} * {{bas}}: {{t|bas|Jamân}} * {{bak}}: {{t|ba|Германия|tr=Germaniya}} * {{eus}}: {{t|eu|Alemania}} * {{bar}}: {{t|bar|Deitschland}} * {{bel}}: {{t|be|Германія|f|tr=Hjermánija}}, {{t|be|Нямеччына|f|tr=Njamjéččyna}} * {{ben}}: {{t|bn|জার্মানি|tr=jarmani}} * {{bpy}}: {{t|bpy|জার্মানি}} * {{bis}}: {{t|bi|Jemani}} * {{bre}}: {{t|br|Alamagn}} * {{bug}}: {{t|bug|Jerman}} * {{bul}}: {{t|bg|Германия|f|tr=Germánija}} * {{mya}}: {{t|my|ဂျာမနီ|tr=gyama.ni}} * {{bcl}}: {{t|bcl|Alemanya}} {{trans-bottom}} {{-pr-noun-}} {{pn}} # ''[[tên|Tên]] người trong [[tiếng Việt]], được đặt cho [[con trai]]''. {{-noun-}} {{pn}} # (''Từ cũ'') Từ dùng đặt trước [[danh từ]] chỉ [[thần thánh]] hoặc người có [[địa vị]] [[cao quý]] trong xã hội [[phong kiến]] để tỏ ý [[tôn kính]] khi nói đến. #: {{ux|vi|'''Đức''' Thánh Trần.}} #: {{ux|vi|'''Đức''' Phật Như Lai.}} #: {{ux|vi|'''Đức''' vua.}} {{-ref-}} {{R:Tratu|vn|vn}} {{catname|Địa danh|tiếng Việt}} {{catname|Tên người|tiếng Việt}} [[Thể loại:Tên gọi tiếng Việt đặt cho nam]] {{catname|Danh từ|tiếng Việt}} [[Thể loại:vi:Quốc gia]] [[Thể loại:vi:Quốc gia của châu Âu]] [[Thể loại:vi:Đức]] gqz4qyb770pl00egd29lr1obbakk0dz Thích-ca Mâu-ni 0 242927 2463587 2151391 2026-07-19T16:12:52Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463587 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Thích|ca|Mâu|ni}} {{-name-}} '''Thích-ca Mâu-ni''', '''Thích-ca-mâu-ni''' # [[người|Người]] [[sáng lập]] [[đạo Phật]]. {{-trans-}} {{đầu}} * {{eng}}: [[Gautama Buddha]], [[Shakyamuni Buddha]] {{giữa}} * {{spa}}: [[Buda Gautama]] {{cuối}} {{-related-}} * [[Tất-đạt-đa Cồ-đàm]] {{C|vi|Tên}} ju98hb5wsvgw0j5hp7yzxdwiam08mi2 2463593 2463587 2026-07-19T16:17:16Z BlueShurikenNinjaBot 50371 /* top */ clean up, replaced: {{C|vi|Tên}} → [[Thể loại:Tên gọi tiếng Việt]] 2463593 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Thích|ca|Mâu|ni}} {{-name-}} '''Thích-ca Mâu-ni''', '''Thích-ca-mâu-ni''' # [[người|Người]] [[sáng lập]] [[đạo Phật]]. {{-trans-}} {{đầu}} * {{eng}}: [[Gautama Buddha]], [[Shakyamuni Buddha]] {{giữa}} * {{spa}}: [[Buda Gautama]] {{cuối}} {{-related-}} * [[Tất-đạt-đa Cồ-đàm]] [[Thể loại:Tên gọi tiếng Việt]] {{C|vi|Tên}} 0f4g01blip1cwdaukm3204tgojzmim1 2463616 2463593 2026-07-19T16:30:48Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463616 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Thích|ca|Mâu|ni}} {{-name-}} '''Thích-ca Mâu-ni''', '''Thích-ca-mâu-ni''' # [[người|Người]] [[sáng lập]] [[đạo Phật]]. {{-trans-}} {{đầu}} * {{eng}}: [[Gautama Buddha]], [[Shakyamuni Buddha]] {{giữa}} * {{spa}}: [[Buda Gautama]] {{cuối}} {{-related-}} * [[Tất-đạt-đa Cồ-đàm]] [[Thể loại:Tên gọi tiếng Việt]] 9kxpq1byk9352l2eseh9fkt7v5diefm Gautama Buddha 0 242928 2463607 1431438 2026-07-19T16:22:13Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463607 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Gautama Buddha''' # [[Thích-ca-mâu-ni]]. [[Thể loại:Tên gọi tiếng Anh]] {{C|vi|Tên}} 96x3pxeduj748fq32ag137bblcgdpx9 2463621 2463607 2026-07-19T16:31:49Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463621 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Gautama Buddha''' # [[Thích-ca-mâu-ni]]. [[Thể loại:Tên gọi tiếng Anh]] quj83p4ry3kq5mj5plpwfnoii5mt4d2 2463691 2463621 2026-07-20T02:04:04Z Hiyuune 50834 2463691 wikitext text/x-wiki =={{langname|en}}== ==={{ĐM|pr-noun}}=== {{en-proper noun|def=1}} # {{synonym of|en|Buddha}}. 9vvlcs1tuw8qfsr8vj4qhcorihb1iar Tất-đạt-đa Cồ-đàm 0 242929 2463588 2324714 2026-07-19T16:13:04Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463588 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Tất|đạt|đa|Cồ|đàm}} {{-name-}} '''Tất-đạt-đa Cồ-đàm''' # {{like-entry|Thích-ca Mâu-ni}} {{-trans-}} {{đầu}} * {{eng}}: [[Siddhārtha Gautama]] * {{pli}}: [[Siddhattha Gotama]] {{giữa}} * {{san}}: [[सिद्धार्थ गौतम बुद्ध]] * {{spa}}: [[Siddhartha Gautamá]] {{cuối}} {{-related-}} * [[Nhất thiết nghĩa thành]] * [[Thành tựu chúng sinh]] {{C|vi|Tên}} g7rrjhvirdgusyaeqsqzfj26nvs64go 2463594 2463588 2026-07-19T16:17:28Z BlueShurikenNinjaBot 50371 /* top */ clean up, replaced: {{C|vi|Tên}} → [[Thể loại:Tên gọi tiếng Việt]] 2463594 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Tất|đạt|đa|Cồ|đàm}} {{-name-}} '''Tất-đạt-đa Cồ-đàm''' # {{like-entry|Thích-ca Mâu-ni}} {{-trans-}} {{đầu}} * {{eng}}: [[Siddhārtha Gautama]] * {{pli}}: [[Siddhattha Gotama]] {{giữa}} * {{san}}: [[सिद्धार्थ गौतम बुद्ध]] * {{spa}}: [[Siddhartha Gautamá]] {{cuối}} {{-related-}} * [[Nhất thiết nghĩa thành]] * [[Thành tựu chúng sinh]] [[Thể loại:Tên gọi tiếng Việt]] {{C|vi|Tên}} b045nhc17o2xwwpqqyys9dpz1gg1jms 2463615 2463594 2026-07-19T16:30:36Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463615 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Tất|đạt|đa|Cồ|đàm}} {{-name-}} '''Tất-đạt-đa Cồ-đàm''' # {{like-entry|Thích-ca Mâu-ni}} {{-trans-}} {{đầu}} * {{eng}}: [[Siddhārtha Gautama]] * {{pli}}: [[Siddhattha Gotama]] {{giữa}} * {{san}}: [[सिद्धार्थ गौतम बुद्ध]] * {{spa}}: [[Siddhartha Gautamá]] {{cuối}} {{-related-}} * [[Nhất thiết nghĩa thành]] * [[Thành tựu chúng sinh]] [[Thể loại:Tên gọi tiếng Việt]] thjj15u13mlaslgqjvoh6jx3rv5lngf Spain 0 243528 2463702 2449581 2026-07-20T02:53:28Z Kelly zhrm 58416 2463702 wikitext text/x-wiki {{also|spáin|spàin|'spáin}} =={{langname|en}}== {{wp|en:}} {{Wikiquote}} [[File:España-loc.svg|thumb|Location of Spain in the Iberian peninsula.]] ==={{ĐM|alt}}=== * {{l|en|Spayen}} {{qualifier|không còn dùng}} ==={{ĐM|etym}}=== {{etymon|en|id=country|:inh|enm:Spayne<id:country>|tree=1}} Từ {{inh|en|enm|Spayne}}, từ {{der|en|xno|Espayne}}, từ {{der|en|la-lat|Spania}}, từ tiền thân {{der|en|la|Hispānia}}. Thay thế {{ncog|ang|Ispania}}, được vay mượn trực tiếp từ tiếng Latinh. {{doublet|en|Hispania}}. ==={{ĐM|pron}}=== * {{IPA4|en|/speɪn/|a=RP,US}} ** {{audio|en|LL-Q1860 (eng)-Soundguys-Spain.wav|a=UK}} ** {{audio|en|en-us-Spain.ogg|a=US}} * {{IPA4|en|/spæɪn/|a=AU}} * {{IPA4|en|/spen/|a=Scotland}} * {{IPA4|en|/spein/|a=Wales,non-pane-pain}} * {{rhymes|en|eɪn|s=1}} ==={{ĐM|pr-noun}}=== {{en-proper noun}} # {{transclude|en|Tây Ban Nha|id=Q29}}. ===={{ĐM|hypo}}==== * {{sense|quốc gia}} {{l|en|Andalusia}}, {{l|en|Aragon}}, {{l|en|Asturias}}, {{l|en|Cantabria}}, {{l|en|Castile}}, {{l|en|Catalonia}}, {{l|en|Galicia}}, {{l|en|Valencia}} ===={{ĐM|rel}}==== * {{l|en|Hispanic}} * {{l|en|Spaniard}} * {{l|en|Spanish}} ===={{ĐM|desc}}==== * {{desc|my|bor=1|စပိန်}} * {{desc|inc-hnd|bor=1}} ** {{desc|hi|स्पेन}} * {{desc|ja|bor=1|スペイン|tr=Supein}} * {{desc|ko|bor=1|스페인}} * {{desc|mr|bor=1|स्पेन}} * {{desc|th|bor=1|สเปน}} ==={{ĐM|see}}=== {{list:quốc gia châu Âu/en}} ==={{ĐM|ana}}=== * {{anagrams|en|a=ainps|aspin|spina|SPINA|PAINs|Pains|PAINS|pains|nipas|pinas|ispán|piñas|NSAPI|pisan|IP SAN|Pisan}} {{cln|en|Từ ngoại danh}} f4vpqqkx6vdbwyfkot6ntz4m1tt1xl4 Thể loại:Tên gọi tiếng Việt 14 245333 2463581 2463382 2026-07-19T16:03:06Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên tiếng Việt]] thành [[Thể loại:Tên gọi tiếng Việt]] (đã tắt đổi hướng) 2463382 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Chas 0 245688 2463605 2463336 2026-07-19T16:21:49Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463605 wikitext text/x-wiki {{see-entry|chas}} {{-eng-}} {{-name-}} '''Chas''' {{g-old|m}} # {{form of|en|tên hiệu|Charles}} {{-abbr-}} '''Chas''' # {{context|cũ}} {{abbreviation of|en|Charles}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] {{C|vi|Tên}} i9idnmvj64tcxvwwlyxhuceh5anakpw 2463619 2463605 2026-07-19T16:31:25Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463619 wikitext text/x-wiki {{see-entry|chas}} {{-eng-}} {{-name-}} '''Chas''' {{g-old|m}} # {{form of|en|tên hiệu|Charles}} {{-abbr-}} '''Chas''' # {{context|cũ}} {{abbreviation of|en|Charles}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] a0x4ck3846wop5imv9h6kzsa3hhz4wt Danl 0 245692 2463606 2463339 2026-07-19T16:22:01Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463606 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Danl''', '''Dan’l''' # {{form of|en|tên hiệu|Daniel}} {{-abbr-}} '''Danl''', '''Dan’l''' # {{context|cũ}} {{abbreviation of|en|Daniel}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] {{C|vi|Tên}} 5f6wmxdnminr1zykmlrwcy5djff4uki 2463620 2463606 2026-07-19T16:31:37Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463620 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Danl''', '''Dan’l''' # {{form of|en|tên hiệu|Daniel}} {{-abbr-}} '''Danl''', '''Dan’l''' # {{context|cũ}} {{abbreviation of|en|Daniel}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] f9cf0c2hni3ljxmp4zmoce256g6o75w Jas 0 245724 2463610 2463375 2026-07-19T16:22:37Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463610 wikitext text/x-wiki {{-eng-}} {{-homo-}} ; [[#Tên|tên]] * [[jazz]] * [[Jaz]] {{-name-}} '''Jas''' # {{form of|en|tên hiệu|James}} # {{form of|en|tên hiệu|Jasmine}} {{-syn-}} ; tên hiệu của Jasmine * [[Jaz]] {{-abbr-}} '''Jas''' # {{context|Kinh Thánh}} {{term|Jas.}} {{abbreviation of|en|James}} {{-syn-}} * [[Jabus]] * [[Jac.]] * [[Jam.]] [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] {{C|vi|Tên}} jpnphg4g131xxu6btd8z21bhkqtm54r 2463623 2463610 2026-07-19T16:32:13Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463623 wikitext text/x-wiki {{-eng-}} {{-homo-}} ; [[#Tên|tên]] * [[jazz]] * [[Jaz]] {{-name-}} '''Jas''' # {{form of|en|tên hiệu|James}} # {{form of|en|tên hiệu|Jasmine}} {{-syn-}} ; tên hiệu của Jasmine * [[Jaz]] {{-abbr-}} '''Jas''' # {{context|Kinh Thánh}} {{term|Jas.}} {{abbreviation of|en|James}} {{-syn-}} * [[Jabus]] * [[Jac.]] * [[Jam.]] [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] 3h1x7azyd5ghcxm3g554pseompdplit Josh 0 245730 2463611 2463383 2026-07-19T16:22:49Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463611 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Josh''' # {{form of|en|tên hiệu|Joshua}} {{-abbr-}} '''Josh''' # {{context|cũ}} {{abbreviation of|en|Josiah}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] {{C|vi|Tên}} stvipoqkaylbqcd2gdyscfotighk5yf 2463624 2463611 2026-07-19T16:32:25Z BlueShurikenNinjaBot 50371 /* top */ clean up, removed: {{C|vi|Tên}} 2463624 wikitext text/x-wiki {{-eng-}} {{-name-}} '''Josh''' # {{form of|en|tên hiệu|Joshua}} {{-abbr-}} '''Josh''' # {{context|cũ}} {{abbreviation of|en|Josiah}} [[Thể loại:Tên gọi tiếng Anh]] [[Thể loại:Từ viết tắt tiếng Anh]] ivxzcjpizlii1zyiy4x8ww53w5k4j7f 0 249032 2463698 2128004 2026-07-20T02:15:40Z Hiyuune 50834 2463698 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[một|Một]] phần [[ba]]. ===={{section|coord}}==== * {{l|mul|⅔}} * {{l|mul|↉ }} ===={{section|rel}}==== * {{qualifier|chia nhỏ}} [[1]], [[/]], [[3]], [[¹]], [[/]], [[3]] {{list:phân số/mul}} nhpip64uj5l5e6c268f9j97z2k7ggb2 2463701 2463698 2026-07-20T02:20:26Z Hiyuune 50834 /* Từ liên hệ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463701 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[một|Một]] phần [[ba]]. ===={{section|coord}}==== * {{l|mul|⅔}} * {{l|mul|↉ }} ===={{section|rel}}==== * {{qualifier|chia nhỏ}} [[1]], [[/]], [[3]], [[¹]], [[/]], [[3]] {{list:phân số/mul}} ===={{section|see}}==== {{col|mul|𐹽|𒑚|𒑝|𒑥}} gt9r4mcvg69r5im1p9kl3w90wybigiz 0 249075 2463693 2128009 2026-07-20T02:08:23Z Hiyuune 50834 2463693 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[hai|Hai]] phần [[ba]]. ===={{section|rel}}==== {{list:phân số/mul}} 2nom0pkwo9ow34m8eykv37dq3klkq1u 2463700 2463693 2026-07-20T02:18:44Z Hiyuune 50834 /* Từ liên hệ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463700 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[hai|Hai]] phần [[ba]]. ===={{section|rel}}==== {{list:phân số/mul}} ===={{section|see}}==== {{col|mul|𐅷|𐹾|𒑛|𒑞|𒑦}} cgphtnailg8pz6oc1kvvrpn9n60odjm niets 0 252008 2463532 2097755 2026-07-19T14:45:12Z Hiyuune 50834 2463532 wikitext text/x-wiki {{also|Niets}} =={{langname|nl}}== ==={{section|pron}}=== * {{IPA4|nl|/nits/}} * {{audio|nl|Nl-niets.ogg}} * {{hyphenation|nl|niets}} * {{rhymes|nl|its|s=1}} ==={{section|pronoun}}=== {{head|nl|Đại từ|cat2=Đại từ bất định}} # [[không|Không]] gì. #: {{ux|nl|Ze zijn gaan shoppen, maar ze hebben '''niets''' gekocht.|Họ đi mua sắm nhưng '''không''' mua '''gì'''.}} #: {{syn|nl|niks}} #: {{ant|nl|iets}} ===={{section|drv}}==== {{col|nl |niets nieuws onder de zon |nietsdoen |nietsnut |nietsontziend |nietsvermoedend |nietszeggend }} ==={{section|ana}}=== * {{l|nl|niest}} sspp442kmxfjgjynuqua749fmdl2cf0 z'n 0 252967 2463533 2097943 2026-07-19T14:46:24Z Hiyuune 50834 2463533 wikitext text/x-wiki {{also|zn|ZN|Zn|zN|zn.|z'n|-źń}} =={{langname|nl}}== ==={{section|pron}}=== * {{IPA4|nl|/zən/}} * {{audio|nl|Nl-z'n.ogg}} ==={{section|det}}=== {{head|nl|Từ hạn định}} # {{lb|nl|possessive}} {{contraction of|nl|zijn}} ===={{section|decl}}==== {{nl-personal pronouns}} ej1u3ihw2x9cb4452mijw89sdqxlfw3 allemaal 0 253024 2463534 2097639 2026-07-19T14:50:16Z Hiyuune 50834 2463534 wikitext text/x-wiki =={{langname|nl}}== ==={{section|pron}}=== * {{IPA4|nl|/ˈɑləˌmaːl/|[ˈɑləˌmaːɫ]|[ˌɑɫəˈmaːɫ]}} * {{audio|nl|Nl-allemaal.ogg}} * {{hyphenation|nl|al|le|maal}} ==={{section|pronoun}}=== {{head|nl|Đại từ|cat2=Đại từ bất định}} # [[cả|Cả]], [[hết]]. #: {{ux|nl|Is dat '''allemaal''' voor mij?|Cho tôi '''hết''' hả?}} ===={{section|desc}}==== * {{desc|af|almal}} * {{desc|brc|alma}} * {{desc|dcr|allemaal|alma|almael}} * {{desc|skw|alma}} * {{desc|srn|alamala|bor=1}} 70bkr3ylcliz6eu2uxyw3inoxaf716w mezelf 0 253555 2463690 2098019 2026-07-20T02:03:02Z Hiyuune 50834 2463690 wikitext text/x-wiki =={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-mezelf.ogg}} * {{IPA4|nl|/məˈzɛlf/}} ==={{section|pronoun}}=== {{head|nl|Đại từ}} # [[bản thân|Bản thân]] [[tôi]]. cp4wezeso62p6sr3mhcnjwkagbxx1vu zoiets 0 254563 2463747 2002167 2026-07-20T09:16:41Z Hiyuune 50834 2463747 wikitext text/x-wiki =={{langname|nl}}== ==={{section|alt}}=== * {{alt|nl|zooiets||obsolete}} * {{alt|nl|zoo-iets||obsolete}} ==={{section|etym}}=== {{univerbation|nl|zo|iets}}. ==={{section|pron}}=== * {{IPA4|nl|/zoːˈits/}} * {{audio|nl|Nl-zoiets.ogg}} * {{hyphenation|nl|zo|iets}} * {{rhymes|nl|its|s=2}} ==={{section|pronoun}}=== {{head|nl|Đại từ}} # [[gì|Gì]] đó [[như thế]]. #: {{ux|nl|'''Zoiets''' moois heb ik nog nooit gezien.|Tôi chưa thấy '''gì''' đẹp '''như thế''' bao giờ.}} #: {{ux|nl|'''Zoiets''' mag je niet zeggen.|Đừng nói câu '''như thế'''.}} ===={{section|desc}}==== * {{desc|jvd|soiets}} 61ts347bdlo7f7peicm7xyld3kqzxfx ꪙꪳ꪿ꪉ 0 260078 2463585 2463190 2026-07-19T16:09:30Z Hiyuune 50834 2463585 wikitext text/x-wiki =={{langname|twh}}== ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # {{altform|twh|ꪙꪳꪉꫀ}} =={{langname|blt}}== {{cardinalbox|blt|0|1|2||ꪎꪮꪉ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*nɯːŋᴮ}}. Cùng gốc với {{cog|th|หนึ่ง}}, {{cog|khb|ᦓᦹᧂᧈ}}, {{cog|shn|ၼိုင်ႈ}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=nưng}} # [[một|Một]]. ===={{section|syn}}==== * {{q|viết tắt}} {{l|blt|ꫜ}} 4awx1gq43eiytg3sog0a44dbx6q4k1y 2463625 2463585 2026-07-19T17:31:02Z Higashizakura 36666 /* Tiếng Thái Trắng */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463625 wikitext text/x-wiki =={{langname|twh}}== {{cardinalbox|twh|0|1|2||ꪎꪮꪉ|ord=}} ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*nɯːŋᴮ}}. ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # [[một|Một]]. =={{langname|blt}}== {{cardinalbox|blt|0|1|2||ꪎꪮꪉ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*nɯːŋᴮ}}. Cùng gốc với {{cog|th|หนึ่ง}}, {{cog|khb|ᦓᦹᧂᧈ}}, {{cog|shn|ၼိုင်ႈ}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=nưng}} # [[một|Một]]. ===={{section|syn}}==== * {{q|viết tắt}} {{l|blt|ꫜ}} fu0p8t8v3ia7v4k96rdrl1dnwdtxazp ꪎꪮꪉ 0 260082 2463591 2463186 2026-07-19T16:15:17Z Hiyuune 50834 2463591 wikitext text/x-wiki =={{langname|twh}}== ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*soːŋᴬ}}, từ {{der|twh|ltc|-}} {{ltc-l|雙}}. ==={{section|pron}}=== * {{IPA4|twh|/sɔŋ˨˨/}} ==={{section|num}}=== {{head|twh|Số từ}} # [[hai|Hai]]. ==={{section|ref}}=== * Hudak, T. J. (2008). ''William J. Gedney’s comparative Tai source book''. Honolulu: University of Hawai'i Press. =={{langname|blt}}== {{cardinalbox|blt|1|2|3|ꪙꪳ꪿ꪉ|ꪎꪱꪣ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*soːŋᴬ}}, từ {{der|blt|ltc|-}} {{ltc-l|雙}}. Cùng gốc với {{cog|th|สอง}}, {{cog|nod|ᩈᩬᨦ}}, {{cog|lo|ສອງ}}, {{cog|khb|ᦉᦸᧂ}}, {{cog|shn|သွင်}}, {{cog|tdd|ᥔᥩᥒᥴ}}, {{cog|aho|𑜏𑜨𑜂𑜫}}, {{cog|pcc|soongl}}, {{cog|za|song}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=song}} # [[hai|Hai]]. 1dj5toraldzxfbl3923gvf4suvhj2xt 2463629 2463591 2026-07-19T17:36:45Z Higashizakura 36666 2463629 wikitext text/x-wiki =={{langname|twh}}== ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*soːŋᴬ}}, từ {{der|twh|ltc|-}} {{ltc-l|雙}}. ==={{section|pron}}=== * {{IPA4|twh|/sɔŋ˨˨/}} ==={{section|num}}=== {{head|twh|Số từ|tr=xoong}} # [[hai|Hai]]. ==={{section|ref}}=== * Hudak, T. J. (2008). ''William J. Gedney’s comparative Tai source book''. Honolulu: University of Hawai'i Press. * {{R:Đỗ Thị Tấc, Hà Mạnh Phong}} =={{langname|blt}}== {{cardinalbox|blt|1|2|3|ꪙꪳ꪿ꪉ|ꪎꪱꪣ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*soːŋᴬ}}, từ {{der|blt|ltc|-}} {{ltc-l|雙}}. Cùng gốc với {{cog|th|สอง}}, {{cog|nod|ᩈᩬᨦ}}, {{cog|lo|ສອງ}}, {{cog|khb|ᦉᦸᧂ}}, {{cog|shn|သွင်}}, {{cog|tdd|ᥔᥩᥒᥴ}}, {{cog|aho|𑜏𑜨𑜂𑜫}}, {{cog|pcc|soongl}}, {{cog|za|song}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=sòng}} # [[hai|Hai]]. a3pkofgqtn6zwgxk2qkwgnw2970dclr 2463630 2463629 2026-07-19T17:37:21Z Higashizakura 36666 /* Tham khảo */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463630 wikitext text/x-wiki =={{langname|twh}}== ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*soːŋᴬ}}, từ {{der|twh|ltc|-}} {{ltc-l|雙}}. ==={{section|pron}}=== * {{IPA4|twh|/sɔŋ˨˨/}} ==={{section|num}}=== {{head|twh|Số từ|tr=xoong}} # [[hai|Hai]]. ==={{section|ref}}=== * Hudak, T. J. (2008). ''William J. Gedney’s comparative Tai source book''. Honolulu: University of Hawai'i Press. * {{R:Đỗ Thị Tấc, Hà Mạnh Phong|tr=872}} =={{langname|blt}}== {{cardinalbox|blt|1|2|3|ꪙꪳ꪿ꪉ|ꪎꪱꪣ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*soːŋᴬ}}, từ {{der|blt|ltc|-}} {{ltc-l|雙}}. Cùng gốc với {{cog|th|สอง}}, {{cog|nod|ᩈᩬᨦ}}, {{cog|lo|ສອງ}}, {{cog|khb|ᦉᦸᧂ}}, {{cog|shn|သွင်}}, {{cog|tdd|ᥔᥩᥒᥴ}}, {{cog|aho|𑜏𑜨𑜂𑜫}}, {{cog|pcc|soongl}}, {{cog|za|song}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=sòng}} # [[hai|Hai]]. 3xjwdwsknmjdcu7c9sus25gcjx9pwro ꪎꪱꪣ 0 260083 2463589 2463187 2026-07-19T16:13:12Z Hiyuune 50834 2463589 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|2|3|4|ꪎꪮꪉ|ꪎꪲ꪿|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*saːm||số ba}}, từ {{der|blt|ltc|-}} {{ltc-l|三|số ba|id=1}}. Cùng gốc với {{cog|th|สาม}}, {{cog|nod|ᩈᩣ᩠ᨾ}}, {{cog|lo|ສາມ}}, {{cog|khb|ᦉᦱᧄ}}, {{cog|shn|သၢမ်}}, {{cog|tdd|ᥔᥣᥛᥴ}}, {{cog|aho|𑜏𑜪}}, {{cog|pcc|saaml}}, {{cog|za|sam}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=sam}} # Số [[ba]]. m66snu1s1agscutx0itamcvyg3zybq2 2463628 2463589 2026-07-19T17:32:30Z Higashizakura 36666 /* Số từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463628 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|2|3|4|ꪎꪮꪉ|ꪎꪲ꪿|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*saːm||số ba}}, từ {{der|blt|ltc|-}} {{ltc-l|三|số ba|id=1}}. Cùng gốc với {{cog|th|สาม}}, {{cog|nod|ᩈᩣ᩠ᨾ}}, {{cog|lo|ສາມ}}, {{cog|khb|ᦉᦱᧄ}}, {{cog|shn|သၢမ်}}, {{cog|tdd|ᥔᥣᥛᥴ}}, {{cog|aho|𑜏𑜪}}, {{cog|pcc|saaml}}, {{cog|za|sam}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=sàm}} # Số [[ba]]. 0g4p5b3z4d5s5gfww1nr1tosznjrzua ꪎꪲ꪿ 0 260084 2463586 2463189 2026-07-19T16:12:09Z Hiyuune 50834 2463586 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|3|4|5|ꪎꪱꪣ|ꪬ꫁ꪱ|ord=}} ==={{section|alt}}=== * {{l|blt|ꪎꪲꫀ}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*siːᴮ||bốn}}, từ {{der|blt|ltc|-}} {{ltc-l|四|[[bốn]]}}, từ {{der|blt|sit-pro|*pV-lij||bốn}}. Cùng gốc với {{cog|th|สี่}}, {{cog|nod|ᩈᩦ᩵}}, {{cog|lo|ສີ່}}, {{cog|khb|ᦉᦲᧈ}}, {{cog|shn|သီႇ}}, {{cog|tdd|ᥔᥤᥱ}}, {{cog|aho|𑜏𑜣}}, {{cog|pcc|sis}}, {{cog|za|seiq}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=sí}} # [[bốn|Bốn]]. 7vcfcf4thpcqpvl41cez1bo4h26eeml ꪶꪬꪀ 0 260086 2463549 2463194 2026-07-19T15:15:11Z Hiyuune 50834 2463549 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|5|6|7|ꪬ꫁ꪱ|ꪹꪊꪸꪒ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{der|blt|tai-pro|*krokᴰ||sáu}}, từ {{der|blt|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|th|หก}}, {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|aho|𑜍𑜤𑜀𑜫}}, {{cog|pcc|rogt}}, {{cog|za|roek}} hoặc {{mention|za|loeg}}, {{cog|zhn|choak}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=hốc}} # [[sáu|Sáu]] ==={{section|ref}}=== <references/> qayj3phndijmtuxv7klhuj3o6kcsxe4 2463631 2463549 2026-07-19T17:37:54Z Higashizakura 36666 /* Số từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463631 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|5|6|7|ꪬ꫁ꪱ|ꪹꪊꪸꪒ|ord=}} ==={{section|etym}}=== Từ {{inh|blt|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{der|blt|tai-pro|*krokᴰ||sáu}}, từ {{der|blt|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|th|หก}}, {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|aho|𑜍𑜤𑜀𑜫}}, {{cog|pcc|rogt}}, {{cog|za|roek}} hoặc {{mention|za|loeg}}, {{cog|zhn|choak}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=hốk}} # [[sáu|Sáu]] ==={{section|ref}}=== <references/> 20lz457z71d5shhlb535cy4xy4u9bmw ꪹꪀ꫁ꪱ 0 260089 2463710 2463195 2026-07-20T03:24:27Z Hiyuune 50834 2463710 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|8|9|10|ꪵꪜꪒ|ꪎꪲꪚ|ord=}} ==={{ĐM|alt}}=== * {{l|blt|ꪹꪀꪱꫂ}} ==={{ĐM|etym}}=== Từ {{inh|blt|tai-pro|*kɤwꟲ||chín}}, từ {{der|blt|ltc|-}} {{ltc-l|九|chín}}, từ {{der|blt|och|-}} {{och-l|九}}, từ {{der|blt|sit-pro|*d/s-kəw}}. Cùng gốc với {{cog|th|เก้า}}, {{cog|nod|ᨠᩮᩢ᩶ᩣ}}, {{cog|lo|ເກົ້າ}}, {{cog|khb|ᦂᧁᧉ}}, {{cog|shn|ၵဝ်ႈ}}, {{cog|tdd|ᥐᥝᥲ}}, {{cog|aho|𑜀𑜧}}, {{cog|pcc|guz}}, {{cog|za|gouj}}, {{cog|skb|กู̂}}. ==={{ĐM|pron}}=== {{blt-pron}} ==={{ĐM|num}}=== {{head|blt|Số từ|tr=cảu}} # [[chín|Chín]]. =={{langname|tyr}}== ==={{ĐM|pron}}=== * {{IPA4|twh|/kaw˨˦ʔ/}} ==={{ĐM|num}}=== {{head|tyr|Số từ|tr=cảu}} # [[chín|Chín]]. buevh29qbnecrz68gekun41off7vp9g ꪎꪲꪚ 0 260090 2463709 2463188 2026-07-20T03:22:28Z Hiyuune 50834 2463709 wikitext text/x-wiki =={{langname|blt}}== {{cardinalbox|blt|9|10|11|ꪹꪀ꫁ꪱ||ord=}} ==={{section|etym}}=== Từ {{der|blt|ltc|-}} {{ltc-l|十|[[mười]]}}. Cùng gốc với {{cog|th|สิบ}}, {{cog|nod|ᩈᩥ᩠ᨷ}}, {{cog|lo|ສິບ}}, {{cog|khb|ᦉᦲᧇ}}, {{cog|shn|သိပ်း}}, {{cog|tdd|ᥔᥤᥙᥴ}}, {{cog|aho|𑜏𑜢𑜆𑜫}}, {{cog|pcc|xib}}, {{cog|za|cib}}, {{cog|skb|ซิ̄บ}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=síp}} # [[mười|Mười]]. lrap4nzx66g45n7nh9wu2xqxqg1ntm1 Thể loại:Mục từ tiếng Hausa 14 260982 2463518 2152171 2026-07-19T13:15:13Z Kelly zhrm 58416 2463518 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Danh từ tiếng Hausa 14 264034 2463519 2049651 2026-07-19T13:15:30Z Kelly zhrm 58416 2463519 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Động từ tiếng Hausa 14 264050 2463524 2049670 2026-07-19T13:21:30Z Kelly zhrm 58416 2463524 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Ailan 0 264054 2463522 2049691 2026-07-19T13:18:52Z Kelly zhrm 58416 2463522 wikitext text/x-wiki {{also|ailan}} =={{langname|en}}== ==={{ĐM|pr-noun}}=== {{en-proper noun|s}} # {{given name|en|nam|from=tiếng Do Thái|varof=Elon}}. =={{langname|ha}}== ==={{ĐM|etym}}=== Vay mượn từ {{bor|ha|en|Ireland}}. ==={{ĐM|pron}}=== * {{ha-IPA|ailàn}} ==={{ĐM|pr-noun}}=== {{head|ha|Danh từ riêng|head=Ailàn|g=f}} # {{place|ha|quốc gia|cont/châu Âu|t=Ireland}} jopc2849jjp0titszi0xb2n7uwj89h6 Birnin Kudu 0 264057 2463523 2049705 2026-07-19T13:20:51Z Kelly zhrm 58416 2463523 wikitext text/x-wiki =={{langname|ha}}== ==={{ĐM|pron}}=== * {{ha-IPA|bir̃nin kudù}} ==={{ĐM|pr-noun}}=== {{ha-proper noun|f|[[birni|Bir̃nin]] [[kudu|Kudù]]}} # {{place|ha|thị trấn|c/Nigeria|t={{w|Birnin Kudu}}}} flpqj7vfeu9jv7rrvjpkcnzbu961091 ꪭ꫁ꪮꪥ 0 264114 2463554 2463192 2026-07-19T15:26:42Z Hiyuune 50834 2463554 wikitext text/x-wiki =={{langname|blt}}== ==={{section|alt}}=== * {{l|blt|ꪭꪮꪥꫂ}} ==={{section|etym}}=== Từ {{inh|blt|tai-pro|*roːjꟲ|t=[[trăm]]}}. Cùng gốc với {{cog|th|ร้อย}}, {{cog|tts|ฮ่อย}}, {{cog|lo|ຮ້ອຍ}}, {{cog|khb|ᦣᦾᧉ}}, {{cog|shn|လွႆႉ}}. ==={{section|pron}}=== {{blt-pron}} ==={{section|num}}=== {{head|blt|Số từ|tr=ꞌhọi}} # [[trăm|Trăm]]. k5d7vsp50hs2ozfirrdkoje9e0ssdsg rogt 0 268399 2463552 2076970 2026-07-19T15:21:17Z Hiyuune 50834 2463552 wikitext text/x-wiki =={{langname|pcc}}== {{cardinalbox|pcc|5|6|7||xadt|ord=}} ==={{section|pron}}=== {{pcc-pron}} ==={{section|num}}=== {{head|pcc|Số từ}} # {{cln|pcc|Số đếm}} [[sáu|Sáu]]. e0q2paxrgp42sljyjov2rcnoypnsez8 xadt 0 268400 2463553 2077124 2026-07-19T15:22:53Z Hiyuune 50834 2463553 wikitext text/x-wiki =={{langname|pcc}}== {{cardinalbox|pcc|6|7|8||beedt|ord=}} ==={{section|pron}}=== {{pcc-pron}} ==={{section|num}}=== {{head|pcc|Số từ}} # {{cln|pcc|Số đếm}} [[bảy|Bảy]]. ebllkqlbg84xptlx0fvvtut0aj83o5n нэгэн 0 268456 2463737 2066179 2026-07-20T08:28:06Z Kelly zhrm 58416 2463737 wikitext text/x-wiki =={{langname|bua}}== {{cardinalbox|bua|0|1|2||хоёр|ord=}} ==={{ĐM|etym}}=== Từ {{inh|bua|xgn-pro|*nigen}}, {{mention|xgn-pro|*niken}}, so sánh với {{cog|mn|нэг}}, {{cog|xal|нэгн}}. ==={{ĐM|pron}}=== * {{IPA4|bua|/ne.ɡen/|[ne̝.ɡɤŋ]}} * {{hyph|bua|нэ|гэн}} ==={{ĐM|numeral}}=== {{head|bua|Số từ}} # [[một|Một]]. =={{langname|mn}}== ==={{ĐM|numeral}}=== {{mn-numeral-form|ᠨᠢᠭᠡᠨ}} # {{inflection of|mn|нэг||obl}} 3on5mpxyjkw86386whsk044n8g7nu45 Thành viên:TheHighFighter2/Trang con 3 2 269152 2463516 2461112 2026-07-19T13:04:15Z TheHighFighter2 42988 2463516 wikitext text/x-wiki <div style="text-align: center; font-size: 24px; font-weight: bold;"> Danh Sách Mục Từ Tiếng Việt Còn Thiếu </div> ==A, Ă, Â== [[AI tạo sinh]]; [[áo gấm về làng]]; [[áo giao lĩnh]]; [[anh em cây khế]]; [[áo tràng vạt]]; [[áo tràng]]; [[ăn của rừng rưng rưng nước mắt]]; [[ăn không nên đọi, nói không nên lời]]; [[ăn không ngon, ngủ không yên]]; [[ăn ngon ngủ kĩ]]/[[ăn ngon ngủ kỹ]]; [[ăn ngon ngủ yên]]; [[ăn thùng uống vại]]; ==B== [[ba mươi chưa phải là Tết]]; [[bề mặt tấn công]]; [[bỉ vỏ]]; [[bói Kiều]]; [[bồ côi bồ cút]]; [[bổ báo]]; [[bời rời]]; [[bụng ỏng đít beo]]; ==C== [[ca nương]]; [[ca-pi-ten]]; [[cá sấu lên bờ]]; [[cha mẹ sinh con, trời sinh tính]]; [[cha nó lú, chú nó khôn]]; [[chảy máu chất xám]]; [[chém cha không bằng pha tiếng]]; [[chế độ máy bay]]; [[chị em cây khế]]; [[chim Lạc]]; [[chó cỏ]]; [[chửi cha không bằng pha tiếng]]; [[cưỡng gian]]; ==D, Đ== [[di biến động]]; [[đa đảng]]; [[đất lành chim đỗ, đất ngỗ chim bay]]; [[đất lâm nghiệp]]; [[đầu buồi]]; [[đầu tro mặt muội]]; [[đầu trời cuối đất]]; [[đi B]]; [[điệp giấy]]; [[đồ bơi]]; [[đu càng]]; ==E, Ê== ==G== ==H== [[hậu thuộc địa]]; [[hậu thực dân]]; [[học máy]]; ==I== ==K== [[khét nắng]]; ==L== [[lòng se điếu]]/[[lòng xe điếu]]; ==M== [[mã đáo thành công]]; [[máy bay bà già]]; [[móc rách]]; [[mới cóng]]/[[mới coóng]]; ==N== [[não bộ]]; [[ngựa cu]]; [[nhất quỷ nhì ma, thứ ba học trò]]; ==O, Ô, Ơ== ==P== [[phi công trẻ lái máy bay bà già]]; [[phong ba bão táp không bằng ngữ pháp Việt Nam]]; ==Q== [[quần sinh]]; ==R== ==S== ==T== [[tiểu mộc]]; [[tình tệ]]; [[trò Kiều]]; ==U, Ư== [[u nguyên bào thần kinh đệm]]; ==V== [[Việt gian]]; [[Việt hóa]]/[[Việt hoá]]; [[Việt Nam hóa]]/[[Việt Nam hoá]]; [[Việt phục]]; ==X== [[xăng-căng]]/[[xăng căng]]; [[xanh lá]]; [[xanh lục]]; [[xanh nước biển]]; [[xanh xảnh]]; [[xăm hường]]; [[xuntan]]; [[xúp-lê]]/[[xúp lê]]; ==Y== b7p8bmenskppsxzj6go3qll3nyv4u30 Mô đun:languages/data/3/c 828 272284 2463728 2401392 2026-07-20T08:14:47Z Lcsnes 40261 2463728 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["caa"] = { "tiếng Ch'orti'", 35177, "myn", "Latn", "Tiếng Ch'orti'", "Ch'orti'", } m["cab"] = { "tiếng Garifuna", 35490, "awd-taa", "Latn", "Tiếng Garifuna", "Garifuna", ancestors = "crb", } m["cac"] = { "Chuj", 35233, "myn", "Latn", } m["cad"] = { "Caddo", 56756, "cdd", "Latn", } m["cae"] = { "tiếng Laalaa", 35564, "alv-cng", "Latn", "Tiếng Laalaa", "Laalaa", } m["caf"] = { "tiếng Carrier Nam", 12953426, "ath-nor", "Latn, Cans", "Tiếng Carrier Nam", "Carrier Nam", } m["cag"] = { "tiếng Nivaclé", 3182557, "sai-mtc", "Latn", "Tiếng Nivaclé", "Nivaclé", } m["cah"] = { "Cahuarano", 2933175, "sai-zap", "Latn", } m["caj"] = { "Chané", 56721, "awd", "Latn", } m["cak"] = { "tiếng Kaqchikel", 35115, "myn", "Latn", "Tiếng Kaqchikel", "Kaqchikel", } m["cal"] = { "Carolinian", 28427, "poz-mic", "Latn", } m["cam"] = { "Cemuhî", 3009690, "poz-cln", "Latn", } m["can"] = { "Chambri", 5069707, "paa-lsp", "Latn", } m["cao"] = { "Chácobo", 2591202, "sai-pan", "Latn", } m["cap"] = { "Chipaya", 35235, "sai-ucp", "Latn", } m["caq"] = { "tiếng Nicobar Car", 35156, "aav-nic", "Latn, Deva", "Tiếng Nicobar Car", "Nicobar Car", } m["car"] = { "tiếng Kari'na", 56611, "sai-gui", "Latn", "Tiếng Kari'na", "Kari'na", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. "`" .. "'%-%s"}, entry_name = { remove_diacritics = c.acute, from = {"â", "ê", "î", "ô", "û", "ŷ"}, to = {"à", "è", "ì", "ò", "ù", "ỳ"} }, } m["cas"] = { "Tsimané", 35950, "qfa-iso", "Latn", } m["cav"] = { "Cavineña", 524102, "sai-tac", "Latn", } m["caw"] = { "Callawalla", 266417, "qfa-mix", "Latn", } m["cax"] = { "Chiquitano", 1844993, "qfa-iso", "Latn", } m["cay"] = { "tiếng Cayuga", 32967, "iro-nor", "Latn", "Tiếng Cayuga", "Cayuga", } m["caz"] = { "Canichana", 2936374, "qfa-iso", "Latn", } m["cbb"] = { "Cabiyarí", 3450660, "awd-nwk", "Latn", } m["cbc"] = { "Carapana", 924405, "sai-tuc", "Latn", } m["cbd"] = { "Carijona", 3446655, "sai-tar", "Latn", } m["cbg"] = { "Chimila", 2963680, "cba", "Latn", } m["cbi"] = { "tiếng Chachi", 2591329, "sai-bar", "Latn", "Tiếng Chachi", "Chachi", } m["cbj"] = { "Ede Cabe", 33112829, "alv-ede", "Latn", } m["cbk"] = { "tiếng Chavacano", 33281, "crp", "Latn", "Tiếng Chavacano", "Chavacano", ancestors = "es", entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer}}, sort_key = { Latn = { from = {"ch", "ll", "ñ", "r"}, to = {"c" .. p[1], "l" .. p[1], "n" .. p[1], "r" .. p[1]} }, }, standardChars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnÑñOoPpQqRrSsTtUuVvWwXxYyZz", c.punc }, } m["cbl"] = { "Bualkhaw Chin", 9229830, "tbq-kuk", "Latn", } m["cbn"] = { "tiếng Nyah Kur", 116849, "mkh-mnc", "Thai", "Tiếng Nyah Kur", "Nyah Kur", ancestors = "omx", sort_key = "Thai-sortkey", } m["cbo"] = { "Izora", 3915454, "nic-jer", "Latn", } m["cbq"] = { "Shuba", nil, "nic-knj", "Latn", ancestors = "lan", } m["cbr"] = { "Cashibo-Cacataibo", 5359560, "sai-pan", "Latn", } m["cbs"] = { "Cashinahua", 2591230, "sai-pan", "Latn", } m["cbt"] = { "Chayahuita", 1526525, "sai-cah", "Latn", } m["cbu"] = { "Candoshi-Shapra", 642843, "qfa-iso", "Latn", } m["cbv"] = { "Cacua", 3192052, "sai-nad", "Latn", ancestors = "mbr", } m["cbw"] = { "Kinabalian", 6410324, "phi", "Latn", } m["cby"] = { "Carabayo", 3441762, "sai-tyu", "Latn", } m["cca"] = { "Cauca", 5054242, "sai-chc", "Latn", } m["ccc"] = { "tiếng Chamicuro", 2155119, "awd", "Latn", "Tiếng Chamicuro", "Chamicuro", } m["ccd"] = { "Cafundó", 3331506, "roa-ibe", "Latn", ancestors = "pt", } m["cce"] = { "Chopi", 3437616, "bnt-bso", "Latn", } m["ccg"] = { "Chamba Daka", 33120805, "nic-dak", "Latn", } m["cch"] = { "Atsam", 34794, "nic-kne", "Latn", } m["ccj"] = { "Kasanga", 35542, "alv-nyn", "Latn", } m["ccl"] = { "Cutchi-Swahili", 5196729, "crp", "Latn", ancestors = "sw", } m["ccm"] = { "Malaccan Creole Malay", 12636092, "crp", "Latn", ancestors = "ms", } m["cco"] = { "Comaltepec Chinantec", 2963735, "omq-chi", "Latn", } m["ccp"] = { "tiếng Chakma", 32952, "inc-eas", "Cakm, Beng, Latn", "Tiếng Chakma", "Chakma", ancestors = "inc-obn", translit = { Cakm = "Cakm-translit", --Beng = "Beng-translit", }, } m["ccr"] = { "Cacaopera", 3438338, "nai-min", "Latn", } m["cda"] = { "tiếng Trác Ni", 2964447, "sit-tib", "Tibt", "Tiếng Trác Ni", "Trác Ni", translit = "Tibt-translit", override_translit = true, display_text = s["Tibt-displaytext"], entry_name = s["Tibt-entryname"], sort_key = "Tibt-sortkey", } m["cde"] = { "tiếng Chenchu", 32981, "dra-tel", "Telu", "Tiếng Chenchu", "Chenchu", translit = "te-translit", } m["cdf"] = { "tiếng Chiru", 5102016, "tbq-kuk", "Latn, Beng", "Tiếng Chiru", "Chiru", } m["cdh"] = { "tiếng Chamba", 12953424, "him", "Deva, Takr", "Tiếng Chamba", "Chamba", translit = {Deva = "hi-translit"}, } m["cdi"] = { "tiếng Chodri", 5103788, "inc-bhi", "Gujr", "Tiếng Chodri", "Chodri", } m["cdj"] = { "tiếng Churah", 12629039, "him", "Deva, Takr", "Tiếng Churah", "Churah", translit = {Deva = "hi-translit"}, } m["cdm"] = { "tiếng Chepang", 5091700, "sit-gma", "Deva", "Tiếng Chepang", "Chepang", } m["cdn"] = { "Chaudangsi", 5088056, "sit-alm", } m["cdo"] = { "tiếng Mân Đông", 36455, "zhx-com", "Hants", "Tiếng Mân Đông", "Mân Đông", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", } m["cdr"] = { "Cinda-Regi-Tiyal", 35596, "nic-kmk", "Latn", } m["cds"] = { "Chadian Sign Language", 10322099, "sgn", "Latn", -- when documented } m["cdy"] = { "tiếng Trà Động", 926742, "qfa-kms", } m["cdz"] = { "tiếng Koda", 6425038, "mun", "Beng", "Tiếng Koda", "Koda", } m["cea"] = { "Lower Chehalis", 6693377, "sal", "Latn", } m["ceb"] = { "tiếng Cebu", 33239, "phi", "Latn, Tglg", "Tiếng Cebu", "Cebu", translit = { Tglg = "ceb-translit" }, override_translit = true, entry_name = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ } }, standardChars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy", c.punc }, sort_key = {Latn = "tl-sortkey"}, } m["ceg"] = { "Chamacoco", 3436637, "sai-zam", "Latn", } m["cen"] = { "Cen", 12628777, "nic-plc", "Latn", ancestors = "izr", } m["cet"] = { "Centúúm", 33608, "qfa-iso", "Latn", } m["cfa"] = { "Dijim-Bwilim", 3438350, "alv-wjk", "Latn", } m["cey"] = { "tiếng Chin Ekai", 62603115, "tbq-kuk", "Mymr", "Tiếng Chin Ekai", "Chin Ekai", } m["cfd"] = { "Cara", 35048, "nic-beo", "Latn", } m["cfg"] = { "Como Karim", 35304, "nic-jkn", "Latn", } m["cfm"] = { "tiếng Chin Falam", 56815, "tbq-kuk", "Beng, Latn", "Tiếng Chin Falam", "Chin Falam", } m["cga"] = { "Changriwa", 5072105, "paa-yua", "Latn", } m["cgc"] = { "tiếng Kagayanen", 6346422, "mno", "Latn", "Tiếng Kagayanen", "Kagayanen", } m["cgg"] = { "Rukiga", 3270727, "bnt-nyg", "Latn", } m["cgk"] = { "tiếng Chocangacakha", 56604, "sit-tib", "Tibt", "Tiếng Chocangacakha", "Chocangacakha", ancestors = "xct", translit = "Tibt-translit", override_translit = true, display_text = s["Tibt-displaytext"], entry_name = s["Tibt-entryname"], sort_key = "Tibt-sortkey", } m["chb"] = { "tiếng Chibcha", 2356431, "cba", nil, "Tiếng Chibcha", "Chibcha", } m["chc"] = { "tiếng Catawba", 5051602, "nai-cat", "Latn", "Tiếng Catawba", "Catawba", } m["chd"] = { "Highland Oaxaca Chontal", 2964457, "nai-tqn", "Latn", } m["chf"] = { "Tabasco Chontal", 35175, "myn", "Latn", } m["chg"] = { "tiếng Chagatai", 36831, "trk-kar", "Arab", "Tiếng Chagatai", "Chagatai", ancestors = "zkh", entry_name = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["chh"] = { "tiếng Chinook", 6693380, "nai-ckn", "Latn", "Tiếng Chinook", "Chinook", } m["chj"] = { "tiếng Chinantec Ojitlán", 5100110, "omq-chi", "Latn", "Tiếng Chinantec Ojitlán", "Chinantec Ojitlán", } m["chk"] = { "tiếng Chuuk", 33161, "poz-mic", "Latn", "Tiếng Chuuk", "Chuuk", } m["chl"] = { "tiếng Cahuilla", 56438, "azc-cup", "Latn", "Tiếng Cahuilla", "Cahuilla", entry_name = {remove_diacritics = c.acute .. c.macron}, } -- chm "Mari" is not recognized as a language, but it is a family code m["chn"] = { "biệt ngữ Chinook", 35173, "crp", "Latn, Dupl", "Biệt ngữ Chinook", "biệt ngữ Chinook", ancestors = "chh, nuk", } m["cho"] = { "tiếng Choctaw", 32979, "nai-mus", "Latn", "Tiếng Choctaw", "Choctaw", sort_key = {remove_diacritics = c.macronbelow .. "-"}, entry_name = {remove_diacritics = c.acute .. c.dotbelow}, } m["chp"] = { "tiếng Denesuline", 27692, "ath-nor", "Latn, Cans", "Tiếng Denesuline", "Denesuline", } m["chq"] = { "Quiotepec Chinantec", 5758709, "omq-chi", "Latn", } m["chr"] = { "tiếng Cherokee", 33388, "iro", "Cher", "Tiếng Cherokee", "Cherokee", translit = "Cher-translit", } m["cht"] = { "Cholón", 2591243, nil, "Latn", } m["chw"] = { "Chuabo", 5118412, "bnt-mak", "Latn", } m["chx"] = { "tiếng Chantyal", 4926344, "sit-tam", "Deva", "Tiếng Chantyal", "Chantyal", } m["chy"] = { "tiếng Cheyenne", 33265, "alg", "Latn", "Tiếng Cheyenne", "Cheyenne", sort_key = {remove_diacritics = c.grave .. c.acute .. c.macron .. c.dotabove .. "-"}, standardChars = "AaÁáÀàĀāȦȧEeÉéÈèĒēĖėHhKkMmNnOoÓóÒòŌōȮȯPpSsŠšTtVvXx" .. c.punc, --umlaut and circumflex not allowed } m["chz"] = { "tiếng Chinantec Ozumacín", 5100111, "omq-chi", "Latn", "Tiếng Chinantec Ozumacín", "Chinantec Ozumacín", entry_name = {remove_diacritics = "ˈˊˉꜗꜘꜙꜚ˜ˋ"}, } m["cia"] = { "tiếng Cia-Cia", 35284, "poz-mun", "Hang, Latn, Arab", "Tiếng Cia-Cia", "Cia-Cia" } m["cib"] = { "Ci Gbe", 12952445, "alv-gbe", "Latn", } m["cic"] = { "tiếng Chickasaw", 33192, "nai-mus", "Latn", "Tiếng Chickasaw", "Chickasaw", } m["cid"] = { "Chimariko", 1294251, "qfa-iso", "Latn", } m["cie"] = { "Cineni", 56243, "cdc-cbm", "Latn", } m["cih"] = { "tiếng Chinal", 11855245, "inc", "Deva, Takr", "Tiếng Chinal", "Chinal", ancestors = "sa", } m["cik"] = { "Chitkuli Kinnauri", 15615982, "sit-kin", } m["cim"] = { "tiếng Cimbri", 37053, "gmw-hgm", "Latn", "Tiếng Cimbri", "Cimbri", ancestors = "bar", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove .. c.caron}, } m["cin"] = { "Cinta Larga", 5121095, "tup", "Latn", } m["cip"] = { "Chiapanec", 3364475, "omq", "Latn", } m["cir"] = { "Tiri", 7862281, "poz-cln", "Latn", } m["ciy"] = { "tiếng Chaima", 12628867, "sai-ven", "Latn", "Tiếng Chaima", "Chaima", } m["cja"] = { "tiếng Chăm Tây", 12645578, "cmc", "Latn, Arab, Khmr", -- Western Cham script is not yet available. Also, Arabic script is missing some glyphs. "Tiếng Chăm Tây", "Chăm Tây", } m["cje"] = { "tiếng Chu Ru", 2967321, "cmc", "Latn", "Tiếng Chu Ru", "Chu Ru", } m["cjh"] = { "Upper Chehalis", 2962074, "sal", "Latn", } m["cji"] = { "tiếng Chamalal", 56567, "cau-and", "Cyrl", "Tiếng Chamalal", "Chamalal", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["cjk"] = { "Chokwe", 2422065, "bnt-clu", "Latn", } m["cjm"] = { "tiếng Chăm Đông", 2948019, "cmc", "Latn, Cham", "Tiếng Chăm Đông", "Chăm Đông", } m["cjn"] = { "Chenapian", 5091044, "paa-spk", "Latn", } m["cjo"] = { "tiếng Ashéninka Pajonal", 3450481, "awd", "Latn", } m["cjp"] = { "Cabécar", 27878, "cba", "Latn", } m["cjs"] = { "tiếng Shor", 34139, "trk-ssb", "Cyrl", "Tiếng Shor", "Shor", translit = "cjs-translit", } m["cjv"] = { "Chuave", 5115226, "ngf", "Latn", } m["cjy"] = { "tiếng Tấn", 56479, "zhx", "Hants", "Tiếng Tấn", "Tấn", ancestors = "ltc", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", } m["ckb"] = { "tiếng Soran", 36811, "ku", "ku-Arab", "Tiếng Soran", "Soran", translit = "ckb-translit", entry_name = {remove_diacritics = c.kasra .. c.sukun}, } m["ckh"] = { "tiếng Chak", 12628870, "sit-luu", "Latn, Mymr", "Tiếng Chak", "Chak", ancestors = "kdv", } m["ckl"] = { "Cibak", 56279, "cdc-cbm", "Latn", } m["ckn"] = { "Kaang Chin", 6343432, "tbq-kuk", "Latn", } m["cko"] = { "Anufo", 34845, "alv-ctn", "Latn", } m["ckq"] = { "Kajakse", 3440422, "cdc-est", "Latn", } m["ckr"] = { "Kairak", 3503002, "paa-bng", "Latn", } m["cks"] = { "Tayo", 1133089, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["ckt"] = { "tiếng Chukot", 33170, "qfa-ckn", "Cyrl", "Tiếng Chukot", "Chukot", entry_name = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { from = {"ё", "ӄ", "ԓ", "ӈ"}, to = {"е" .. p[1], "к" .. p[1], "л" .. p[1], "н" .. p[1]} }, } m["cku"] = { "Koasati", 35162, "nai-mus", "Latn", } m["ckv"] = { "tiếng Kavalan", 716627, "map", "Latn", "Tiếng Kavalan", "Kavalan", } m["ckx"] = { "Caka", 5018037, "nic-tvc", "Latn", } m["cky"] = { "Cakfem-Mushere", 3441199, "cdc-wst", "Latn", } m["ckz"] = { "Cakchiquel-Quiché Mixed Language", 5054550, "myn", "Latn", } m["cla"] = { "Ron", 3440432, "cdc-wst", "Latn", } m["clc"] = { "tiếng Chilcotin", 28535, "ath-nor", "Latn", "Tiếng Chilcotin", "Chilcotin", } m["cld"] = { "tiếng Tân Aram Chaldea", 33236, "sem-are", "Syrc", "Tiếng Tân Aram Chaldea", "Tân Aram Chaldea", entry_name = "Syrc-entryname", } m["cle"] = { "Lealao Chinantec", 6509365, "omq-chi", "Latn", } m["clh"] = { "Chilisso", 3250629, "inc-koh", } m["cli"] = { "Chakali", 35206, "nic-gnw", "Latn", } m["clj"] = { "Laitu Chin", 6474196, "tbq-kuk", } m["clk"] = { "tiếng Idu", 56412, "sit-gsi", "Tibt, Deva, Latn", "Tiếng Idu", "Idu", translit = {Tibt = "Tibt-translit"}, override_translit = true, display_text = {Tibt = s["Tibt-displaytext"]}, entry_name = {Tibt = s["Tibt-entryname"], Latn = {remove_diacritics = c.grave .. c.acute .. c.macron}}, sort_key = {Tibt = "Tibt-sortkey"}, } m["cll"] = { "Chala", 35190, "nic-gne", "Latn", } m["clm"] = { "tiếng Klallam", 33404, "sal", "Latn", "Tiếng Klallam", "Klallam", } m["clo"] = { "Lowland Oaxaca Chontal", 2964450, "nai-tqn", "Latn", } m["clt"] = { "tiếng Lutuv", 6502107, "tbq-kuk", "Latn", "Tiếng Lutuv", "Lutuv", } m["clu"] = { "Caluyanun", 32964, "phi", "Latn", } m["clw"] = { "tiếng Chulym", 33125, "trk-ssb", "Latn, Cyrl", "Tiếng Chulym", "Chulym", } m["cly"] = { "Eastern Highland Chatino", 12642078, "omq-cha", "Latn", } m["cma"] = { "tiếng Mạ", 12953680, "mkh-ban", "Latn", "Tiếng Mạ", "Mạ", } m["cme"] = { "Cerma", 35074, "nic-gur", "Latn", } m["cmg"] = { "tiếng Mông Cổ cổ điển", 5128303, "xgn-cen", "Mong, Soyo, Zanb", "Tiếng Mông Cổ cổ điển", "Mông Cổ cổ điển", translit = {Mong = "Mong-translit"}, display_text = {Mong = s["Mong-displaytext"]}, entry_name = {Mong = s["Mong-entryname"]}, } m["cmi"] = { "tiếng Emberá-Chamí", 3052042, "sai-chc", "Latn", "Tiếng Emberá-Chamí", "Emberá-Chamí", } m["cml"] = { "Campalagian", 5027893, "poz-ssw", "Latn", } m["cmm"] = { "Michigamea", 12636809, "sio-msv", "Latn", } m["cmn"] = { "tiếng Quan Thoại", 9192, "zhx-man", "Hants, Latn, Bopo", "Tiếng Quan Thoại", "Quan Thoại", wikimedia_codes = "zh", generate_forms = "zh-generateforms", translit = { Hani = "zh-translit", Bopo = "zh-translit", }, sort_key = { Hani = "Hani-sortkey", Latn = { from = { -- Sort terms with tone numbers immediately after equivalent terms with diacritics. "[aeiouv][" .. c.circ .. c.diaer .. "]?[nr]?g?[0-5]", -- Add temporary breaks between syllables. "([aeiouvmn][" .. c.circ .. c.diaer .. "]?[" .. c.macron .. c.acute .. c.caron .. c.grave .. "]?n?ŋ?g?r?)([bpmfdtnlgkhjqxzcsywrv']h?[aeiouvmn ])", p[1] .. "([ngr])$", p[1] .. "([ngr][%s%-'" .. p[1] .. "])", -- Substitute diacritics for syllable-final tone numbers, and add tone 0 where necessary. c.macron, c.acute, c.caron, c.grave, "([1-4])([^%s%p" .. p[1] .. "]+)", "([^0-5])%f[%z%s%p" .. p[1] .. "]", -- Substitute "v" shorthand for "ü" for a temporary placeholder, so that the (very rare) "v" initial is not affected by the later shorthand substitutions. "([^ " .. p[1] .. "])v", -- Remove temporary breaks. p[1], -- Substitute shorthands for full forms, and sort them immediately after equivalent terms. "%S*[csz]" .. c.circ .. "%S*", "%S*[ŋ" .. p[2] .. "]%S*", "ĉ", "ŝ", "ŋ", p[2], "ẑ", -- "ê" comes after "e", "ü" comes after "u" and apostrophes are removed (as their function is replaced by tone numbers). "[" .. c.circ .. c.diaer .. "]", "'", -- Sort numbered tone 5 after tone 0. "5!" }, to = { "%0!", "%1" .. p[1] .. "%2", "%1", "%1", "1", "2", "3", "4", "%2%1", "%10", "%1" .. p[2], "", "%0\"", "%0\"", "ch", "sh", "ng", "ü", "zh", p[1], "", "0!!" } }, }, } m["cmo"] = { "tiếng M'Nông Trung", 33369881, "mkh-ban", "Latn, Khmr", "Tiếng M'Nông Trung", "M'Nông Trung", } m["cmr"] = { "Mro Chin", 16889978, "tbq-kuk", } m["cms"] = { "tiếng Messapio", 36383, "ine", "Latn, Ital, Grek", "Tiếng Messapio", "Messapio", translit = {Ital = "Ital-translit"}, } m["cmt"] = { "Camtho", 10441336, "crp", "Latn", ancestors = "fly, zu" } m["cna"] = { "tiếng Khương Đường", 12952322, "sit-lab", "Tibt", "Tiếng Khương Đường", "Khương Đường", translit = "Tibt-translit", override_translit = true, display_text = s["Tibt-displaytext"], entry_name = s["Tibt-entryname"], sort_key = "Tibt-sortkey", } m["cnb"] = { "Chinbon Chin", 12952327, "tbq-kuk", } m["cnc"] = { "tiếng Cống", 5202780, "tbq-bis", "Latn", "Tiếng Cống", "Cống", } m["cng"] = { "tiếng Khương Bắc", 56559, "sit-qia", "Latn", "Tiếng Khương Bắc", "Khương Bắc", } m["cnh"] = { "tiếng Chin Hakha", 3250286, "tbq-kuk", "Latn, Mymr", "Tiếng Chin Hakha", "Chin Hakha", } m["cni"] = { "Asháninka", 3437230, "awd", "Latn", } m["cnk"] = { "Khumi Chin", 56308, "tbq-kuk", } m["cnl"] = { "Lalana Chinantec", 12953437, "omq-chi", "Latn", } m["cno"] = { "Con", 3440883, "mkh-pal", } m["cnp"] = { "Northern Pinghua", 84302463, "zhx-pin", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["cns"] = { "Central Asmat", 11732048, "ngf", "Latn", } m["cnt"] = { "Tepetotutla Chinantec", 5100113, "omq-chi", "Latn", } m["cnu"] = { "tiếng Chenoua", 33276, "ber", "Latn, Tfng", "Tiếng Chenoua", "Chenoua", translit = {Tfng = "Tfng-translit"}, } m["cnw"] = { "Ngawn Chin", 6583675, "tbq-kuk", } m["cnx"] = { "Middle Cornish", 12642603, "cel-brs", "Latn", ancestors = "oco", } m["coa"] = { "Cocos Islands Malay", 3441699, "crp", "Latn", ancestors = "ms", } m["cob"] = { "Chicomuceltec", 3307204, "myn", "Latn", } m["coc"] = { "Cocopa", 33044, "nai-yuc", "Latn", } m["cod"] = { "tiếng Cocama", 33317, "tup", "Latn", "Tiếng Cocama", "Cocama", } m["coe"] = { "Koreguaje", 3198924, "sai-tuc", "Latn", } m["cof"] = { "Tsafiki", 2567055, "sai-bar", "Latn", } m["cog"] = { "tiếng Chong", 3914630, "mkh-pea", "Thai, Khmr", "Tiếng Chong", "Chong", sort_key = {Thai = "Thai-sortkey"}, } m["coh"] = { "Chichonyi-Chidzihana-Chikauma", 12629011, "bnt-mij", "Latn", } m["coj"] = { "tiếng Cochimi", 3915551, "nai-yuc", "Latn", "Tiếng Cochimi", "Cochimi", } m["cok"] = { "Santa Teresa Cora", 12641754, "azc", "Latn", } m["col"] = { "Columbia-Wenatchi", 3324744, "sal", "Latn", } m["com"] = { "tiếng Comanche", 32972, "azc-num", "Latn", "Tiếng Comanche", "Comanche", } m["con"] = { "tiếng Cofán", 2669254, "qfa-iso", "Latn", "Tiếng Cofán", "Cofán", } m["coo"] = { "tiếng Comox", 13583746, "sal", "Latn", "Tiếng Comox", "Comox", } m["cop"] = { "tiếng Copt", 36155, "egx", "Copt", "Tiếng Copt", "Copt", translit = "Copt-translit", ancestors = "egx-dem", entry_name = {remove_diacritics = c.grave .. c.macron .. c.overline .. c.diaer .. "ˋ"}, sort_key = "cop-sortkey", } m["coq"] = { "Coquille", 12953452, "ath-pco", "Latn", } m["cot"] = { "Caquinte", 3915557, "awd", "Latn", } m["cou"] = { "Wamey", 36935, "alv-ten", "Latn", } m["cov"] = { "Cao Miao", 2936935, "qfa-tak", } m["cow"] = { "tiếng Cowlitz", 3001877, "sal", "Latn", "Tiếng Cowlitz", "Cowlitz", } m["cox"] = { "Nanti", 15342275, "awd", "Latn", } m["coy"] = { "Coyaima", 56450, "sai-car", "Latn", } m["coz"] = { "Chochotec", 2964262, "omq-pop", "Latn", } m["cpa"] = { "Palantla Chinantec", 5100112, "omq-chi", "Latn", } m["cpb"] = { "Ucayali-Yurúa Ashéninka", 3501858, "awd", "Latn", } m["cpc"] = { "Ajyíninka Apurucayali", 3327405, "awd", "Latn", } m["cpg"] = { "tiếng Hy Lạp Cappadocia", 853414, "grk", "Grek, fa-Arab", "Tiếng Hy Lạp Cappadocia", "Hy Lạp Cappadocia", ancestors = "gkm", translit = {Grek = "el-translit"}, entry_name = {Grek = {remove_diacritics = c.caron .. c.diaerbelow .. c.brevebelow}}, sort_key = {Grek = s["Grek-sortkey"]}, } m["cpi"] = { "Chinese Pidgin English", 3435078, "crp", "Latn, Hant", ancestors = "en", sort_key = {Hant = "Hani-sortkey"}, } m["cpn"] = { "Cherepon", 35181, "alv-gng", "Latn", } m["cpo"] = { "Kpee", 6435722, "dmn-jje", } m["cps"] = { "Capiznon", 2937525, "phi", "Latn", } m["cpu"] = { "Pichis Ashéninka", 7190661, "awd", "Latn", } m["cpx"] = { "tiếng Phổ Hiền", 56583, "zhx-com", "Hants", "Tiếng Phổ Hiền", "Phổ Hiền", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["cpy"] = { "South Ucayali Ashéninka", 3501868, "awd", "Latn", } m["cqd"] = { "Chuanqiandian Cluster Miao", 3307894, "hmn", "Latn, Plrd", } m["cra"] = { "Chara", 5073694, "omv", "Latn", } m["crb"] = { "Kalinago", 3450735, "awd-taa", "Latn", } m["crc"] = { "Lonwolwol", 3259216, "poz-oce", "Latn", } m["crd"] = { "tiếng Coeur d'Alene", 32915, "sal", "Latn", "Tiếng Coeur d'Alene", "Coeur d'Alene", } m["crf"] = { "Caramanta", 3504195, "sai-chc", "Latn", } m["crg"] = { "Michif", 13315, "qfa-mix", "Latn", ancestors = "cr, fr", } m["crh"] = { "tiếng Tatar Crưm", 33357, "trk-kcu", "Latn, Cyrl, Arab", "Tiếng Tatar Crưm", "Tatar Crưm", dotted_dotless_i = true, sort_key = { Latn = { from = { "[ıi]" .. c.breve, -- Convert ĭ into PUA so that the decomposed form does not get caught by the next step. Also cover decomposed forms with ı and i, as decomposed Ĭ is converted to ı + ̆ due to the dotted dotless I logic). "i", -- Ensure "i" comes after "ı". "â", "ç", "ğ", "ı", p[3], "ñ", "ö", "ş", "ü" }, to = { p[3], "i" .. p[1], "a", "c" .. p[1], "g" .. p[1], "i", "i" .. p[2], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], } }, Cyrl = { from = {"гъ", "ё", "къ", "нъ", "дж"}, to = {"г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "ч" .. p[1]} }, }, } m["cri"] = { "Sãotomense", 36536, "crp", "Latn", ancestors = "pt", } m["crj"] = { "tiếng Cree Đông Nam", 12953464, "alg", "Latn, Cans", "Tiếng Cree Đông Nam", "Cree Đông Nam", ancestors = "cr", translit = "cr-translit", } m["crk"] = { "tiếng Cree đồng bằng", 56699, "alg", "Cans, Latn", "Tiếng Cree đồng bằng", "Cree đồng bằng", ancestors = "cr", } m["crl"] = { "tiếng Cree Đông Bắc", 12642195, "alg", "Cans", "Tiếng Cree Đông Bắc", "Cree Đông Bắc", ancestors = "cr", translit = "cr-translit", } m["crm"] = { "tiếng Cree Moose", 3446671, "alg", "Cans", "Tiếng Cree Moose", "Cree Moose", ancestors = "cr", translit = "cr-translit", } m["crn"] = { "Cora", 12953454, "azc", "Latn", } m["cro"] = { "tiếng Crow", 1207611, "sio-mor", "Latn", "Tiếng Crow", "Crow", } m["crq"] = { "Iyo'wujwa Chorote", 3540927, "sai-mtc", "Latn", } m["crr"] = { "Carolina Algonquian", 16113723, "alg-eas", "Latn", } m["crs"] = { "Seychellois Creole", 34015, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["crt"] = { "Iyojwa'ja Chorote", 3504118, "sai-mtc", "Latn", } m["crv"] = { "tiếng Chaura", 2605680, "aav-nic", nil, "Tiếng Chaura", "Chaura", } m["crw"] = { "tiếng Chơ Ro", 5105629, "mkh-ban", "Latn", "Tiếng Chơ Ro", "Chơ Ro", } m["crx"] = { "tiếng Carrier", 12953431, "ath-nor", "Latn, Cans", "Tiếng Carrier", "Carrier", } m["cry"] = { "Cori", 35204, "nic-plc", "Latn", } m["crz"] = { "Cruzeño", 2967636, "nai-chu", "Latn", } m["csa"] = { "Chiltepec Chinantec", 12953435, "omq-chi", "Latn", } m["csb"] = { "tiếng Kaszëb", 33690, "zlw-pom", "Latn", "Tiếng Kaszëb", "Kaszëb", } m["csc"] = { "Catalan Sign Language", 35768, "sgn", "Latn", -- when documented } m["csd"] = { "Chiangmai Sign Language", 5095211, "sgn", } m["cse"] = { "Czech Sign Language", 5201809, "sgn", "Latn", -- when documented } m["csf"] = { "Cuban Sign Language", 5192046, "sgn", "Latn", -- when documented } m["csg"] = { "Chilean Sign Language", 3322112, "sgn", "Latn", -- when documented } m["csh"] = { "tiếng Chin Asho", 12627282, "tbq-kuk", "Latn, Mymr", "Tiếng Chin Asho", "Chin Asho", } m["csi"] = { "Coast Miwok", 2981109, "nai-you", "Latn", } m["csj"] = { "tiếng Chin Songlai", 7561280, "tbq-kuk", "Mymr", "Tiếng Chin Songlai", "Chin Songlai", } m["csk"] = { "Jola-Kasa", 3446622, "alv-jol", "Latn", } m["csl"] = { "Chinese Sign Language", 1094190, "sgn", } m["csm"] = { "Central Sierra Miwok", 2944443, "nai-you", "Latn", } m["csn"] = { "Colombian Sign Language", 2748229, "sgn", "Latn", -- when documented } m["cso"] = { "Sochiapam Chinantec", 7550388, "omq-chi", "Latn", } m["csp"] = { "Southern Pinghua", 84302019, "zhx-pin", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["csq"] = { "Croatian Sign Language", 3507506, "sgn", } m["csr"] = { "Costa Rican Sign Language", 5174901, "sgn", "Latn", -- when documented } m["css"] = { "Southern Ohlone", 25559664, "nai-you", "Latn", } m["cst"] = { "Northern Ohlone", 25559666, "nai-you", "Latn", } m["csv"] = { "Sumtu Chin", 7638087, "tbq-kuk", } m["csw"] = { "Swampy Cree", 56696, "alg", "Latn, Cans", ancestors = "cr", } m["csy"] = { "Siyin Chin", 7533375, "tbq-kuk", } m["csz"] = { "Coos", 3126783, "nai-coo", "Latn", } m["cta"] = { "Tataltepec Chatino", 7687853, "omq-cha", "Latn", } m["ctc"] = { "Chetco-Tolowa", 12628946, "ath-pco", "Latn", } m["ctd"] = { "tiếng Chin Tedim", 56357, "tbq-kuk", "Latn, Pauc", "Tiếng Chin Tedim", "Chin Tedim", } m["cte"] = { "tiếng Chinantec Tepinapa", 12953443, "omq-chi", "Latn", "Tiếng Chinantec Tepinapa", "Chinantec Tepinapa", } m["ctg"] = { "tiếng Chittagong", 33173, "inc-eas", "Beng", "Tiếng Chittagong", "Chittagong", ancestors = "inc-obn", } m["cth"] = { "Thaiphum Chin", 16912048, "tbq-kuk", } m["ctl"] = { "Tlacoatzintepec Chinantec", 12643657, "omq-chi", "Latn", } m["ctm"] = { "Chitimacha", 1294227, "qfa-iso", "Latn", } m["ctn"] = { "Chhintange", 32994, "sit-kie", "Deva", } m["cto"] = { "Emberá-Catío", 3052039, "sai-chc", "Latn", } m["ctp"] = { "tiếng Chatino cao nguyên Tây", 32861734, "omq-cha", "Latn", "Tiếng Chatino cao nguyên Tây", "Chatino cao nguyên Tây", entry_name = {remove_diacritics = "¹²³⁴⁵"}, sort_key = {remove_diacritics = c.acute}, } m["cts"] = { "tiếng Bắc Catanduanes Bikol", 7130477, "phi", "Latn", "Tiếng Bắc Catanduanes Bikol", "Bắc Catanduanes Bikol", } m["ctt"] = { "tiếng Chetti Wayanad", 7975850, "dra-mal", "Taml", "Tiếng Chetti Wayanad", "Chetti Wayanad", translit = "ta-translit", } m["ctu"] = { "tiếng Chol", 35179, "myn", "Latn", "Tiếng Chol", "Chol", } m["cty"] = { "tiếng Chetti Moundadan", 105288428, "dra-kan", "Taml", "Tiếng Chetti Moundadan", "Chetti Moundadan", translit = "ta-translit", } m["ctz"] = { "tiếng Zacatepec Chatino", 8063754, "omq-cha", "Latn", "Tiếng Zacatepec Chatino", "Zacatepec Chatino" } m["cua"] = { "tiếng Co", 3441115, "mkh-ban", "Latn", "Tiếng Co", "Co", } m["cub"] = { "Cubeo", 3006705, "sai-tuc", "Latn", } m["cuc"] = { "Usila Chinantec", 7901979, "omq-chi", "Latn", } m["cug"] = { "Cung", 35194, "nic-bbe", "Latn", } m["cuh"] = { "Chuka", 12952344, "bnt-kka", "Latn", } m["cui"] = { "Cuiba", 2980421, "sai-guh", "Latn", } m["cuj"] = { "Mashco Piro", 3446596, "awd", "Latn", } m["cuk"] = { "tiếng Kuna", 12953659, "cba", "Latn", "Tiếng Kuna", "Kuna", } m["cul"] = { "Culina", 2475442, "auf", "Latn", } m["cuo"] = { "tiếng Cumanagoto", 5193784, "sai-cpc", "Latn", "Tiếng Cumanagoto", "Cumanagoto", } m["cup"] = { "tiếng Cupeño", 143130, "azc-cup", "Latn", "Tiếng Cupeño", "Cupeño", } m["cuq"] = { "Cun", 2475478, "qfa-lic", "Latn", } m["cur"] = { "Chhulung", 5116126, "sit-kie", "Deva", } m["cut"] = { "Teutila Cuicatec", 12953453, "omq-cui", "Latn", } m["cuu"] = { "Tai Ya", 3441122, "qfa-tak", "Latn", } m["cuv"] = { "Cuvok", 3515056, "cdc-cbm", "Latn", } m["cuw"] = { "Chukwa", 12629033, "sit-kic", } m["cux"] = { "Tepeuxila Cuicatec", 20527242, "omq-cui", "Latn", } m["cuy"] = { "Cuitlatec", 2030998, "qfa-iso", "Latn", } m["cvg"] = { "Chug", 47683644, "sit-khb", } m["cvn"] = { "Valle Nacional Chinantec", 12953442, "omq-chi", "Latn", } m["cwa"] = { "Kabwa", 6344537, "bnt-lok", "Latn", } m["cwb"] = { "Maindo", 11002891, "bnt-mak", "Latn", ancestors = "chw", } m["cwd"] = { "tiếng Cree rừng", 56305, "alg", "Latn, Cans", "Tiếng Cree rừng", "Cree rừng", ancestors = "cr", translit = "cr-translit", } m["cwe"] = { "Kwere", 779632, "bnt-ruv", "Latn", } m["cwg"] = { "tiếng Chewong", 646718, "mkh-asl", "Latn", "Tiếng Chewong", "Chewong" } m["cwt"] = { "Kuwaataay", 35699, "alv-jol", "Latn", } m["cya"] = { "Nopala Chatino", 15616302, "omq-cha", "Latn", } m["cyb"] = { "Cayubaba", 3183382, "qfa-iso", "Latn", } m["cyo"] = { "tiếng Cuyunon", 33153, "phi", "Latn", "Tiếng Cuyunon", "Cuyunon", } m["czh"] = { "tiếng Huy", 56546, "zhx", "Hants", -- ? "Tiếng Huy", "Huy", ancestors = "ltc", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["czk"] = { "tiếng Knaan", 56384, "zlw", "Hebr", "Tiếng Knaan", "Knaan", ancestors = "zlw-ocs", entry_name = {Hebr = {remove_diacritics = u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7) .. c.CGJ}}, } m["czn"] = { "Zenzontepec Chatino", 603106, "omq-cha", "Latn", } m["czo"] = { "tiếng Mân Trung", 56435, "zhx-inm", "Hants", "Tiếng Mân Trung", "Mân Trung", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["czt"] = { "Zotung Chin", 8074599, "tbq-kuk", "Latn", } return require("Module:languages").finalizeData(m, "language") jrshyvnnfv4yzosig4484yykhxve5zc Bản mẫu:zh-short 10 277027 2463537 2090639 2026-07-19T15:01:56Z Hiyuune 50834 Hiyuune đã đổi [[Bản mẫu:zho-short]] thành [[Bản mẫu:zh-short]] qua đổi hướng 2090636 wikitext text/x-wiki <includeonly><i>{{#if:{{{nocap|}}}|n|N}}ói tắt của</i> {{zh-l|{{{1|}}}|{{{2|}}}|tr={{{tr|}}}|gloss={{{gloss|}}}}}{{{dot|.}}}{{#if:{{{nocat|}}}||[[Thể loại:Từ nói tắt tiếng Trung Quốc]]}}</includeonly><noinclude>{{documentation}}</noinclude> dc7xnuprrwhumtbji6w60twi20gnp0p Mô đun:category tree/data 828 279364 2463563 2463366 2026-07-19T15:46:02Z Kateru Zakuro 34522 2463563 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local raw_handlers = {} local subpages = { -- It should not matter much what order we do the handlers in, but topic handling historically -- preceded "poscatboiler" handling (i.e. everything else), so keep it that way for the moment. "topic", "affixes and compounds", "characters", "entry maintenance", "etymology", "families", "figures of speech", "grammatical classes", "lang-specific-raw", "languages", "lects", "lemmas", "lexical properties", "miscellaneous", "modules", --"names", "non-lemma forms", "phrases", "pragmatic properties", "rhymes", "scripts", "semantic classes", "shortenings", "speech acts", "symbols", "tài khoản con rối", "templates", "terms by script", "transliterations", "unicode", "wiktionary maintenance", "wiktionary users", } -- Import subpages for _, subpage in ipairs(subpages) do local datamodule = "Module:category tree/" .. subpage local retval = require(datamodule) if retval["LABELS"] then for label, data in pairs(retval["LABELS"]) do if labels[label] and not retval["IGNOREDUP"] then error("Label " .. label .. " defined in both [[" .. datamodule .. "]] and [[" .. labels[label].module .. "]].") end data.module = datamodule labels[label] = data end end if retval["RAW_CATEGORIES"] then for category, data in pairs(retval["RAW_CATEGORIES"]) do if raw_categories[category] and not retval["IGNOREDUP"] then error("Raw category " .. category .. " defined in both [[" .. datamodule .. "]] and [[" .. raw_categories[category].module .. "]].") end data.module = datamodule raw_categories[category] = data end end if retval["HANDLERS"] then for _, handler in ipairs(retval["HANDLERS"]) do table.insert(handlers, { module = datamodule, handler = handler }) end end if retval["RAW_HANDLERS"] then for _, handler in ipairs(retval["RAW_HANDLERS"]) do table.insert(raw_handlers, { module = datamodule, handler = handler }) end end end -- Add child categories to their parents local function add_children_to_parents(hierarchy, raw) for key, data in pairs(hierarchy) do local parents = data.parents if parents then if type(parents) ~= "table" then parents = {parents} end if parents.name or parents.module then parents = {parents} end for _, parent in ipairs(parents) do if type(parent) ~= "table" or not parent.name and not parent.module then parent = {name = parent} end if parent.name and not parent.module and type(parent.name) == "string" and not parent.name:find("^Category:") then local parent_is_raw if raw then parent_is_raw = not parent.is_label else parent_is_raw = parent.raw end -- Don't do anything if the child is raw and the parent is lang-specific, otherwise e.g. -- "Lemmas subcategories by language" will be listed as a child of every "LANG lemmas" category. -- FIXME: We need to rethink this mechanism. if not raw or parent_is_raw then local child_hierarchy = parent_is_raw and raw_categories or labels if child_hierarchy[parent.name] then local child = {name = key, sort = parent.sort, raw = raw} if child_hierarchy[parent.name].children then table.insert(child_hierarchy[parent.name].children, child) else child_hierarchy[parent.name].children = {child} end end end end end end end end add_children_to_parents(labels) add_children_to_parents(raw_categories, true) return { LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers, RAW_HANDLERS = raw_handlers } sws9ey27m44qlbyf3m2lh4r95x23qoi 2463570 2463563 2026-07-19T15:53:24Z Kateru Zakuro 34522 2463570 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local raw_handlers = {} local subpages = { -- It should not matter much what order we do the handlers in, but topic handling historically -- preceded "poscatboiler" handling (i.e. everything else), so keep it that way for the moment. "topic", "affixes and compounds", "characters", "entry maintenance", "etymology", "families", "figures of speech", "grammatical classes", "lang-specific-raw", "languages", "lects", "lemmas", "lexical properties", "miscellaneous", "modules", "names", "non-lemma forms", "phrases", "pragmatic properties", "rhymes", "scripts", "semantic classes", "shortenings", "speech acts", "symbols", "tài khoản con rối", "templates", "terms by script", "transliterations", "unicode", "wiktionary maintenance", "wiktionary users", } -- Import subpages for _, subpage in ipairs(subpages) do local datamodule = "Module:category tree/" .. subpage local retval = require(datamodule) if retval["LABELS"] then for label, data in pairs(retval["LABELS"]) do if labels[label] and not retval["IGNOREDUP"] then error("Label " .. label .. " defined in both [[" .. datamodule .. "]] and [[" .. labels[label].module .. "]].") end data.module = datamodule labels[label] = data end end if retval["RAW_CATEGORIES"] then for category, data in pairs(retval["RAW_CATEGORIES"]) do if raw_categories[category] and not retval["IGNOREDUP"] then error("Raw category " .. category .. " defined in both [[" .. datamodule .. "]] and [[" .. raw_categories[category].module .. "]].") end data.module = datamodule raw_categories[category] = data end end if retval["HANDLERS"] then for _, handler in ipairs(retval["HANDLERS"]) do table.insert(handlers, { module = datamodule, handler = handler }) end end if retval["RAW_HANDLERS"] then for _, handler in ipairs(retval["RAW_HANDLERS"]) do table.insert(raw_handlers, { module = datamodule, handler = handler }) end end end -- Add child categories to their parents local function add_children_to_parents(hierarchy, raw) for key, data in pairs(hierarchy) do local parents = data.parents if parents then if type(parents) ~= "table" then parents = {parents} end if parents.name or parents.module then parents = {parents} end for _, parent in ipairs(parents) do if type(parent) ~= "table" or not parent.name and not parent.module then parent = {name = parent} end if parent.name and not parent.module and type(parent.name) == "string" and not parent.name:find("^Category:") then local parent_is_raw if raw then parent_is_raw = not parent.is_label else parent_is_raw = parent.raw end -- Don't do anything if the child is raw and the parent is lang-specific, otherwise e.g. -- "Lemmas subcategories by language" will be listed as a child of every "LANG lemmas" category. -- FIXME: We need to rethink this mechanism. if not raw or parent_is_raw then local child_hierarchy = parent_is_raw and raw_categories or labels if child_hierarchy[parent.name] then local child = {name = key, sort = parent.sort, raw = raw} if child_hierarchy[parent.name].children then table.insert(child_hierarchy[parent.name].children, child) else child_hierarchy[parent.name].children = {child} end end end end end end end end add_children_to_parents(labels) add_children_to_parents(raw_categories, true) return { LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers, RAW_HANDLERS = raw_handlers } jldxab97ol09mrrg1tdtmlkuk703fnu Mô đun:category tree/names 828 279386 2463561 2463404 2026-07-19T15:44:54Z Kateru Zakuro 34522 2463561 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" --local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên (chức năng ngữ nghĩa)"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "terms by semantic function", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên (chức năng ngữ nghĩa)"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên (chức năng ngữ nghĩa)"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên (chức năng ngữ nghĩa)"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên (chức năng ngữ nghĩa)", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 5z4x1cajyhlozhi3yp5d18ejgbz7pgh 2463562 2463561 2026-07-19T15:45:41Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2463561|2463561]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2463562 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" --local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "terms by semantic function", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 0vt0ish4kzaegdac0dtsl6qlq0u6jne 2463564 2463562 2026-07-19T15:46:38Z Kateru Zakuro 34522 2463564 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "terms by semantic function", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} mcfbnuhi8hkclp1p5fc90dxhxx7pf2p 2463579 2463564 2026-07-19T16:01:21Z Kateru Zakuro 34522 2463579 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên gọi"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "terms by semantic function", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên gọi"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên gọi"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên gọi"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên gọi", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} pp1882gnlvxcjvf5hz38uqje1brzqyz 2463600 2463579 2026-07-19T16:20:17Z Kateru Zakuro 34522 2463600 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên gọi"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "Chức năng ngữ nghĩa", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên gọi"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên gọi"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên gọi"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên gọi", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} qqrqab18sunxtlnpxjxm3eglz2vlxf5 2463633 2463600 2026-07-19T17:59:59Z Kateru Zakuro 34522 2463633 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "Chức năng ngữ nghĩa", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên gọi"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên gọi"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên gọi"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên gọi", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 2elgbhowl3b8yj2th15toma8su0jvo5 2463638 2463633 2026-07-19T18:18:01Z Kateru Zakuro 34522 2463638 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local names_module = "Module:names" local en_utilities_module = "Module:en-utilities" local pluralize = require(en_utilities_module).pluralize ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Tên gọi"] = { description = "{{{langname}}} terms that are used to refer to specific individuals or groups.", additional = "Place names, demonyms and other kinds of names can be found in [[:Category:Names]].", umbrella_parents = {name = "Chức năng ngữ nghĩa", is_label = true, sort = " "}, parents = {"Chức năng ngữ nghĩa", "Danh từ riêng"}, } ------------------------------------------- given names ------------------------------------------- local human_genders = { ["nam"] = "to male individuals", ["nữ"] = "to female individuals", ["cả hai giới"] = "either to male or to female individuals", } --for gender, props in pairs(require(names_module).given_name_genders) do -- if gender ~= "unknown-gender" then -- local is_animal = props.type == "animal" -- local cat = is_animal and gender .. " names" or gender .. " given names" -- local desc = is_animal and " given to [[" .. gender .. "|" .. pluralize(gender) .. "]]" or " given " .. human_genders[gender] -- local function do_cat(cat, desc, breadcrumb, parents) -- labels[cat] = { -- description = "{{{langname}}} " .. desc .. ".", -- breadcrumb = breadcrumb, -- parents = parents, -- } -- end -- -- for _, dimaug in ipairs { "diminutive", "augmentative" } do -- do_cat(dimaug .. "s of " .. cat, dimaug .. " names " .. desc, dimaug, -- {gender .. " given names", dimaug .. " nouns"}) -- end -- do_cat(cat, "names " .. desc, gender, is_animal and (gender == "animal" and "names" or is_animal and -- "animal names") or "given names") -- if not is_animal then -- do_cat(gender .. " skin names", "skin names " .. desc, gender, {"skin names"}) -- end -- end --end labels["Tên người"] = { description = "{{{langname}}} names given to individuals.", parents = {"Tên gọi"}, } labels["skin names"] = { description = "{{{langname}}} terms given at birth that are used to refer to individuals from specific marital classes.", parents = {"proper nouns", "names"}, } ------------------------------------------- surnames ------------------------------------------- labels["common-gender surnames"] = { description = "{{{langname}}} names shared by both male and female family members, in languages that distinguish male and female surnames.", breadcrumb = "common-gender", parents = {"surnames"}, } labels["Họ nữ"] = { description = "{{{langname}}} names shared by female family members.", breadcrumb = "nữ", parents = {"surnames"}, } labels["Họ nam"] = { description = "{{{langname}}} names shared by male family members.", breadcrumb = "nam", parents = {"Họ"}, } labels["Họ"] = { description = "{{{langname}}} names shared by family members.", parents = {"Tên gọi"}, } for _, nymics in ipairs { "matronymics", "patronymics" } do local ancestor = nymics == "matronymics" and "mother, grandmother or earlier female ancestor" or "father, grandfather or earlier male ancestor" labels["common-gender " .. nymics] = { description = ("{{{langname}}} names used by both men and women to indicate their %s, in languages that distinguish male and female %s."): format(ancestor, nymics), breadcrumb = "common-gender", parents = {nymics}, } labels["female " .. nymics] = { description = ("{{{langname}}} names used by women to indicate their %s."): format(ancestor, nymics), breadcrumb = "female", parents = {nymics}, } labels["male " .. nymics] = { description = ("{{{langname}}} names used by men to indicate their %s."): format(ancestor, nymics), breadcrumb = "male", parents = {nymics}, } labels[nymics] = { description = ("{{{langname}}} names indicating a person's %s."):format(ancestor), parents = {"names"}, } end labels["nomina gentilia"] = { description = "{{{langname}}} \"[[family name]]s\" (singular ''[[nomen gentile]]'') in a [[w:Roman naming convention|convential Roman name]].", parents = {"names"}, } ------------------------------------------- misc ------------------------------------------- labels["Ngoại danh"] = { description = "{{{langname}}} [[exonym]]s, i.e. terms for toponyms whose name in {{{langname}}} is different from the name in the source language.", parents = {"Tên gọi"}, } labels["renderings of foreign personal names"] = { description = "{{{langname}}} transliterations, respellings or other renderings of foreign personal names.", parents = {"names"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Thể loại con tên theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con tên theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to names.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Tên gọi", is_label = true, sort = " "}, }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- local function source_name_to_source(nametype, source_name) local special_sources if nametype:find("given names") then special_sources = require("Module:table").listToSet { "surnames", "place names", "coinages", "the Bible", "month names" } elseif nametype:find("surnames") then special_sources = require("Module:table").listToSet { "given names", "place names", "occupations", "patronymics", "matronymics", "common nouns", "nicknames", "ethnonyms" } else special_sources = {} end if special_sources[source_name] then return source_name else return require("Module:languages").getByCanonicalName(source_name, nil, "allow etym langs", "allow families") end end local function get_source_text(source) if type(source) == "table" then return source:getDisplayForm() else return source end end local function get_description(lang, nametype, source) local origintext, addltext if source == "surnames" then origintext = "transferred from surnames" elseif source == "given names" then origintext = "transferred from given names" elseif source == "nicknames" then origintext = "transferred from nicknames" elseif source == "place names" then origintext = "transferred from place names" addltext = " For place names that are also surnames, see " .. ( lang and "[[:Category:{{{langname}}} " .. nametype .. " from surnames]]" or "[[:Category:" .. mw.getContentLanguage():ucfirst(nametype) .. " from surnames by language]]" ) .. "." elseif source == "common nouns" then origintext = "transferred from common nouns" elseif source == "month names" then origintext = "transferred from month names" elseif source == "coinages" then origintext = "originating as coinages" addltext = " These are names of artificial origin, names based on fictional characters, combinations of two words or names or backward spellings. Names of uncertain origin can also be placed here if there is a strong suspicion that they are coinages." elseif source == "occupations" then origintext = "originating as occupations" elseif source == "patronymics" then origintext = "originating as patronymics" elseif source == "matronymics" then origintext = "originating as matronymics" elseif source == "ethnonyms" then origintext = "originating as ethnonyms" elseif source == "the Bible" then -- Hack esp. for Hawaiian names. We should consider changing them to -- have the source as Biblical Hebrew and mention the derivation from -- the Bible some other way. origintext = "originating from the Bible" elseif type(source) == "string" then error("Internal error: Unrecognized string source \"" .. source .. "\", should be special-cased") else origintext = "of " .. source:makeCategoryLink() .. " origin" if lang and source:getCode() == lang:getCode() then addltext = " These are names derived from common nouns, local mythology, etc." end end local introtext if lang then introtext = "{{{langname}}} " else introtext = "Categories with " end return introtext .. nametype .. " " .. origintext .. ". (This includes names derived at an older stage of the language.)" .. (addltext or "") end -- If one of the following families occurs in any of the ancestral families -- of a given language, use it instead of the three-letter parent -- (or immediate parent if no three-letter parent). local high_level_families = require("Module:table").listToSet { -- Indo-European "gem", -- Germanic (for gme, gmq, gmw) "inc", -- Indic (for e.g. pra = Prakrit) "ine-ana", -- Anatolian (don't keep going to ine) "ine-toc", -- Tocharian (don't keep going to ine) "ira", -- Iranian (for e.g. xme = Median, xsc = Scythian) "sla", -- Slavic (for zle, zls, zlw) -- Other "ath", -- Athabaskan (for e.g. apa = Apachean) "poz", -- Malayo-Polynesian (for e.g. pqe = Eastern Malayo-Polynesian) "cau-nwc", -- Northwest Caucasian "cau-nec", -- Northeast Caucasian } local function find_high_level_family(lang) local family = lang:getFamily() -- (1) If no family, return nil (e.g. for Pictish). if not family then return nil end -- (2) See if any ancestor family is in `high_level_families`. -- if so, return it. local high_level_family = family while high_level_family do local high_level_code = high_level_family:getCode() if high_level_code == "qfa-not" then -- "not a family"; its own parent, causing an infinite loop. -- Break rather than return so we get categories like -- [[Category:English female given names from sign languages]] and -- [[Category:English female given names from constructed languages]]. break end if high_level_families[high_level_code] then return high_level_family end high_level_family = high_level_family:getFamily() end -- (3) If the family is of the form 'FOO-BAR', see if 'FOO' is a family. -- If so, return it. local basic_family = family:getCode():match("^(.-)%-.*$") if basic_family then basic_family = require("Module:families").getByCode(basic_family) if basic_family then return basic_family end end -- (4) Fall back to just the family itself. return family end local function match_gendered_nametype(nametype) local gender, label = nametype:match("^(f?e?male) (given names)$") if not gender then gender, label = nametype:match("^(unisex) (given names)$") end if gender then return gender, label end end local function get_parents(lang, nametype, source) local parents = {} if lang then table.insert(parents, {name = nametype, sort = get_source_text(source)}) if type(source) == "table" then table.insert(parents, {name = "terms derived from " .. source:getDisplayForm(), sort = " "}) -- If the source is a regular language, put it in a parent category for the high-level language family, e.g. for -- "Russian female given names from German", put it in a parent category "Russian female given names from Germanic languages" -- (skipping over West Germanic languages). -- -- If the source is an etymology language, put it in a parent category for the parent full language, e.g. for -- "French male given names from Gascon", put it in a parent category "French male given names from Occitan". -- -- If the source is a family, put it in a parent category for the parent family. if source:hasType("family") then local parent_family = source:getFamily() if parent_family and parent_family:getCode() ~= "qfa-not" then table.insert(parents, { name = nametype .. " from " .. parent_family:getDisplayForm(), sort = source:getCanonicalName() }) end elseif source:hasType("etymology-only") then local source_parent = source:getFull() if source_parent and source_parent:getCode() ~= "und" then table.insert(parents, { name = nametype .. " from " .. source_parent:getDisplayForm(), sort = source:getCanonicalName() }) end else local high_level_family = find_high_level_family(source) if high_level_family then -- may not exist, e.g. for Pictish table.insert(parents, {name = nametype .. " from " .. high_level_family:getDisplayForm(), sort = source:getCanonicalName() }) end end end local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), sort = gender}) end else local gender, label = match_gendered_nametype(nametype) if gender then table.insert(parents, {name = label .. " from " .. get_source_text(source), is_label = true, sort = " "}) elseif type(source) == "table" then -- FIXME! This is duplicated in [[Module:category tree/etymology]] in the handler for umbrella categories -- 'Terms derived from SOURCE'. local first_umbrella_parent = source:hasType("family") and {name = source:getCategoryName(), raw = true, sort = " "} or source:hasType("etymology-only") and {name = "Category:" .. source:getCategoryName(), sort = nametype} or {name = source:getCategoryName(), raw = true, sort = nametype} table.insert(parents, first_umbrella_parent) end table.insert(parents, "Names subcategories by language") end return parents end table.insert(handlers, function(data) local nametype, source_name = data.label:match("^(.*names) from (.+)$") if nametype then local personal_name_type_set = require(names_module).personal_name_type_set if not personal_name_type_set[nametype] then return nil end local source = source_name_to_source(nametype, source_name) if not source then return nil end return { description = get_description(data.lang, nametype, source), breadcrumb = "from " .. get_source_text(source), parents = get_parents(data.lang, nametype, source), umbrella = { description = get_description(nil, nametype, source), parents = get_parents(nil, nametype, source), }, } end end) -- Handler for e.g. 'English renderings of Russian male given names'. table.insert(handlers, function(data) local label = data.label:match("^renderings of (.*)$") if label then local personal_name_types = require(names_module).personal_name_types for _, nametype in ipairs(personal_name_types) do local sourcename = label:match("^(.+) " .. nametype .. "$") if sourcename then local source = require("Module:languages").getByCanonicalName(sourcename, nil, "allow etym") if source then return { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into {{{langdisp}}}.", lang = data.lang, breadcrumb = sourcename .. " " .. nametype, parents = { { name = "renderings of foreign personal names", sort = sourcename }, { name = nametype, lang = source:getCode(), sort = "{{{langname}}}" }, }, umbrella = { description = "Transliterations, respellings or other renderings of " .. source:makeCategoryLink() .. " " .. nametype .. " into various languages.", parents = {{name = "renderings of foreign personal names", is_label = true, sort = label}}, }, } end end end end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} qqrqab18sunxtlnpxjxm3eglz2vlxf5 Mô đun:place/placetypes 828 282248 2463636 2463464 2026-07-19T18:16:41Z Kateru Zakuro 34522 2463636 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) 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 else 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:find("^%(") end function export.resolve_placetype_aliases(placetype) return export.placetype_aliases[placetype] or placetype end --[==[ Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the key isn't found in the placetype's entry in `placetype_data`, return nil. ]==] function export.get_placetype_prop(placetype, key) -- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype -- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in -- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice. placetype = export.resolve_placetype_aliases(placetype) if export.placetype_data[placetype] then return export.placetype_data[placetype][key] else return nil end end --[==[ Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list { {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e. # the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are zero such qualifiers, the value will be nil); # a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil); # the "reduced placetype" on the right. Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization of qualifiers does not happen if `no_canon_qualifiers` is specified. For example, given the placetype `"small beachside unincorporated community"`, the return value will be { { {nil, nil, "small beachside unincorporated community"}, {nil, "small", "beachside unincorporated community"}, {"small", "[[beachfront]]", "unincorporated community"}, {"small [[beachfront]]", "[[unincorporated]]", "community"}, }} Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to `"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`. On the other hand, if given `"small former haunted community"`, the return value will be { { {nil, nil, "small former haunted community"}, {nil, "small", "former haunted community"}, {"small", "former", "haunted community"}, }} because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers. Finally, if given `"former adr"`, the return value will be { { {nil, nil, "former adr"}, {nil, "former", "administrative region"}, }} because `"adr"` is a recognized placetype alias for `"administrative region"`. ]==] function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers) local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}} local prev_qualifier = nil while true do local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$") if qualifier then local canon = export.placetype_qualifiers[qualifier] if canon == nil then break end local new_qualifier = qualifier if type(canon) == "table" then canon = canon.link end if not no_canon_qualifiers and canon ~= false then if canon == true then new_qualifier = "[[" .. qualifier .. "]]" else new_qualifier = canon end end insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)}) prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier placetype = reduced_placetype else break end end return splits end --[==[ Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first entry if it exists in `placetype_data`. '''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c) "type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of directives, which act somewhat similarly to `former`, and allows interaction between more than one of these simultaneously (e.g. official names of former places, which have their own categorization). If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of `iterate_matching_holonym_location()`. For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn: ``` {qualifier = nil, placetype="left tributary"} {qualifier = "left", placetype="tributary"} {qualifier = "left", placetype="river"} ``` and the return value will be { { {qualifier = "left", placetype="tributary"}, {qualifier = "left", placetype="river"}, }} The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the ''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next. Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality, often specifically an outlying hamlet). the placetype/qualifier combinations checked are: ``` {qualifier = nil, placetype="small rural fraziones"} {qualifier = nil, placetype="small rural frazione"} {qualifier = "small", placetype="rural fraziones"} {qualifier = "small", placetype="rural frazione"} {qualifier = "small [[rural]]", placetype="fraziones"} {qualifier = "small [[rural]]", placetype="frazione"} {qualifier = "small [[rural]]", placetype="hamlet"} {qualifier = "small [[rural]]", placetype="village"} ``` The return value ends up as {qualifier = "small [[rural]]", placetype="frazione"}, {qualifier = "small [[rural]]", placetype="hamlet"}, {qualifier = "small [[rural]]", placetype="village"}, }} Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers, they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around `rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both fallbacks end up being returned. `no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym. See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example, `"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When `no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"` with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under [[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].) As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`, because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes rarely occur with exact match category specs anyway. `no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in [[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't have qualifiers and so it doesn't make sense to try and look for them. `from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked. `form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches. `no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`. `register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g. known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It causes the non-former version of the specified placetype to be included in the returned equivalents along with the former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now; fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.] ]==] function export.get_placetype_equivs(placetype, props) local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former local form_of_directive if props then no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former = props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category, props.register_former_as_non_former form_of_directive = props.form_of_directive end local equivs = {} -- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is -- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If -- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by -- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version -- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as -- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into -- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}}, -- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up -- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]]. local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix) local function insert_equiv(pt) if form_of_prefix then -- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have -- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end -- up processing because `island country` falls back to `country`), and that entry in turn is defined -- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of -- handling this is by calling ourselves recursively. insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt) else insert(equivs, {qualifier=qualifier, placetype=pt}) end end -- Insert the placetype, along with any fallbacks. local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category) if ptdata then insert_equiv(canon_placetype) if no_fallback then return end local first_placetype = #equivs + 1 local prev_placetype = nil while true do local pt_value = export.placetype_data[canon_placetype] if not pt_value then internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`", canon_placetype, prev_placetype) end if pt_value.fallback then insert_equiv(pt_value.fallback) local last_placetype = #equivs if last_placetype - first_placetype >= 10 then local fallback_loop = {} for i = first_placetype, last_placetype do insert(fallback_loop, equivs[i].placetype) end internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> ")) end prev_placetype = canon_placetype canon_placetype = pt_value.fallback else break end end end end -- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a -- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no -- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that -- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for -- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a -- `former`-type directive); these backups live outside this function because we want them done once, late, rather -- than in each invocation of `process_and_insert_placetype()`. local function process_and_insert_placetype(qualifier, reduced_placetype) if form_of_directive then -- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of -- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by -- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of -- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for -- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.) insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive) if not no_fallback then local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype) local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or export.get_placetype_prop(pt, "class") end ) if not directive_type then local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.placetype_data[pt] end ) if pt_data then internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " .. 'located but directive-specific type property %s missing, and so is "class"; ' .. "placetypes searched are %s", reduced_placetype, form_of_directive, form_of_directive .. "_type", reduced_placetype_equivs) else -- This should be allowed, as we allow unrecognized placetypes in general. end elseif directive_type ~= "!" then insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive) end end else insert_placetype_and_fallbacks(qualifier, reduced_placetype) end end -- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left -- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers). local splits if no_split_qualifiers then splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}} else splits = export.split_qualifiers_from_placetype(placetype) end for _, split in ipairs(splits) do local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3) -- If a special "former" qualifier like `former` or `historical` isn't present, and -- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for -- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing -- placetypes, and handle accordingly. local unlinked_this_qualifier if this_qualifier and this_qualifier:find("%[") then unlinked_this_qualifier = export.remove_links_and_html(this_qualifier) else unlinked_this_qualifier = this_qualifier end local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil if not former_qualifiers and not no_check_for_inherently_former then former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype, function(pt) return export.get_placetype_prop(pt, "inherently_former") end, {no_check_for_inherently_former = true}) end -- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal -- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified -- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped -- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval` -- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes -- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the -- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a -- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like -- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and -- don't enter anything into `equivs`. if former_qualifiers then -- FIXME: Should we respect `no_fallback` here? My instinct says no. local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, { no_check_for_inherently_former = true }) local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.get_placetype_prop(pt, "former_type") or export.get_placetype_prop(pt, "class") end ) if not former_type then local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.placetype_data[pt] end ) if pt_data then internal_error("For placetype %s, placetype data located but `former_type` missing; " .. "placetypes searched are %s", reduced_placetype, reduced_placetype_equivs) else -- Enable error when we've verified there aren't any examples. track("bad-former-placetype") track("bad-former-placetype/" .. reduced_placetype) --process_error("For placetype '%s', unrecognized placetype following 'former'-type " .. -- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs)) end elseif former_type ~= "!" then -- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible -- for (e.g.) former provinces of the Roman empire to be categorized specially. for _, former_qualifier in ipairs(former_qualifiers) do process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype) end for _, former_qualifier in ipairs(former_qualifiers) do process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type) end -- HACK! See explanation above for `register_former_as_non_former`. if register_former_as_non_former then process_and_insert_placetype(prev_qualifier, reduced_placetype) end -- If we're processing a form-of directive, after doing everything else we do -- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup. if form_of_directive and not no_fallback then for _, former_qualifier in ipairs(former_qualifiers) do insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier .. " place") end end -- Don't continue processing equivs. The reason is probably the same as the `break` below for -- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and -- non-former equivs will otherwise take precedence. break end end -- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs -- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping. if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then insert(equivs, { qualifier=prev_qualifier, placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier] }) -- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the -- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the -- latter ends up generating the category because the category for 'mythological location' is set as -- the default value, which is used only when no non-default category can be found. break end -- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined -- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype. -- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts -- the full placetype into `equivs`. local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier process_and_insert_placetype(qualifier, reduced_placetype) -- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced -- placetypes to avoid the "overseas territory treated as a territory" issue describe above. if no_fallback then local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category) if canon_placetype then break end end end -- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g. -- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype -- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g. -- [[Category:en:Former names of places]] in an invocation like -- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}}; -- the `used from 1971–1997` gets treated as a placetype and we're called on it. if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then insert_placetype_and_fallbacks(nil, form_of_directive .. " place") end return equivs end function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only) for _, equiv in ipairs(equivs) do local retval = fun(equiv.placetype) if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then return retval, equiv end end return nil, nil end --[==[ Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false}); but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value. FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil}, the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value. ]==] function export.get_equiv_placetype_prop(placetype, fun, props) if not placetype then return fun(nil), nil end return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun, props and props.continue_on_nil_only) end --[==[ Return the article that is used with an entry placetype. We proceed as follows: # See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article). This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`. # Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that `"the"` should be used. # Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the` (principally for use with placetypes like `union territory`). # Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with a vowel and `"a"` otherwise. If `ucfirst` is true, the first letter of the article is made upper-case. ]==] function export.get_placetype_article(placetype, ucfirst) local art local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$") if qualifier then local canon = export.placetype_qualifiers[qualifier] if type(canon) == "table" then art = canon.article end end if art == false then return art end if art == nil then local placetype_use_the = export.get_equiv_placetype_prop(placetype, function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end) if placetype_use_the then art = "tên gọi" else art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article") if not art then art = require(en_utilities_module).get_indefinite_article(placetype) end end end if ucfirst then art = m_strutils.ucfirst(art) end return art end --[==[ Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories (e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"của"` 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 "của" 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 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 `"thành phố"` (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 == "thành phố" 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 "thành phố"', 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 key else return key end end -- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary. export.iterate_matching_location = m_locations.iterate_matching_location --[=[ Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If `first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the holonym index and holonym structure, similar to `ipairs()`. ]=] function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms) local stop_at_also = not not first_holonym_index return function(place_desc, index) while true do index = index + 1 local this_holonym = place_desc.holonyms[index] -- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also` -- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym -- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with -- `:also`. if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then return nil end -- If not placetype, we're processing raw text, which we normally want to skip. if include_raw_text_holonyms or this_holonym.placetype then return index, this_holonym end end end, place_desc, first_holonym_index and first_holonym_index - 1 or 0 end --[==[ If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all such known locations, returning for each location the corresponding key, spec and group as well as the trail of ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data` are: * `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with `iterate_matching_location()`. * `holonym_placename`: The placename of the holonym. * `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.) * `place_desc`: Description of the place; used for the holonyms, to check for container mismatches. Returns four values: the location group, the canonical key by which the location is known, the spec object describing the location and the trail of ancestral containers for the location. The first three values are the same as for `iterate_matching_location`. ]==] function export.iterate_matching_holonym_location(data) local holonym_placetype, holonym_placename, holonym_index, place_desc = data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc local matching_location_iterator = m_locations.iterate_matching_location { placetypes = holonym_placetype, placename = holonym_placename, } return function() while true do local group, key, spec = matching_location_iterator() if not group then return nil end local container_trail = {} -- For each level of container, check that there are no mismatches (i.e. other location of the same -- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container -- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city -- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of -- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark, -- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New -- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough, -- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If -- there are no mismatches at any level we assume we're dealing with the right known location. -- -- If at a given level there are multiple containing locations, we count a match if any holonym matches any -- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any -- containing location. local containers_mismatch = false for containers in m_locations.iterate_containers(group, key, spec) do insert(container_trail, containers) local match_at_level = false local mismatch_at_level = false for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc, holonym_index and holonym_index + 1 or nil) do local other_source_holonym = other_holonym.augmented_from_holonym if other_source_holonym and other_source_holonym.placetype == holonym_placetype and other_source_holonym.unlinked_placename ~= holonym_placename then -- Ignore holonyms added during the augmentation process for other holonyms of the same -- placetype as the placetype of the holonym we're considering. See comment in -- augment_holonyms_with_container() for why we do this. -- continue; grrr, no 'continue' in Lua else local holonym_matches_at_level = false local holonym_exists_with_same_placetype = false for _, container in ipairs(containers) do if not container.spec.no_check_holonym_mismatch then local full_container_placename, elliptical_container_placename = m_locations.key_to_placename(container.group, container.key) local placetypes = container.spec.placetype if type(placetypes) ~= "table" then placetypes = {placetypes} end local placetype_equivs = {} for _, pt in ipairs(placetypes) do m_table.extend(placetype_equivs, export.get_placetype_equivs(pt)) end local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs( placetype_equivs, function(placetype) return other_holonym.placetype == placetype and (other_holonym.unlinked_placename == full_container_placename or other_holonym.unlinked_placename == elliptical_container_placename) end ) if this_holonym_matches then holonym_matches_at_level = true break end local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs( placetype_equivs, function(placetype) return other_holonym.placetype == placetype end ) if this_holonym_exists_with_same_placetype then -- We seem to have a mismatch at this level. But before we decide conclusively that this -- is the case, check to see whether the putative mismatch is an alias and matches when -- we resolve the alias. for oh_group, oh_key, oh_spec, oh_container_trail in export.iterate_matching_holonym_location { holonym_placetype = other_holonym.placetype, holonym_placename = other_holonym.unlinked_placename, holonym_index = other_holonym_index, place_desc = place_desc, } do local oh_full_placename, oh_elliptical_placename = m_locations.key_to_placename(oh_group, oh_key) if oh_full_placename == full_container_placename or oh_elliptical_placename == elliptical_container_placename then -- Alias matched when resolved. this_holonym_matches = true break end end if this_holonym_matches then -- Alias matched above when resolved. holonym_matches_at_level = true break else -- Not an alias, or doesn't match when resolved. We have a true mismatch. holonym_exists_with_same_placetype = true end end end end if holonym_matches_at_level then match_at_level = true break end if holonym_exists_with_same_placetype then mismatch_at_level = true end end end if not match_at_level and mismatch_at_level then containers_mismatch = true break end end if not containers_mismatch then return group, key, spec, container_trail end end end end --[==[ If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the corresponding key, spec and group as well as the trail of ancestral containers. This is like `iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To fix this, specify additional following disambiguating holonyms, e.g. {{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}. ]==] function export.find_matching_holonym_location(data) local all_found = {} for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do insert(all_found, {group, key, spec, container_trail}) end if not all_found[1] then return nil elseif all_found[2] then local holonym_placetype = data.holonym_placetype if type(holonym_placetype) == "table" then holonym_placetype = concat(holonym_placetype, ",") end local found_keys = {} for _, found in ipairs(all_found) do local _, key, _, _ = unpack(found) insert(found_keys, key) end error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " .. "containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys))) else return unpack(all_found[1]) end end ------------------------------------------------------------------------------------------ -- Placename and placetype data -- ------------------------------------------------------------------------------------------ --[==[ var: This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which applies to categorization and other processes but not to display. The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state", "province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g. "census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype. Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be interpreted as "department", "district" or "division"). ]==] export.placetype_aliases = { ["acomm"] = "autonomous community", ["adr"] = "administrative region", ["adterr"] = "administrative territory", -- Pakistan ["aobl"] = "autonomous oblast", ["aokr"] = "autonomous okrug", ["ap"] = "autonomous province", ["apref"] = "autonomous prefecture", ["aprov"] = "autonomous province", ["ar"] = "autonomous region", ["arch"] = "archipelago", ["arep"] = "autonomous republic", ["aterr"] = "autonomous territory", ["atu"] = "autonomous territorial unit", ["bor"] = "borough", ["c"] = "quốc gia", ["can"] = "canton", ["carea"] = "council area", ["cc"] = "constituent country", ["cdblock"] = "community development block", ["cdep"] = "Crown dependency", ["CDP"] = "census-designated place", ["cdp"] = "census-designated place", ["clcity"] = "county-level city", ["co"] = "county", ["cobor"] = "county borough", ["colcity"] = "county-level city", ["coll"] = "collectivity", ["comm"] = "community", ["cont"] = "lục địa", ["continent"] = "lục địa", ["contr"] = "continental region", ["contregion"] = "continental region", ["cpar"] = "civil parish", ["damun"] = "direct-administered municipality", ["dep"] = "dependency", ["department capital"] = "departmental capital", ["dept"] = "department", ["depterr"] = "dependent territory", ["dist"] = "district", ["distmun"] = "district municipality", ["div"] = "division", ["emp"] = "empire", ["fpref"] = "French prefecture", ["gov"] = "governorate", ["govnat"] = "governorate", ["home-rule city"] = "home rule city", ["home-rule municipality"] = "home rule municipality", ["inner-city area"] = "inner city area", ["ires"] = "Indian reservation", ["isl"] = "island", ["lbor"] = "London borough", ["lga"] = "local government area", ["lgarea"] = "local government area", ["lgd"] = "local government district", ["lgdist"] = "local government district", ["metbor"] = "metropolitan borough", ["metcity"] = "metropolitan city", ["metmun"] = "metropolitan municipality", ["mtn"] = "mountain", ["mun"] = "municipality", ["mundist"] = "municipal district", ["nonmetropolitan county"] = "non-metropolitan county", ["obl"] = "oblast", ["okr"] = "okrug", ["p"] = "province", ["par"] = "parish", ["parmun"] = "parish municipality", ["pen"] = "peninsula", ["plcity"] = "prefecture-level city", ["plcolony"] = "Polish colony", ["pref"] = "prefecture", ["prefcity"] = "prefecture-level city", ["preflcity"] = "prefecture-level city", ["prov"] = "province", ["r"] = "region", ["range"] = "mountain range", ["rcm"] = "regional county municipality", ["rcomun"] = "regional county municipality", ["rdist"] = "regional district", ["rep"] = "republic", ["rhrom"] = "rural hromada", ["riv"] = "river", ["rmun"] = "regional municipality", ["robor"] = "royal borough", ["romp"] = "Roman province", ["runit"] = "regional unit", ["rurmun"] = "rural municipality", ["s"] = "state", ["sar"] = "special administrative region", ["shrom"] = "settlement hromada", ["spref"] = "subprefecture", ["sprefcity"] = "sub-prefectural city", ["sprovcity"] = "subprovincial city", ["submet city"] = "sub-metropolitan city", ["submetropolitan city"] = "sub-metropolitan city", ["sub-prefecture-level city"] = "sub-prefectural city", ["sub-provincial city"] = "subprovincial city", ["sub-provincial district"] = "subprovincial district", ["terr"] = "territory", ["terrauth"] = "territorial authority", ["twp"] = "township", ["twpmun"] = "township municipality", ["uauth"] = "unitary authority", ["ucomm"] = "unincorporated community", ["udist"] = "unitary district", ["uhrom"] = "urban hromada", ["uterr"] = "union territory", ["utwpmun"] = "united township municipality", ["val"] = "valley", ["vdc"] = "village development committee", ["vil"] = "village", ["voi"] = "voivodeship", ["wcomm"] = "Welsh community", } local no_link_def_article = {link = false, article = ""} local no_link_no_article = {link = false, article = false} --[==[ var: These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype `large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the value in the following table is a string, the qualifier will display according to the string. If the value is `true`, the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating `inland sea` as equivalent to `sea`. ]==] export.placetype_qualifiers = { -- generic qualifiers ["huge"] = false, ["tiny"] = false, ["large"] = false, ["big"] = false, ["mid-size"] = false, ["mid-sized"] = false, ["small"] = false, ["sizable"] = false, ["important"] = false, ["long"] = false, ["short"] = false, ["major"] = false, ["minor"] = false, ["high"] = false, ["tall"] = false, ["low"] = false, ["left"] = false, -- left tributary ["right"] = false, -- right tributary ["modern"] = false, -- for use in opposition to "ancient" in another definition -- "former" qualifiers ["abandoned"] = true, ["ancient"] = true, ["deserted"] = true, ["extinct"] = true, ["former"] = false, ["historic"] = "historical", ["historical"] = true, ["medieval"] = true, ["mediaeval"] = true, ["ruined"] = true, ["traditional"] = true, -- sea qualifiers ["coastal"] = true, ["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]] ["maritime"] = true, ["overseas"] = true, ["seaside"] = true, ["beachfront"] = true, ["beachside"] = true, ["riverside"] = true, -- lake qualifiers ["freshwater"] = true, ["saltwater"] = true, ["endorheic"] = true, ["oxbow"] = true, ["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link ["tidal"] = true, -- land qualifiers ["hilltop"] = true, ["hilly"] = true, ["insular"] = true, ["peninsular"] = true, ["chalk"] = true, ["karst"] = true, ["limestone"] = true, ["mountainous"] = true, ["mountaintop"] = true, ["alpine"] = true, ["volcanic"] = true, -- for an island -- political status qualifiers ["autonomous"] = true, ["incorporated"] = true, ["special"] = true, ["unincorporated"] = true, ["coterminous"] = true, -- monetary status/etc. qualifiers ["fashionable"] = true, ["wealthy"] = true, ["affluent"] = true, ["declining"] = true, -- city vs. rural qualifiers ["urban"] = true, ["suburban"] = true, ["exurban"] = true, ["outlying"] = true, ["remote"] = true, ["rural"] = true, ["outback"] = true, ["inner"] = false, ["inner-city"] = true, ["central"] = false, ["outer"] = false, -- land use qualifiers ["residential"] = true, ["agricultural"] = true, ["business"] = true, ["commercial"] = true, ["industrial"] = true, -- business use qualifiers ["railroad"] = true, ["railway"] = true, ["farming"] = true, ["fishing"] = true, ["mining"] = true, ["logging"] = true, ["cattle"] = true, -- tourism use qualifiers ["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne ["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne ["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne -- religious qualifiers ["holy"] = true, ["sacred"] = true, ["religious"] = true, ["secular"] = true, -- qualifiers for nonexistent places ["claimed"] = false, ["fictional"] = true, ["legendary"] = true, ["mythical"] = true, ["mythological"] = true, -- directional qualifiers ["northern"] = false, ["southern"] = false, ["eastern"] = false, ["western"] = false, ["north"] = false, ["south"] = false, ["east"] = false, ["west"] = false, ["northeastern"] = false, ["southeastern"] = false, ["northwestern"] = false, ["southwestern"] = false, ["northeast"] = false, ["southeast"] = false, ["northwest"] = false, ["southwest"] = false, -- seasonal qualifiers ["summer"] = true, -- e.g. for 'summer capital' ["winter"] = true, -- legal status qualifiers -- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]]. ["official"] = true, ["unofficial"] = true, ["de facto"] = true, -- 'de facto capital' ["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link ["de jure"] = true, -- 'de jure capital' ["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link -- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state' -- misc. qualifiers ["planned"] = true, ["chartered"] = true, ["landlocked"] = true, ["uninhabited"] = true, -- superlative qualifiers ["first"] = no_link_def_article, ["second"] = no_link_def_article, -- for "second largest" etc. ["third"] = no_link_def_article, ["fourth"] = no_link_def_article, ["last"] = no_link_def_article, ["only"] = no_link_def_article, ["sole"] = no_link_def_article, ["main"] = no_link_def_article, ["largest"] = no_link_def_article, ["biggest"] = no_link_def_article, ["smallest"] = no_link_def_article, ["shortest"] = no_link_def_article, ["longest"] = no_link_def_article, ["tallest"] = no_link_def_article, ["highest"] = no_link_def_article, ["lowest"] = no_link_def_article, ["leftmost"] = no_link_def_article, ["rightmost"] = no_link_def_article, ["innermost"] = no_link_def_article, ["outermost"] = no_link_def_article, ["northernmost"] = no_link_def_article, ["southernmost"] = no_link_def_article, ["westernmost"] = no_link_def_article, ["easternmost"] = no_link_def_article, ["northwesternmost"] = no_link_def_article, ["southwesternmost"] = no_link_def_article, ["northeasternmost"] = no_link_def_article, ["southeasternmost"] = no_link_def_article, -- several/various ["several"] = no_link_no_article, ["various"] = no_link_no_article, ["numerous"] = no_link_no_article, ["multiple"] = no_link_no_article, ["many"] = no_link_no_article, ["other"] = no_link_no_article, } --[==[ var: In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This is overridden by `placetype_data` and `qualifier_to_placetype_equivs`. ]==] export.former_qualifiers = { ["abandoned"] = {"FORMER"}, ["ancient"] = {"ANCIENT", "FORMER"}, ["former"] = {"FORMER"}, ["extinct"] = {"FORMER"}, ["historic"] = {"FORMER"}, ["historical"] = {"FORMER"}, ["medieval"] = {"ANCIENT", "FORMER"}, ["mediaeval"] = {"ANCIENT", "FORMER"}, ["ruined"] = {"ANCIENT", "FORMER"}, ["traditional"] = {"FORMER"}, } --[==[ var: In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`. ]==] export.qualifier_to_placetype_equivs = { ["fictional"] = "fictional location", ["legendary"] = "mythological location", ["mythical"] = "mythological location", ["mythological"] = "mythological location", -- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands -- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are -- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital. ["claimed"] = "claimed political division", } --[==[ var: Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse mapping also exists. ]==] export.placetype_to_capital_cat = { ["autonomous community"] = "autonomous community capitals", ["canton"] = "cantonal capitals", ["comarca"] = "comarca capitals", ["country"] = "national capitals", -- The following are not obviously different from 'county seats' but the latte terminology is used in the US. ["county"] = "county capitals", ["department"] = "departmental capitals", ["district"] = "district capitals", ["division"] = "division capitals", ["emirate"] = "emirate capitals", ["governorate"] = "governorate capitals", ["hromada"] = "hromada capitals", ["krai"] = "krai capitals", ["metropolitan city"] = "metropolitan city capitals", ["municipality"] = "municipal capitals", ["oblast"] = "oblast capitals", ["okrug"] = "okrug capitals", ["prefecture"] = "prefectural capitals", ["province"] = "provincial capitals", ["raion"] = "raion capitals", ["regency"] = "regency capitals", ["region"] = "regional capitals", ["regional unit"] = "regional unit capitals", ["republic"] = "republic capitals", ["state"] = "state capitals", ["territory"] = "territorial capitals", ["voivodeship"] = "voivodeship capitals", } --[==[ var: This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple ways that placenames can come to be preceded by "the": # Listed here. # Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code just below the map. # The placetype of the placename has `holonym_use_the = true` in its placetype_data. # A regex in placename_the_re matches the placename. Note that "the" is added only before the first holonym in a place description. ]==] export.placename_article = { -- This should only contain info that can't be inferred from [[Module:place/locations]]. ["archipelago"] = { ["Cyclades"] = "the", ["Dodecanese"] = "the", }, ["country"] = { ["Holy Roman Empire"] = "the", }, ["empire"] = { ["Holy Roman Empire"] = "the", }, ["island"] = { ["North Island"] = "the", ["South Island"] = "the", }, ["region"] = { ["Balkans"] = "the", ["Russian Far East"] = "the", ["Caribbean"] = "the", ["Caucasus"] = "the", ["Middle East"] = "the", ["New Territories"] = "the", ["North Caucasus"] = "the", ["South Caucasus"] = "the", ["West Bank"] = "the", ["Gaza Strip"] = "the", }, ["valley"] = { ["San Fernando Valley"] = "the", }, } --[==[ var: Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all holonyms, otherwise only the regexes for the holonym's placetype apply. ]==] export.placename_the_re = { -- We don't need entries for peninsulas, seas, oceans, gulfs or rivers -- because they have holonym_use_the = true. ["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "}, ["bay"] = {"^Vịnh của "}, ["lake"] = {"^Hồ của "}, ["country"] = {"^Republic of ", " Republic$"}, ["republic"] = {"^Republic of ", " Republic$"}, ["region"] = {"^Vùng của "}, ["river"] = {"^Sông của "}, ["local government area"] = {"^Shire of "}, ["county"] = {"^Shire of "}, ["Indian reservation"] = {" Reservation", " Nation"}, ["tribal jurisdictional area"] = {" Reservation", " Nation"}, } --[==[ var: If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of holonyms for categorization (but not display) purposes. ]==] export.cat_implications = { ["region"] = { ["Eastern Europe"] = {"continent/Europe"}, ["Central Europe"] = {"continent/Europe"}, ["Western Europe"] = {"continent/Europe"}, ["South Europe"] = {"continent/Europe"}, ["Southern Europe"] = {"continent/Europe"}, ["Northern Europe"] = {"continent/Europe"}, ["Northeast Europe"] = {"continent/Europe"}, ["Northeastern Europe"] = {"continent/Europe"}, ["Southeast Europe"] = {"continent/Europe"}, ["Southeastern Europe"] = {"continent/Europe"}, ["North Caucasus"] = {"continent/Europe"}, ["South Caucasus"] = {"continent/Asia"}, ["South Asia"] = {"continent/Asia"}, ["Southern Asia"] = {"continent/Asia"}, ["East Asia"] = {"continent/Asia"}, ["Eastern Asia"] = {"continent/Asia"}, ["Central Asia"] = {"continent/Asia"}, ["West Asia"] = {"continent/Asia"}, ["Western Asia"] = {"continent/Asia"}, ["Southeast Asia"] = {"continent/Asia"}, ["North Asia"] = {"continent/Asia"}, ["Northern Asia"] = {"continent/Asia"}, ["Anatolia"] = {"continent/Asia"}, ["Asia Minor"] = {"continent/Asia"}, ["Mesopotamia"] = {"continent/Asia"}, ["North Africa"] = {"continent/Africa"}, ["Central Africa"] = {"continent/Africa"}, ["West Africa"] = {"continent/Africa"}, ["East Africa"] = {"continent/Africa"}, ["Southern Africa"] = {"continent/Africa"}, ["Central America"] = {"continent/Central America"}, ["Caribbean"] = {"continent/North America"}, ["Polynesia"] = {"continent/Oceania"}, ["Micronesia"] = {"continent/Oceania"}, ["Melanesia"] = {"continent/Oceania"}, ["Siberia"] = {"country/Russia", "continent/Asia"}, ["Russian Far East"] = {"country/Russia", "continent/Asia"}, ["South Wales"] = {"constituent country/Wales", "continent/Europe"}, ["Balkans"] = {"continent/Europe"}, ["West Bank"] = {"country/Palestine", "continent/Asia"}, ["Gaza"] = {"country/Palestine", "continent/Asia"}, ["Gaza Strip"] = {"country/Palestine", "continent/Asia"}, } } ------------------------------------------------------------------------------------------ -- Category and display handlers -- ------------------------------------------------------------------------------------------ local function city_type_cat_handler(data) local entry_placetype = data.entry_placetype local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities") if not generic_before_non_cities then internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" .. " setting", entry_placetype) end local plural_entry_placetype = export.pluralize_placetype(entry_placetype) local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group and not spec.is_former_place and not spec.is_city then -- 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))} 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))) 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 = "thành phố", 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 của %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 của %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 của %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, "Capital cities") end return retcats end --[=[ This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used in two ways: # To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and [[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym. # To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments, administrative regions, and for the entire country, and for example we only want to categorize a demonym into [[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym invocation only adds the most specific holonym category and not the category of any containing polity (hence if we add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]). This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston` as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and [[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]], [[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`). Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions Ohio and a holonym for a Columbus in a different country is encountered, because of the function `augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered. The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding language code). ]=] local function generic_place_cat_handler(data) local from_demonym = data.from_demonym local retcats = {} local function insert_retkey(key, spec) if from_demonym then insert(retcats, key) else insert(retcats, ("Địa danh của %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:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when -- no_container_cat is set (e.g. for 'United Kingdom'). if not spec.no_container_cat then for _, container_set in ipairs(container_trail) do local stop_adding_containers = false for _, container in ipairs(container_set) do if not container.spec.no_generic_place_cat then insert_retkey(container.key, container.spec) end if container.spec.no_container_cat then stop_adding_containers = true end end if stop_adding_containers then break end end end return retcats end end --[==[ Special category handler run for all placetypes that checks for specified division placetypes of known locations and categorizes appropriately. ]==] function export.political_division_cat_handler(data) if data.from_demonym then return end local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group then local divlists = {} if spec.divs then insert(divlists, spec.divs) end if spec.addl_divs then insert(divlists, spec.addl_divs) end for _, divlist in ipairs(divlists) do if type(divlist) ~= "table" then divlist = {divlist} end for _, div in ipairs(divlist) do if type(div) == "string" then div = {type = div} end local sgdiv = export.maybe_singularize_placetype(div.type) or div.type local prep = div.prep or "của" 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)) 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("^ ", "") for i, place_desc in ipairs(place_descs) do -- Iterate over all matching locations in case there are multiple, as with Delhi defined as -- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}. for group, key, spec, container_trail in export.iterate_matching_holonym_location { holonym_placetype = possible_placetypes_by_place_desc[i], holonym_placename = term, place_desc = place_desc, } do insert(bare_cats, key) end end end -- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)? -- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There -- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the -- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The -- advantage of checking when the language isn't English is we catch those places that fail to give an English -- translation but where the translation happens to be the same as the other-language spelling. However, I don't -- know how often this situation occurs. check_term(args.pagename or mw.loadData("Module:headword/data").pagename) for _, t in ipairs(args.t) do check_term(t) end local function check_termobj_list(terms) for _, term in ipairs(terms) do if term.eq then check_term(term.eq) end if term.alt or term.term then check_term(term.alt or term.term) end end end for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do local arg = extra_info_terms.arg if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then check_termobj_list(extra_info_terms.terms) end end for _, directive in ipairs(overall_place_spec.directives) do check_termobj_list(directive.terms) end return bare_cats end --[==[ This is used to augment the holonyms associated with a place description with the containing polities. For example, given the following: `# {{tl|place|en|subprefecture|pref/Hokkaido}}.` We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]]. To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms. ]==] function export.augment_holonyms_with_container(place_descs) for _, place_desc in ipairs(place_descs) do if place_desc.holonyms then -- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their -- appropriate position. We don't just put them at the end because some holonyms have use the `:also` -- modifier, which causes category processing to restart at that point after generating categories for a -- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with -- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy -- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's -- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g. -- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the -- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If -- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude -- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`), -- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar -- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration -- rather than modifying the place description once at athe end. for i = #place_desc.holonyms, 1, -1 do local holonym = place_desc.holonyms[i] if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then local group, key, spec, container_trail = export.find_matching_holonym_location { holonym_placetype = holonym.placetype, holonym_placename = holonym.unlinked_placename, holonym_index = i, place_desc = place_desc, } if group and container_trail[1] and not spec.no_auto_augment_container then local augmented_holonyms = {} for j = 1, i do insert(augmented_holonyms, place_desc.holonyms[j]) end for _, containers in ipairs(container_trail) do local any_no_auto_augment_container = false for _, container in ipairs(containers) do any_no_auto_augment_container = any_no_auto_augment_container or container.spec.no_auto_augment_container local containing_type = container.spec.placetype if type(containing_type) == "table" then -- If the containing type is a list, use the first element as the canonical variant. containing_type = containing_type[1] end local full_container_placename, elliptical_container_placename = m_locations.key_to_placename(container.group, container.key) -- Don't side-effect holonyms while processing them. local new_holonym = { -- By the time we run, the display has already been generated so we don't need to -- set display_placename. placetype = containing_type, -- placename_to_key() for the group should correctly handle both full and elliptical -- placenames, but the full placename seems less likely to be ambiguous. FIXME: We -- should just store the key directly and use it when available to avoid having to -- convert key to placename and back to key. unlinked_placename = full_container_placename, -- Indicate that this is an augmented holonym, and was derived from the specified -- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms -- derived from holonyms that are different from the holonym we're searching for but -- of the same placetype. This is to correctly handle a situation like -- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here, -- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and -- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from -- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to -- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match -- in find_matching_holonym_location() because of the mismatch between augmented -- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later -- calls to find_matching_holonym_location() fail to match `Gard` (and likewise -- `Ardèche`) against any known location. To deal with this, we mark augmented -- holoynms as being augmented due to a source holonym, and when processing a given -- holonym, ignore augmented holonyms from other holonyms of the same placetype. -- The restriction to the same placetype is so that `Birmingham` still gets -- correctly disambiguated to Birmingham, England in the example given above near -- the top of this function, using the augmented holonym `c/United Kingdom` added by -- the specified `cc/England` (whose placetype `constituent country` differs from -- the placetype `city` of Birmingham). augmented_from_holonym = holonym, } insert(augmented_holonyms, new_holonym) -- But it is safe to modify other parts of the place_desc. export.key_holonym_into_place_desc(place_desc, new_holonym) end if any_no_auto_augment_container then break end end for j = i + 1, #place_desc.holonyms do insert(augmented_holonyms, place_desc.holonyms[j]) end place_desc.holonyms = augmented_holonyms end end end end end end -- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political -- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city -- neighborhoods or larger geographical areas/regions. We handle this as follows: -- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if -- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that -- categorizes into [[:Category|Districts of Maharashtra, India]]. -- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called -- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g. -- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.) -- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set. -- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if -- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize -- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "của", and -- note the spelling "neighborhoods" because we're in the US.) -- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're -- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or -- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no -- categorization. local function district_neighborhood_cat_handler(data) local function get_plural_entry_placetype(location_spec, container_trail) if data.entry_placetype == "suburb" then return "Suburbs" else -- Check for `british_spelling` setting on the spec itself or any container. local uses_british_spelling = location_spec.british_spelling if uses_british_spelling == nil and container_trail then for _, container_set in ipairs(container_trail) do local must_outer_break = false for _, container in ipairs(container_set) do if container.spec.british_spelling ~= nil then uses_british_spelling = container.spec.british_spelling must_outer_break = true break end end if must_outer_break then break end end end return uses_british_spelling and "Neighbourhoods" or "Neighborhoods" end end -- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire, -- etc.) local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group and not spec.is_former_place and spec.is_city then return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)} end -- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like -- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.) local has_neighborhoods local entry_placetype = data.entry_placetype if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then has_neighborhoods = true else -- Otherwise, make sure the current holonym is city-like. has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt) return export.get_placetype_prop(pt, "has_neighborhoods") end, {continue_on_nil_only = true}) end if has_neighborhoods then -- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written -- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}} -- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need -- to start with the current holonym, which is especially important for neighborhoods and suburbs that -- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously -- we skipped the first/current holonym.) for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc, data.holonym_index) do local other_holonym_data = { holonym_placetype = other_holonym.placetype, holonym_placename = other_holonym.unlinked_placename, holonym_index = other_holonym_index, place_desc = data.place_desc, } local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data) if group and not spec.is_former_place then return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") .. export.get_prefixed_key(key, spec)} end end end end function export.check_already_seen_string(holonym_placename, already_seen_strings) local canon_placename = ulower(m_links.remove_links(holonym_placename)) if type(already_seen_strings) ~= "table" then already_seen_strings = {already_seen_strings} end for _, already_seen_string in ipairs(already_seen_strings) do if canon_placename:find(already_seen_string) then return true end end return false end -- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display -- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already. -- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or -- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym -- placename, ignoring case and links. If the prefix isn't already present, we create a link that -- uses the raw form as the link destination but the prefixed form as the display form, unless the -- holonym already has a link in it, in which case we just add the prefix. local function prefix_display_handler(prefix, holonym_placename, already_seen_strings) if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then return holonym_placename end if holonym_placename:find("%[%[") then return prefix .. " " .. holonym_placename end return prefix .. " [[" .. holonym_placename .. "]]" end -- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms. -- Works identically to prefix_display_handler but for suffixes instead of prefixes. local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link) if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then return holonym_placename end if holonym_placename:find("%[%[") then return holonym_placename .. " " .. suffix end if include_suffix_in_link then return "[[" .. holonym_placename .. " " .. suffix .. "]]" else return "[[" .. holonym_placename .. "]] " .. suffix end end -- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed -- with "borough". local function borough_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.new_york_boroughs[unlinked_placename] then -- Hack: don't display "borough" after the names of NYC boroughs return holonym_placename end return suffix_display_handler("borough", holonym_placename) end local function county_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) -- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]". if m_locations.ireland_counties["Hạt " .. unlinked_placename .. ", Ireland"] or m_locations.northern_ireland_counties["Hạt " .. unlinked_placename .. ", Bắc Ireland"] then return prefix_display_handler("Hạt", holonym_placename) end -- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County". if m_locations.taiwan_counties[unlinked_placename .. ", Đài Loan"] then return suffix_display_handler("Hạt", holonym_placename) end -- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County". if m_locations.romania_counties[unlinked_placename .. ", România"] then return suffix_display_handler("Hạt", 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 .. ", Nhật Bản"] and "" or "prefecture" return suffix_display_handler(suffix, holonym_placename) end -- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized -- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is. local function province_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.bulgaria_provinces[unlinked_placename .. ", Bulgaria"] or m_locations.iran_provinces[unlinked_placename .. ", Iran"] or m_locations.laos_provinces[unlinked_placename .. ", Lào"] or m_locations.north_korea_provinces[unlinked_placename .. ", Cộng hòa Dân chủ Nhân dân Triều Tiên"] or m_locations.south_korea_provinces[unlinked_placename .. ", Hàn Quốc"] or m_locations.thailand_provinces[unlinked_placename .. ", Thái Lan"] or m_locations.turkey_provinces[unlinked_placename .. ", Thổ Nhĩ Kỳ"] or m_locations.vietnam_provinces[unlinked_placename .. ", Việt Nam"] then return suffix_display_handler("Province", holonym_placename) end return holonym_placename end -- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is. local function state_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.nigeria_states[unlinked_placename .. ", Nigeria"] then return suffix_display_handler("State", holonym_placename) end return holonym_placename end -- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]]. local function voivodesip_display_handler(holonym_placetype, holonym_placename) return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link") end ------------------------------------------------------------------------------------------ -- Placetype data -- ------------------------------------------------------------------------------------------ --[==[ var: Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form `Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are used only in [[Module:category tree/topic/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 = "của"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi` (whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under [[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if `c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be categorized as e.g. [[:Category:Geographic and cultural areas of England]]. 3. There is currently one property to control irregular plurals of placetypes: * `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in [[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`, `-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent; for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value even when the default pluralization algorithm works correctly, if the default singularization algorithm won't correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`). 4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those categories: * `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype `village`); (c) to determine whether to add a parent category `political divisions of specific countries` to qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are: *# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire. *# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement. *# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a settlement, such as wards and barangays. *# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an unincorporated community, farm or neighborhood. *# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital any more. *# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc. *# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university, metro station, park or the like. *# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`, etc. qualifier has no effect on the category of these placetypes. *# `generic place`: a place that isn't further qualified into any specific subtype. * `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`, `ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of `dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc. qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class` is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers (one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map `medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes `ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by `get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where `kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data` for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data` but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have an entry for `greenhouse`), we just track the occurrence and end up not categorizing. * `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`, using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]]. * `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent` just above). * `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of `bare_category_parent` if it is a string. * `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or `ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the implementation is the same. * `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`, `neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like `Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like `Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields: ** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an entry in `placetype_data` but may not be the original placetype given by the user); ** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed; ** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME: we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms); ** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]]; ** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or {{tl|demonym-noun}}, instead of being triggered by {{tl|place}}. * `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the `district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `; see the section just above on `cat_handler`. 5. The following preposition-related property keys are recognized: * `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`. * `generic_before_non_cities`: If specified, the appropriate category description handler in [[Module:category tree/topic cat/data/Places]] will recognize categories of the form ` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This is used to generate descriptions for categories added by category handlers and by explicit category specs in the placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify a value for `class` so that the category tree code can determine whether it's a political or non-political division. * `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities. 6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype: * `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values are: *# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly follows an entry placetype); *# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple); *# `"suf"` (the holonym will display as `Holonym placetype`); *# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized). * `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym. Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype `administrative region` specifies `suffix = "region"`. * `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym. * `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take precedence. * `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies `affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies `no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified, without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word. * `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym). Its return value is a string specifying the display form of the holonym. 7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms of the specified placetype. * `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype. * `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article `"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype specified. * `holonym_use_the`: Use `"the"` before holonyms of this placetype. '''NOTE:''' # The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which must have either `link` or `category_link` specified. # Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this placetype. # It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in `placetype_data` or an internal error occurs. ]==] export.placetype_data = { --[=[ If you need to sort the following, do this (using Vim): 1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line entries. 2. Make sure the table uses tabs everywhere for indent, and not spaces. 3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence: :'a,.s/\n/\\n/g :s/\\n\(\t\[\)/\r\1/g The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one command.) 4. Execute the following to sort: :'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //' Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station" before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by ` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern). 5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing :'a,.s/\\n/\r/g Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but to insert a newline in the right sode of a replacement you must use \r. ]=] ["*"] = { link = false, cat_handler = generic_place_cat_handler, }, ["administrative atoll"] = { -- Maldives link = "+w:administrative divisions of the Maldives", preposition = "của", class = "subpolity", }, ["administrative capital"] = { link = "w", fallback = "capital city", }, ["administrative center"] = { link = "w", fallback = "non-city capital", }, ["administrative centre"] = { link = "w", fallback = "administrative center", }, ["administrative county"] = { link = "w", fallback = "county", }, ["administrative district"] = { link = "w", fallback = "district", }, ["administrative headquarters"] = { link = "separately", fallback = "administrative centre", }, ["administrative region"] = { link = true, preposition = "của", suffix = "region", -- but prefix is still "administrative region (of)" fallback = "region", class = "subpolity", }, ["administrative seat"] = { link = "w", fallback = "administrative centre", }, ["administrative territory"] = { link = "separately", preposition = "của", suffix = "territory", -- but prefix is still "administrative territory (of)" fallback = "territory", class = "subpolity", }, ["administrative unit"] = { -- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an -- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term -- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types -- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad -- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need -- to include this so that it can be used as a placetype for Albania, categorizing as communes. link = "w", class = "subpolity", }, ["administrative village"] = { link = "w", preposition = "của", has_neighborhoods = true, class = "settlement", }, ["aimag"] = { -- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province; -- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district. link = "w", fallback = "prefecture", }, ["airport"] = { link = true, class = "man-made structure", default = {true}, }, ["alliance"] = { link = true, fallback = "confederation", }, ["archipelago"] = { link = true, fallback = "island", }, ["area"] = { link = true, preposition = "của", 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 = "của", class = "natural feature", default = {"Seas"}, }, ["arrondissement"] = { link = true, preposition = "của", -- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions -- of departments or provinces. Need to conditionalize on the country for both of the following. class = "subpolity", has_neighborhoods = true, }, ["associated province"] = { link = "separately", fallback = "province", }, ["atoll"] = { -- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to -- conditionalize `class` on the country. See also `administrative atoll`. link = true, class = "natural feature", bare_category_parent = "islands", default = {true}, }, ["autonomous city"] = { link = "w", preposition = "của", fallback = "thành phố", has_neighborhoods = true, }, ["autonomous community"] = { -- Spain; refers to regional entities, not village-like entities, as might be expected from "community" link = true, preposition = "của", class = "subpolity", }, ["autonomous island"] = { -- Comoros; seems like an administrative atoll of the Maldives. link = "+w:autonomous islands of Comoros", preposition = "của", class = "subpolity", }, ["autonomous oblast"] = { link = true, preposition = "của", affix_type = "Suf", no_affix_strings = "oblast", class = "subpolity", }, ["autonomous okrug"] = { link = true, preposition = "của", affix_type = "Suf", no_affix_strings = "okrug", class = "subpolity", }, ["autonomous prefecture"] = { link = true, fallback = "prefecture", }, ["autonomous province"] = { link = "w", fallback = "province", }, ["autonomous region"] = { link = "w", preposition = "của", fallback = "administrative region", -- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region" -- if the user writes 'ar:Suf/Tibet'. affix = "autonomous region", }, ["autonomous republic"] = { link = "w", preposition = "của", class = "subpolity", }, ["autonomous territorial unit"] = { -- Moldova; only two of them, one for Gagauzia and one for Transnistria. link = "w", preposition = "của", class = "subpolity", }, ["autonomous territory"] = { link = "w", fallback = "dependent territory", }, ["bailiwick"] = { -- Jersey, etc. link = true, fallback = "polity", }, ["barangay"] = { -- Philippines link = true, class = "settlement", -- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use -- some of the properties of a neighborhood. fallback = "neighborhood", }, ["barrio"] = { -- Spanish-speaking countries; Philippines link = true, -- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city. -- `class` will need to conditionalize on the country to be completely correct. fallback = "neighborhood", }, ["basin"] = { link = true, fallback = "lake", }, ["vịnh"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"Vùng nước"}, default = {true}, }, ["bãi biển"] = { link = true, class = "natural feature", addl_bare_category_parents = {"nước"}, default = {true}, }, ["beach resort"] = { link = "w", fallback = "resort town", }, ["bishopric"] = { link = true, fallback = "polity", }, ["vùng nước!"] = { -- 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 = "vùng nước", class = "natural feature", addl_bare_category_parents = {"địa mạo", "hệ thống sinh thái", "nước"}, }, ["borough"] = { link = true, preposition = "của", 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 = "của", has_neighborhoods = true, class = "capital", }, ["branch"] = { link = true, preposition = "của", fallback = "river", }, ["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 = "polity", }, ["canton"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["cape"] = { link = true, fallback = "headland", }, ["capital"] = { link = true, fallback = "capital city", }, ["capital city"] = { link = true, category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country", entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", bare_category_parent = "cities", cat_handler = capital_city_cat_handler, default = {true}, -- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}} -- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't -- match against the placetype 'city' of Melbourne. fallback = "thành phố", }, ["caplc"] = { link = "[[capital]] and [[large]]st [[city]]", plural_link = false, fallback = "capital city", }, ["captaincy"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["caravan city"] = { link = "w", fallback = "thành phố", class = "settlement", inherently_former = {"ANCIENT", "FORMER"}, }, ["castle"] = { link = true, fallback = "building", }, ["cathedral city"] = { link = true, fallback = "thành phố", }, ["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 = "của", class = "subpolity", }, ["census town"] = { link = "w", fallback = "town", }, ["central business district"] = { link = true, fallback = "neighborhood", }, ["cercle"] = { -- Mali link = "+w:cercles of Mali", preposition = "của", class = "subpolity", }, ["ceremonial county"] = { link = true, fallback = "county", }, ["chain of islands"] = { link = "[[chain]] of [[island]]s", plural = "chains of islands", plural_link = "[[chain]]s of [[island]]s", fallback = "island", }, ["channel"] = { link = true, fallback = "strait", }, ["charter community"] = { -- Northwest Territories, Canada link = "w", fallback = "village", }, ["thành phố"] = { link = true, generic_before_non_cities = "của", 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", "Cities in +++", "Quốc gia của +++", "National capitals"}, default = {"City-states", "Cities", "Quốc gia", "National capitals"}, }, ["civil parish"] = { -- Mostly England; similar to municipalities link = true, preposition = "của", affix_type = "suf", has_neighborhoods = true, class = "subpolity", }, ["claimed political division"] = { link = "[[claim]]ed [[political]] [[division]]", class = "subpolity", default = {true}, }, ["co-capital"] = { link = "[[co-]][[capital]]", fallback = "capital city", }, ["coal city"] = { link = "+w:coal town", fallback = "thành phố", }, ["coal town"] = { link = "w", fallback = "town", }, ["collectivity"] = { link = "w", preposition = "của", -- 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 = "của", class = "subpolity", }, ["commandery"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"ANCIENT", "FORMER"}, }, ["commonwealth"] = { link = true, preposition = "của", -- No default; applies specifically to Puerto Rico class = "subpolity", }, ["commune"] = { link = true, fallback = "municipality", }, ["community"] = { link = true, category_link = "[[community|communities]] of all sizes", fallback = "village", }, ["community development block"] = { -- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be -- neighborhoods so I'm not setting `has_neighborhoods` for now link = "w", affix_type = "suf", no_affix_strings = "block", class = "subpolity", }, ["comune"] = { -- Italy, Switzerland link = true, fallback = "municipality", }, ["condominium"] = { link = true, fallback = "polity", }, ["confederacy"] = { link = true, fallback = "confederation", }, ["confederation"] = { link = true, fallback = "polity", }, ["constituency"] = { -- currently we have them as political divisions of Namibia but many countries have them link = true, preposition = "của", class = "subpolity", }, ["constituent country"] = { link = true, preposition = "của", class = "subpolity", }, ["constituent part"] = { link = "separately", preposition = "của", class = "subpolity", }, ["constituent republic"] = { -- Of Russia, Yugoslavia, etc. link = "separately", preposition = "của", class = "subpolity", }, ["counties and county-level cities!"] = { -- This is used when grouping counties and county-level cities under prefecture-level cities in China. category_link = "[[county|counties]] and [[county-level city|county-level cities]]", class = "subpolity", }, ["continent"] = { link = true, category_link = false, -- can't occur as a bare category class = "natural feature", default = {"Lục địa"}, }, ["continental region"] = { link = "separately", category_link = false, -- can't occur as a bare category class = "geographic region", fallback = "continent", }, ["lục địa!"] = { category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])", class = "geographic region", default = {"Lục địa"}, }, ["council area"] = { link = true, -- in Scotland; similar to a county preposition = "của", affix_type = "suf", class = "subpolity", }, ["quốc gia"] = { link = true, class = "polity", ["continent/*"] = {true, "Quốc gia"}, default = {"Quốc gia"}, }, ["country-like entities!"] = { category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]", class = "polity", }, ["county"] = { link = true, preposition = "của", display_handler = county_display_handler, class = "subpolity", }, ["county borough"] = { link = true, -- in Wales; similar to a county preposition = "của", affix_type = "suf", fallback = "borough", class = "subpolity", }, ["county seat"] = { link = true, entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", }, ["county town"] = { link = true, entry_placetype_use_the = true, preposition = "của", fallback = "town", has_neighborhoods = true, class = "capital", }, ["county-administered city"] = { -- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city. -- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city. link = "w", fallback = "thành phố", has_neighborhoods = true, class = "settlement", }, ["county-controlled city"] = { -- Taiwan link = "w", fallback = "county-administered city", }, ["county-level city"] = { -- PR China link = "w", fallback = "prefecture-level city", }, ["crater lake"] = { link = true, fallback = "lake", }, ["creek"] = { link = true, fallback = "stream", }, ["Crown colony"] = { link = "+crown colony", fallback = "crown colony", }, ["crown colony"] = { link = true, fallback = "colony", }, ["Crown dependency"] = { link = true, fallback = "dependent territory", }, ["crown dependency"] = { link = true, fallback = "dependent territory", }, ["cultural area"] = { link = "w", fallback = "geographic and cultural area", }, ["cultural region"] = { link = "w", fallback = "geographic and cultural area", }, ["delegation"] = { -- Tunisia link = "+w:delegations of Tunisia", preposition = "của", class = "subpolity", }, ["department"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["departmental capital"] = { link = "separately", fallback = "capital city", }, ["dependency"] = { link = true, fallback = "dependent territory", }, ["dependent territory"] = { link = "w", preposition = "của", class = "subpolity", former_type = "dependent territory", bare_category_parent = "political divisions", ["country/*"] = {true}, default = {true}, }, ["hoang mạc"] = { link = true, class = "natural feature", addl_bare_category_parents = {"hệ thống sinh thái"}, default = {true}, }, ["deserted mediaeval village"] = { link = "w", fallback = "deserted medieval village", }, ["deserted medieval village"] = { link = "w", fallback = "ANCIENT settlement", }, ["direct-administered municipality"] = { -- China link = "+w:direct-administered municipalities of China", fallback = "municipality", }, ["direct-controlled municipality"] = { -- several countries link = "w", fallback = "municipality", }, ["distributary"] = { link = true, preposition = "của", fallback = "river", }, ["district"] = { link = true, preposition = "của", affix_type = "suf", -- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to -- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class -- is "settlement" or "subpolity". class = "subpolity", cat_handler = district_neighborhood_cat_handler, -- No default. Countries for which districts are political divisions will get entries. }, ["districts and autonomous regions!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Portugal. category_link = "[[district]]s and [[autonomous region]]s", class = "subpolity", }, ["districts and autonomous territorial units!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Moldova. category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s", class = "subpolity", }, ["district capital"] = { link = "separately", fallback = "capital city", }, ["district headquarters"] = { link = "separately", fallback = "administrative centre", }, ["district municipality"] = { -- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in -- South Africa, district municipalities group local municipalities and hence won't have neighborhoods. link = "w", preposition = "của", affix_type = "suf", no_affix_strings = {"district", "municipality"}, fallback = "municipality", class = "subpolity", }, ["division"] = { link = true, preposition = "của", class = "subpolity", }, ["division capital"] = { link = "separately", fallback = "capital city", }, ["dome"] = { link = true, fallback = "mountain", }, ["dormant volcano"] = { link = true, fallback = "volcano", }, ["duchy"] = { link = true, fallback = "polity", }, ["emirate"] = { link = true, preposition = "của", -- FIXME: Can be subpolities (of the United Arab Emirates). fallback = "polity", }, ["empire"] = { link = true, fallback = "polity", }, ["enclave"] = { link = true, preposition = "của", -- Enclaves can theoretically be any size but assume a subpolity. class = "subpolity", }, ["entity"] = { -- Bosnia and Herzegovina link = "+w:entities of Bosnia and Herzegovina", preposition = "của", class = "subpolity", }, ["escarpment"] = { link = true, fallback = "mountain", }, ["ethnographic region"] = { -- used in Lithuania link = "+w:ethnographic regions of Lithuania", fallback = "geographic and cultural area", }, ["exclave"] = { link = true, preposition = "của", -- 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 = "của", fallback = "thành phố", }, ["federal district"] = { link = true, preposition = "của", -- 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 = "của", class = "subpolity", }, ["federal territory"] = { link = "w", fallback = "territory", }, ["fictional location"] = { link = "separately", former_type = "!", class = "hypothetical location", bare_category_parent = "places", default = {true}, }, ["First Nations reserve"] = { -- Canada link = "[[First Nations]] [[w:Indian reserve|reserve]]", -- Wikipedia uses "Indian reserve"; presumably that is the legal term fallback = "Indian reserve", class = "subpolity", }, ["fjord"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["footpath"] = { link = true, fallback = "road", }, ["rừng"] = { link = true, class = "natural feature", addl_bare_category_parents = {"hệ thống sinh thái", "lâm nghiệp"}, 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 = "của", 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 = "của", preposition = "của", class = "geographic region", bare_category_parent = "places", ["country/*"] = {true}, ["constituent country/*"] = {true}, ["continent/*"] = {true}, default = {true}, }, ["geographic area"] = { link = "+w:geographic region", fallback = "geographic and cultural area", }, ["geographic region"] = { link = "w", fallback = "geographic and cultural area", }, ["geographical area"] = { link = "w", fallback = "geographic and cultural area", }, ["geographical region"] = { link = "w", fallback = "geographic and cultural area", }, ["geopolitical zone"] = { -- Nigeria link = true, preposition = "của", class = "subpolity", }, ["gewog"] = { -- Bhutan link = true, preposition = "của", class = "subpolity", }, ["ghost town"] = { link = true, generic_before_non_cities = "in", class = "non-admin settlement", bare_category_parent = "former settlements", cat_handler = city_type_cat_handler, default = {true}, }, ["glen"] = { link = true, fallback = "valley", }, ["governorate"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["greater administrative region"] = { -- China (former division) link = "w", preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["gromada"] = { -- Poland (former division) link = "w", preposition = "của", 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", }, ["vịnh biển"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["hamlet"] = { link = true, fallback = "village", }, ["harbor city"] = { link = "separately", fallback = "thành phố", }, ["harbor town"] = { link = "separately", fallback = "town", }, ["harbour city"] = { link = "separately", fallback = "thành phố", }, ["harbour town"] = { link = "separately", fallback = "town", }, ["mũi đất"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["headquarters"] = { link = "w", fallback = "administrative centre", }, ["bãi hoang"] = { link = true, fallback = "đồng hoang", }, ["hemisphere"] = { link = true, entry_placetype_use_the = true, fallback = "continental region", }, ["highway"] = { link = true, fallback = "road", }, ["đồi"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["hill station"] = { link = "w", fallback = "town", }, ["hill town"] = { link = "w", fallback = "town", }, ["historic region"] = { -- provided only for the link link = "+w:historical region", fallback = "FORMER geographic region", }, ["historical county"] = { -- needed for historical counties of England/etc. link = "+w:historic county", fallback = "FORMER subpolity", }, ["historical region"] = { -- provided only for the link link = "w", fallback = "FORMER geographic region", }, ["home rule city"] = { link = "w", fallback = "thành phố", }, ["home rule municipality"] = { link = "w", fallback = "municipality", }, ["hot spring"] = { link = true, fallback = "spring", }, ["house"] = { link = true, fallback = "building", }, ["housing estate"] = { -- not the same as a housing project (i.e. public housing) link = true, -- not exactly the case but approximately fallback = "neighborhood", }, ["hromada"] = { -- Ukraine link = "w", disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'", disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'", preposition = "của", affix_type = "suf", class = "subpolity", }, ["inactive volcano"] = { link = "w", fallback = "dormant volcano", }, ["independent city"] = { link = true, fallback = "thành phố", }, ["independent town"] = { link = "+independent city", fallback = "town", }, ["Indian reservation"] = { link = "w", -- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations -- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts -- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is, -- so this must still be the legal term. preposition = "của", 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 = "của", class = "subpolity", default = {true}, }, ["inland sea"] = { -- note, we also have 'inland' as a qualifier link = true, fallback = "sea", }, ["inner city area"] = { link = "[[inner city]] [[area]]", fallback = "neighborhood", }, ["đảo"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["island country"] = { -- FIXME: The following should map to both 'island' and 'country'. link = "w", fallback = "country", }, ["island group"] = { link = "separately", fallback = "island", }, ["island municipality"] = { link = "w", fallback = "municipality", }, ["islet"] = { link = "w", fallback = "island", }, ["Israeli settlement"] = { link = "w", class = "settlement", default = {true}, }, ["judicial capital"] = { link = "w", fallback = "capital city", }, ["khanate"] = { link = true, fallback = "polity", }, ["kibbutz"] = { link = true, plural = "kibbutzim", class = "non-admin settlement", default = {true}, }, ["kingdom"] = { link = true, fallback = "monarchy", }, ["krai"] = { link = true, preposition = "của", affix_type = "Suf", class = "subpolity", }, ["hồ"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["địa mạo!"] = { category_link = "[[địa mạo]]", bare_category_parent = "địa danh", addl_bare_category_parents = {"Trái Đất"}, }, ["largest city"] = { link = "[[large]]st [[city]]", entry_placetype_use_the = true, fallback = "thành phố", has_neighborhoods = true, }, ["league"] = { link = true, fallback = "confederation", }, ["legislative capital"] = { link = "separately", fallback = "capital city", }, ["library"] = { link = true, fallback = "building", }, ["lieutenancy area"] = { -- used in the United Kingdom; per Wikipedia: -- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does -- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of -- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate -- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on -- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern -- Ireland correspond to the six counties and two former county boroughs.[3] link = "w", fallback = "ceremonial county", }, ["local authority district"] = { link = "w", fallback = "local government district", }, ["local government area"] = { -- Australia link = "w", preposition = "của", class = "subpolity", }, ["local council"] = { -- Malta; similar to municipalities link = "+w:local councils of Malta", preposition = "của", fallback = "municipality", }, ["local government district"] = { link = "w", preposition = "của", affix_type = "suf", affix = "district", class = "subpolity", }, ["local government district with borough status"] = { link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]", plural = "local government districts with borough status", plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]", preposition = "của", affix_type = "suf", affix = "district", class = "subpolity", }, ["local urban district"] = { link = "w", fallback = "unincorporated community", }, ["locality"] = { link = "+w:locality (settlement)", -- not necessarily true, but usually is the case fallback = "village", }, ["London borough"] = { link = "w", preposition = "của", affix_type = "pref", affix = "borough", fallback = "local government district with borough status", has_neighborhoods = true, }, ["macroregion"] = { link = true, fallback = "region", }, ["man-made structures!"] = { category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s", bare_category_parent = "places", }, ["manor"] = { -- FIXME: or is this more like a farm? link = true, fallback = "building", }, ["marginal sea"] = { link = true, preposition = "của", fallback = "sea", }, ["market city"] = { link = "+market town", fallback = "thành phố", }, ["market town"] = { link = true, fallback = "town", }, ["massif"] = { link = true, fallback = "mountain", }, ["megacity"] = { link = true, fallback = "thành phố", }, ["metro station"] = { link = true, class = "man-made structure", }, ["metropolitan borough"] = { link = true, preposition = "của", affix_type = "Pref", no_affix_strings = {"borough", "thành phố"}, fallback = "local government district", has_neighborhoods = true, }, ["metropolitan city"] = { -- These exist e.g. in Italy and are more like municipalities or even provinces than cities. link = true, preposition = "của", affix_type = "Pref", no_affix_strings = {"metropolitan", "thành phố"}, class = "subpolity", }, ["metropolitan county"] = { link = true, fallback = "county", }, ["metropolitan municipality"] = { -- In South Africa, metropolitan municipalities group local municipalities and are like districts, between -- provinces and municipalities. -- In Turkey, metropolitan municipalities are provinces-level. link = "w", preposition = "của", affix_type = "Suf", no_affix_strings = {"metropolitan", "municipality"}, fallback = "municipality", class = "subpolity", }, ["microdistrict"] = { -- residential complex in post-Soviet states link = true, fallback = "neighborhood", }, ["micronations!"] = { -- FIXME, merge with microstate category_link = "[[micronation]]s", bare_category_parent = "quốc gia", }, ["microstate"] = { link = true, fallback = "country", }, ["military base"] = { link = "w", class = "settlement", -- or "man-made structure"? default = {true}, }, ["minster town"] = { -- England link = "separately", fallback = "town", }, ["monarchy"] = { link = true, fallback = "polity", }, ["đồng hoang"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo", "hệ thống sinh thái"}, default = {true}, }, ["thảo nguyên"] = { link = true, fallback = "đồng hoang", }, ["motorway"] = { link = true, fallback = "road", }, ["mountain"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, }, ["mountain indigenous district"] = { -- Taiwan link = "+w:district (Taiwan)", fallback = "district", }, ["mountain indigenous township"] = { -- Taiwan link = "+w:township (Taiwan)", fallback = "township", }, ["mountain pass"] = { link = true, -- The default plural algorithm gets this right but the singularization algorithm incorrectly converts -- passes -> passe, so put an entry here to ensure we singularize correctly. plural = "mountain passes", class = "natural feature", addl_bare_category_parents = {"mountains"}, default = {true}, }, ["mountain range"] = { link = true, fallback = "mountain", }, ["mountainous region"] = { link = "separately", fallback = "region", }, ["mukim"] = { -- Malaysia, Brunei, Indonesia, Singapore link = true, preposition = "của", 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 = "của", affix_type = "Pref", no_affix_strings = "district", fallback = "municipality", }, ["municipality"] = { link = true, preposition = "của", has_neighborhoods = true, class = "subpolity", }, ["municipality with city status"] = { link = "[[municipality]] with [[w:city status|city status]]", plural = "municipalities with city status", plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]", fallback = "municipality", }, ["museum"] = { link = true, fallback = "building", }, ["địa danh thần thoại"] = { link = "địa danh thần thoại", former_type = "!", class = "hypothetical location", bare_category_parent = "địa danh", default = {true}, }, ["named bridges!"] = { category_link = "notable [[bridge]]s", bare_category_parent = "man-made structures", addl_bare_category_parents = {"bridges"}, }, ["named buildings!"] = { category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s", bare_category_parent = "man-made structures", addl_bare_category_parents = {"buildings"}, }, ["named roads!"] = { category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures", bare_category_parent = "man-made structures", addl_bare_category_parents = {"roads"}, }, ["national capital"] = { link = "w", fallback = "capital city", }, ["national park"] = { link = true, fallback = "park", }, ["đặc điểm tự nhiên!"] = { category_link = "tổng hợp các yếu tố vật chất hình thành tồn tại", bare_category_parent = "địa danh", }, ["neighborhood"] = { -- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which -- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the -- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the -- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods". -- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also -- categorize as neighbo(u)rhoods.) link = true, -- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]]. generic_before_non_cities = "in", generic_before_cities = "của", -- 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 "của" before cities and "in" before non-cities regardless. (FIXME: We should change that.) preposition = "của", class = "non-admin settlement", cat_handler = district_neighborhood_cat_handler, }, ["neighbourhood"] = { link = true, category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]", category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions", fallback = "neighborhood", }, ["new area"] = { -- China (type of economic development zone, varying greatly in size) link = "w", preposition = "in", class = "subpolity", --? }, ["new town"] = { link = true, fallback = "town", }, ["non-city capital"] = { link = "[[capital]]", entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", cat_handler = function(data) return capital_city_cat_handler(data, "non-city") end, -- FIXME, do we need the following? default = {true}, }, ["non-metropolitan county"] = { link = "w", fallback = "county", }, ["non-metropolitan district"] = { link = "w", fallback = "local government district", }, ["non-sovereign kingdom"] = { -- especially in Africa and Asia link = "+w:non-sovereign monarchy", generic_before_non_cities = "in", class = "subpolity", ["country/*"] = {true}, ["continent/*"] = {true}, default = {true}, }, ["non-sovereign monarchy"] = { link = "w", fallback = "non-sovereign kingdom", }, ["oblast"] = { link = true, preposition = "của", 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", }, ["đại dương"] = { link = true, class = "natural feature", addl_bare_category_parents = {"biển", "vùng nước"}, default = {true}, }, ["okrug"] = { link = true, preposition = "của", 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 = "của", 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 = "của", fallback = "municipality", has_neighborhoods = true, }, ["parish seat"] = { link = true, entry_placetype_use_the = true, preposition = "của", class = "capital", has_neighborhoods = true, }, ["park"] = { link = true, class = "man-made structure", default = {true}, }, ["pass"] = { link = "+mountain pass", -- The default plural algorithm gets this right but the singularization algorithm incorrectly converts -- passes -> passe, so put an entry here to ensure we singularize correctly. plural = "passes", fallback = "mountain pass", }, ["path"] = { link = true, fallback = "road", }, ["peak"] = { link = true, fallback = "mountain", }, ["peninsula"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, }, ["periphery"] = { link = true, preposition = "của", class = "subpolity", }, ["địa danh!"] = { generic_before_non_cities = "của", generic_before_cities = "của", 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 = "tên", }, ["planned community"] = { -- Include this so we don't categorize 'planned community' into villages, as 'community' does. link = true, class = "settlement", has_neighborhoods = true, }, ["plateau"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, -- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category }, ["Polish colony"] = { link = "[[w:colony (Poland)|colony]]", affix_type = "suf", affix = "colony", fallback = "village", has_neighborhoods = true, }, ["political divisions!"] = { category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s", bare_category_parent = "places", }, ["tổ chức chính trị"] = { link = true, category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]", class = "polity", bare_category_parent = "địa danh", default = {true}, }, ["populated place"] = { link = "+w:populated place", -- not necessarily true, but usually is the case fallback = "village", }, ["port"] = { link = true, class = "man-made structure", default = {true}, }, ["port city"] = { -- FIXME: should categorize into "Ports" as well as "Cities" link = true, fallback = "thành phố", }, ["port town"] = { -- FIXME: should categorize into "Ports" as well as "Towns" link = "w", fallback = "town", }, ["prefecture"] = { -- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France. -- May need `has_neighborhoods` to be a function. link = true, preposition = "của", 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 = "của", class = "subpolity", }, ["preserved county"] = { -- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more -- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22. link = "w", preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["primary area"] = { -- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden link = "+w:sv:primärområde", fallback = "neighborhood", }, ["principality"] = { link = true, fallback = "monarchy", }, ["promontory"] = { link = true, fallback = "headland", }, ["protectorate"] = { link = true, fallback = "dependent territory", }, ["province"] = { link = true, preposition = "của", 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 = "capital city", }, ["raion"] = { link = true, preposition = "của", affix_type = "Suf", class = "subpolity", }, ["ranch"] = { link = true, fallback = "farm", }, ["range"] = { -- FIXME: Where is this used? Is it a mountain range? link = true, class = "natural feature", }, ["regency"] = { link = true, preposition = "của", class = "subpolity", }, ["region"] = { link = true, preposition = "của", -- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area' fallback = "geographic and cultural area", -- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region class = "geographic region", }, ["regional capital"] = { link = "separately", fallback = "capital city", }, ["regional county municipality"] = { -- Quebec link = "w", preposition = "của", affix_type = "Suf", no_affix_strings = {"municipality", "county"}, fallback = "municipality", }, ["regional district"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "district", fallback = "district", }, ["regional municipality"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "municipality", fallback = "municipality", }, ["regional unit"] = { link = "w", preposition = "của", affix_type = "suf", class = "subpolity", }, ["registration county"] = { -- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical -- purposes (registration of births, deaths and marriages, and for the output of census information). link = "w", fallback = "county", }, ["republic"] = { -- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case. link = true, fallback = "constituent republic", }, ["research base"] = { link = "+w:research station", fallback = "research station", }, ["research station"] = { link = "w", class = "non-admin settlement", -- or "man-made structure"? default = {true}, }, ["reservoir"] = { link = true, fallback = "lake", }, ["residential area"] = { link = "separately", fallback = "neighborhood", }, ["resort city"] = { link = "w", fallback = "thành phố", }, ["resort town"] = { link = "w", fallback = "town", }, ["sông"] = { link = true, generic_before_non_cities = "của", class = "natural feature", addl_bare_category_parents = {"vùng nước"}, cat_handler = city_type_cat_handler, ["continent/*"] = {true}, default = {true}, }, ["river island"] = { link = "w", fallback = "island", }, ["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 = "của", affix_type = "Pref", no_affix_strings = {"royal", "borough"}, fallback = "local government district with borough status", has_neighborhoods = true, }, ["royal burgh"] = { link = true, fallback = "borough", }, ["royal capital"] = { link = "w", fallback = "capital city", }, ["rural committee"] = { -- Hong Kong; a group of villages link = "w", affix_type = "Suf", has_neighborhoods = true, class = "settlement", }, ["rural community"] = { -- New Brunswick link = "+w:list of municipalities in New_Brunswick#Rural communities", fallback = "municipality", }, ["rural hromada"] = { link = "[[rural]] [[w:hromada|hromada]]", affix_type = "suf", fallback = "hromada", }, ["rural municipality"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "municipality", fallback = "municipality", has_neighborhoods = true, --? }, ["rural township"] = { -- Taiwan link = "+w:rural township (Taiwan)", fallback = "township", }, ["sanctuary"] = { link = true, fallback = "temple", }, ["satrapy"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"ANCIENT", "FORMER"}, }, ["biển"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {"Biển"}, }, ["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 = "của", class = "subpolity", }, ["self-administered division"] = { -- Myanmar (only one of them: Wa Self-Administered Division) link = "w", fallback = "self-administered area", }, ["self-administered zone"] = { -- Myanmar (five of them) link = "w", fallback = "self-administered area", }, ["separatist state"] = { link = "separately", fallback = "unrecognized country", }, ["settlement"] = { link = true, category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s", bare_category_parent = "places", -- not necessarily true, but usually is the case fallback = "village", }, ["settlement hromada"] = { link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]", affix_type = "suf", fallback = "hromada", }, ["sheading"] = { -- Isle of Man link = true, fallback = "district", }, ["sheep station"] = { -- Australia link = true, fallback = "farm", }, ["shire"] = { link = true, fallback = "county", }, ["shire county"] = { link = "w", fallback = "county", }, ["shire town"] = { link = true, fallback = "county seat", }, ["ski resort city"] = { link = "[[ski resort]] [[city]]", fallback = "thành phố", }, ["ski resort town"] = { link = "[[ski resort]] [[town]]", fallback = "town", }, ["spa city"] = { link = "+w:spa town", fallback = "thành phố", }, ["spa town"] = { link = "w", fallback = "town", }, ["space station"] = { link = true, fallback = "research station", }, ["special administrative region"] = { -- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a -- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia -- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special -- administrative areas" link = "+w:special administrative regions of China", preposition = "của", class = "subpolity", has_neighborhoods = true, --? -- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves -- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing suffix = "", }, ["special collectivity"] = { link = "w", fallback = "collectivity", }, ["special municipality"] = { -- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands link = "w", fallback = "municipality", }, ["special ward"] = { -- Tokyo link = true, fallback = "municipality", }, ["spit"] = { link = true, fallback = "peninsula", }, ["spring"] = { link = true, class = "natural feature", default = {true}, }, ["star"] = { link = true, class = "natural feature", default = {true}, }, ["state"] = { link = true, preposition = "của", class = "subpolity", -- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign -- entity. The latter appears more common (e.g. in various "ancient states" of East Asia). former_type = "polity", }, ["states and territories!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Australia. category_link = "[[state]]s and [[territory|territories]]", class = "subpolity", }, ["states and union territories!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case India. category_link = "[[state]]s and [[union territory|union territories]]", class = "subpolity", }, ["state capital"] = { link = true, fallback = "capital city", }, ["state park"] = { link = true, fallback = "park", }, ["state-level new area"] = { -- China (type of economic development zone, varying greatly in size) link = "w", fallback = "new area", }, ["statistical region"] = { -- Slovenia link = true, fallback = "administrative region", }, ["statutory city"] = { link = "w", fallback = "thành phố", }, ["statutory town"] = { link = "w", fallback = "town", }, ["strait"] = { link = true, class = "natural feature", addl_bare_category_parents = {"bodies of water"}, default = {true}, }, ["stream"] = { link = true, fallback = "river", }, ["street"] = { link = true, fallback = "road", }, ["strip"] = { link = true, fallback = "geographic region", }, ["strip of land"] = { link = "[[strip]] of [[land]]", plural = "strips of land", plural_link = "[[strip]]s of [[land]]", fallback = "geographic region", }, ["sub-metropolitan city"] = { link = "+w:List of cities in Nepal#Sub-metropolitan cities", fallback = "thành phố", }, ["sub-prefectural city"] = { link = "w", fallback = "subprovincial city", }, ["subdistrict"] = { link = true, preposition = "của", 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 = "của", 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 = "của", class = "subpolity", }, ["subprovince"] = { link = true, preposition = "của", 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 = "của", class = "subpolity", }, ["subregion"] = { link = true, fallback = "geographic region", }, ["suburb"] = { link = true, -- The following text is suitable for the top-level description of a suburb as well as categories of the form -- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago', -- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]". category_link = "[[suburb]]s of [[city|cities]]", category_link_before_city = "[[suburb]]s", -- See comments under "neighborhood" for the following three settings. They are used by -- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories -- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a -- given page), which hardcodes "in" for non-cities and "của" for cities. (FIXME: Change this.) generic_before_non_cities = "in", generic_before_cities = "của", preposition = "của", has_neighborhoods = true, --? class = "non-admin settlement", --? cat_handler = district_neighborhood_cat_handler, }, ["suburban area"] = { link = "w", fallback = "suburb", }, ["subway station"] = { link = "w", fallback = "metro station", }, ["sum"] = { -- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia), -- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion). link = "+w:sum (administrative division)", -- This fallback is somewha arbitrary. We could use "county" but that has a display handler -- which we don't want to be active (FIXME: If the display handler would be active, that's a bug). fallback = "division", }, ["supercontinent"] = { link = true, fallback = "continent", }, ["tehsil"] = { link = true, affix_type = "suf", no_affix_strings = {"tehsil", "tahsil"}, class = "subpolity", }, ["temple"] = { link = true, fallback = "building", }, ["territorial authority"] = { link = "w", fallback = "district", }, ["territory"] = { link = true, preposition = "của", class = "subpolity", }, ["theme"] = { link = "+w:theme (Byzantine district)", preposition = "của", class = "subpolity", }, ["town"] = { link = true, generic_before_non_cities = "in", has_neighborhoods = true, class = "settlement", cat_handler = city_type_cat_handler, default = {true}, }, ["town with bystatus"] = { -- can't use templates in links currently link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]", plural = "towns with bystatus", plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]", fallback = "town", }, ["township"] = { link = true, has_neighborhoods = true, class = "settlement", --? default = {true}, }, ["township municipality"] = { -- Quebec link = "+w:township municipality (Quebec)", preposition = "của", fallback = "municipality", has_neighborhoods = true, --? }, ["traditional county"] = { link = true, fallback = "county", }, ["traditional region"] = { -- FIXME: Verify this works. Same for 'historic(al) region'. -- provided only for the link link = "w", fallback = "FORMER geographic region", }, ["trail"] = { link = true, fallback = "road", }, ["treaty port"] = { link = "w", fallback = "thành phố", class = "settlement", inherently_former = {"FORMER"}, }, ["tributary"] = { link = true, preposition = "của", fallback = "river", }, ["underground station"] = { link = "w", fallback = "metro station", }, ["unincorporated area"] = { link = "w", -- I don't know if this fallback makes sense everywhere. fallback = "unincorporated community", }, ["unincorporated community"] = { link = true, generic_before_non_cities = "in", class = "non-admin settlement", }, ["unincorporated territory"] = { link = "w", fallback = "territory", }, ["union territory"] = { -- India link = true, preposition = "của", entry_placetype_indefinite_article = "a", class = "subpolity", }, ["unitary authority"] = { -- UK, New Zealand link = true, entry_placetype_indefinite_article = "a", fallback = "local government district", }, ["unitary district"] = { link = "w", entry_placetype_indefinite_article = "a", fallback = "local government district", }, ["united township municipality"] = { -- Quebec link = "+w:united township municipality (Quebec)", entry_placetype_indefinite_article = "a", fallback = "township municipality", has_neighborhoods = true, --? }, ["university"] = { link = true, entry_placetype_indefinite_article = "a", class = "man-made structure", default = {true}, }, ["unrecognised country"] = { link = "w", fallback = "unrecognized country", }, ["unrecognized and nearly unrecognized countries!"] = { category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}", bare_category_parent = "country-like entities", }, ["unrecognized country"] = { link = "w", class = "polity", default = {"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 = "thành phố", }, ["urban township"] = { link = "w", fallback = "township", }, ["urban-type settlement"] = { -- appears to be a particular type of small urban settlement in post-Soviet states, -- had an administrative function. link = "w", fallback = "town", }, ["valley"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms", "water"}, default = {true}, }, ["viceroyalty"] = { -- in essence, a type of colony link = true, fallback = "dependent territory", }, ["village"] = { link = true, generic_before_non_cities = "in", category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s", class = "settlement", cat_handler = city_type_cat_handler, default = {true}, }, ["village development committee"] = { -- former administrative structure in Nepal; also exists in India but not as a formal unit link = "+w:village development committee (Nepal)", inherently_former = {"FORMER"}, fallback = "village", }, ["village municipality"] = { -- Quebec link = "+w:village municipality (Quebec)", preposition = "của", fallback = "municipality", has_neighborhoods = true, --? }, ["voivodeship"] = { -- Poland link = true, display_handler = voivodeship_display_handler, preposition = "của", class = "subpolity", }, ["volcano"] = { link = true, plural = "volcanoes", class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true, "Mountains"}, }, ["phường"] = { 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 = "của", affix_type = "suf", affix = "community", has_neighborhoods = true, class = "settlement", }, ["zone"] = { -- administrative division of Ethiopia, Qatar, Nepal, India link = "+w:zone#Place names", preposition = "của", class = "subpolity", }, ---------------------------------------------------------------------------------------------- -- Categories for former places -- ---------------------------------------------------------------------------------------------- ["ANCIENT capital"] = { link = false, entry_placetype_use_the = true, preposition = "của", 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 = "của", has_neighborhoods = true, class = "capital", default = {"Former capitals"}, }, ["former capitals!"] = { category_link = "former [[capital]] [[city|cities]] and [[town]]s", bare_category_parent = "settlements", }, ["former counties and county-level cities!"] = { -- For categorizing former counties and county-level cities of China category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]", bare_category_breadcrumb = "counties and county-level cities", bare_category_parent = "former political divisions", }, ["FORMER county"] = { -- For categorizing former counties and county-level cities of China link = false, fallback = "FORMER subpolity", }, ["FORMER county-level city"] = { -- For categorizing former counties and county-level cities of China link = false, fallback = "FORMER subpolity", }, ["former countries and country-like entities!"] = { category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist", bare_category_breadcrumb = "countries and country-like entities", bare_category_parent = "former polities", }, ["FORMER country"] = { link = false, class = "polity", default = {"Former countries and country-like entities"}, }, ["former dependent territories!"] = { category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist", bare_category_breadcrumb = "dependent territories", bare_category_parent = "former political divisions", }, ["FORMER dependent territory"] = { link = false, preposition = "của", class = "subpolity", default = {"Former dependent territories"}, }, ["former districts!"] = { -- For categorizing former districts of China category_link = "no-longer-existing [[district]]s", bare_category_breadcrumb = "districts", bare_category_parent = "former political divisions", }, ["FORMER district"] = { -- For categorizing former districts of China link = false, fallback = "FORMER subpolity", }, ["FORMER geographic region"] = { link = false, fallback = "geographic and cultural area", }, ["FORMER man-made structure"] = { link = false, class = "man-made structure", default = {"Former man-made structures"}, }, ["former man-made structures!"] = { category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist", bare_category_breadcrumb = "man-made structures", bare_category_parent = "former places", }, ["former municipalities!"] = { -- For categorizing former municipalities of the Netherlands category_link = "no-longer-existing [[municipality|municipalities]]", bare_category_breadcrumb = "municipalities", bare_category_parent = "former political divisions", }, ["FORMER municipality"] = { -- For categorizing former municipalities of the Netherlands link = false, fallback = "FORMER subpolity", }, ["FORMER natural feature"] = { link = false, class = "natural feature", default = {"Former natural features"}, }, ["former natural features!"] = { category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist", bare_category_breadcrumb = "natural features", bare_category_parent = "former places", }, ["FORMER non-admin settlement"] = { link = false, class = "non-admin settlement", fallback = "FORMER settlement", }, ["former places!"] = { category_link = "[[place]]s of all sorts that no longer exist", bare_category_breadcrumb = "former", bare_category_parent = "places", }, ["former political divisions!"] = { category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist", bare_category_breadcrumb = "political divisions", bare_category_parent = "former places", }, ["former polities!"] = { category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist", bare_category_breadcrumb = "polities", bare_category_parent = "former places", }, ["FORMER polity"] = { link = false, class = "polity", default = {"Former polities"}, }, ["former prefectures!"] = { -- For categorizing former prefectures of China category_link = "no-longer-existing [[prefecture]]s", bare_category_breadcrumb = "prefectures", bare_category_parent = "former political divisions", }, ["FORMER prefecture"] = { -- For categorizing former prefectures of China link = false, fallback = "FORMER subpolity", }, ["former provinces!"] = { -- For categorizing former provinces of China, etc. category_link = "no-longer-existing [[province]]s", bare_category_breadcrumb = "provinces", bare_category_parent = "former political divisions", }, ["FORMER province"] = { -- For categorizing ancient/historical/former provinces of the Roman Empire link = false, fallback = "FORMER subpolity", }, ["former region"] = { -- A former region is considered a former political division, but not a 'historical/traditional/etc.' region. link = "separately", preposition = "của", inherently_former = {"FORMER"}, class = "subpolity", }, ["FORMER settlement"] = { link = false, has_neighborhoods = true, class = "settlement", default = {"Former settlements"}, }, ["former settlements!"] = { category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified", bare_category_breadcrumb = "settlements", bare_category_parent = "former political divisions", }, ["FORMER subpolity"] = { link = false, preposition = "của", class = "subpolity", default = {"Former political divisions"}, }, ---------------------------------------------------------------------------------------------- -- form-of categories -- ---------------------------------------------------------------------------------------------- ---------- Abbreviations ---------- ["abbreviations of counties!"] = { -- For categorizing abbreviations of counties of e.g. England full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]", bare_category_breadcrumb = "counties", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of countries!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "abbreviations of places", }, ["abbreviations of departments!"] = { -- For categorizing abbreviations of departments of e.g. France full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s", bare_category_breadcrumb = "departments", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of districts!"] = { -- For categorizing abbreviations of districts of e.g. ??? full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s", bare_category_breadcrumb = "districts", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of divisions!"] = { -- For categorizing abbreviations of divisions of e.g. Bangladesh full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s", bare_category_breadcrumb = "divisions", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of former countries!"] = { full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "abbreviations of former places", }, ["abbreviations of former places!"] = { full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]", bare_category_breadcrumb = "abbreviations", bare_category_parent = "former places", addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}}, }, ["abbreviations of places!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s", bare_category_breadcrumb = "abbreviations", bare_category_parent = "places", }, ["abbreviations of political divisions!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s", bare_category_breadcrumb = "political divisions", bare_category_parent = "abbreviations of places", }, ["abbreviations of prefectures!"] = { -- For categorizing abbreviations of prefectures of e.g. Japan full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s", bare_category_breadcrumb = "prefectures", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of provinces!"] = { -- For categorizing abbreviations of provinces of e.g. Canada full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s", bare_category_breadcrumb = "provinces", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of provinces and territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]", bare_category_breadcrumb = "provinces and territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of regions!"] = { -- For categorizing abbreviations of regions of e.g. Italy full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s", bare_category_breadcrumb = "regions", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states!"] = { -- For categorizing abbreviations of states of e.g. the United States full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states and territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]", bare_category_breadcrumb = "states and territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states and union territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]", bare_category_breadcrumb = "states and union territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]", bare_category_breadcrumb = "territories", bare_category_parent = "abbreviations of political divisions", }, ["ABBREVIATION_OF country"] = { link = false, default = {"Abbreviations of countries"}, }, ["ABBREVIATION_OF county"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF department"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF district"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF division"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF FORMER country"] = { link = false, default = {"Abbreviations of former countries"}, }, ["ABBREVIATION_OF FORMER place"] = { link = false, default = {"Abbreviations of former places"}, }, ["ABBREVIATION_OF place"] = { link = false, default = {"Abbreviations of places"}, }, ["ABBREVIATION_OF prefecture"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF province"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF region"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF state"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF subpolity"] = { link = false, default = {"Abbreviations of political divisions"}, }, ["ABBREVIATION_OF territory"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF union territory"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ---------- Archaic forms ---------- ["archaic forms of places!"] = { full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "archaic forms", bare_category_parent = "places", }, ["ARCHAIC_FORM_OF place"] = { link = false, default = {"Archaic forms of places"}, }, ---------- Clippings ---------- ["clippings of places!"] = { full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s", bare_category_breadcrumb = "clippings", bare_category_parent = "places", }, ["CLIPPING_OF place"] = { link = false, default = {"Clippings of places"}, }, ---------- Dated forms ---------- ["dated forms of places!"] = { full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "dated forms", bare_category_parent = "places", }, ["DATED_FORM_OF place"] = { link = false, default = {"Dated forms of places"}, }, ---------- Derogatory names ---------- ["derogatory names for cities!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]", bare_category_breadcrumb = "cities", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for cities"}, }, ["derogatory names for continents!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s", bare_category_breadcrumb = "continents", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for continents"}, }, ["derogatory names for countries!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for countries"}, }, ["derogatory names for places!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s", bare_category_breadcrumb = "derogatory names", bare_category_parent = "nicknames for places", }, ["derogatory names for states!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for states"}, }, ["DEROGATORY_NAME_FOR capital"] = { link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR city"] = { link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR continent"] = { link = false, default = {"Derogatory names for continents"}, }, ["DEROGATORY_NAME_FOR country"] = { link = false, default = {"Derogatory names for countries"}, }, ["DEROGATORY_NAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" but things like "county-level city" and -- "subprovincial city" fall back to "prefecture-level city" link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR state"] = { link = false, default = {"Derogatory names for states"}, }, ["DEROGATORY_NAME_FOR town"] = { link = false, default = {"Derogatory names for cities"}, }, ---------- Ellipses ---------- ["ellipses of places!"] = { full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s", bare_category_breadcrumb = "ellipses", bare_category_parent = "places", }, ["ELLIPSIS_OF place"] = { link = false, default = {"Ellipses of places"}, }, ---------- Former long-form names ---------- ["former long-form names of countries!"] = { full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "former long-form names of places", addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}}, }, ["former long-form names of places!"] = { full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s", bare_category_breadcrumb = "long-form", bare_category_parent = "former names of places", }, ["FORMER_LONG_FORM_OF country"] = { link = false, default = {"Former long-form names of countries"}, }, ["FORMER_LONG_FORM_OF place"] = { link = false, default = {"Former long-form names of places"}, }, ---------- Former names ---------- ["former names of capitals!"] = { full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name", bare_category_breadcrumb = "capitals", bare_category_parent = "former names of settlements", }, ["former names of countries!"] = { full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name", bare_category_breadcrumb = "quốc gia", bare_category_parent = "former names of places", }, ["former names of places!"] = { full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name", bare_category_breadcrumb = "former names", bare_category_parent = "places", }, ["former names of political divisions!"] = { full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name", bare_category_breadcrumb = "political divisions", bare_category_parent = "former names of places", }, ["former names of polities!"] = { full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name", bare_category_breadcrumb = "polities", bare_category_parent = "former names of places", }, ["former names of settlements!"] = { full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name", bare_category_breadcrumb = "settlements", bare_category_parent = "former names of political divisions", }, ["FORMER_NAME_OF capital"] = { link = false, default = {"Former names of capitals"}, }, ["FORMER_NAME_OF country"] = { link = false, default = {"Former names of countries"}, }, ["FORMER_NAME_OF place"] = { link = false, default = {"Former names of places"}, }, ["FORMER_NAME_OF polity"] = { link = false, default = {"Former names of polities"}, }, ["FORMER_NAME_OF region"] = { link = false, fallback = "FORMER_NAME_OF subpolity", }, ["FORMER_NAME_OF settlement"] = { link = false, default = {"Former names of settlements"}, }, ["FORMER_NAME_OF subpolity"] = { link = false, default = {"Former names of political divisions"}, }, ---------- Former nicknames ---------- ["former nicknames for cities!"] = { full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})", bare_category_breadcrumb = "cities", bare_category_parent = "former nicknames for places", addl_bare_category_parents = {"nicknames for cities"}, }, ["former nicknames for places!"] = { full_category_link = "no-longer-used [[nickname]]s for [[place]]s", bare_category_breadcrumb = "former", bare_category_parent = "nicknames for places", addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}}, }, ["FORMER_NICKNAME_FOR capital"] = { link = false, default = {"Former nicknames for cities"}, }, ["FORMER_NICKNAME_FOR city"] = { link = false, default = {"Former nicknames for cities"}, }, ["FORMER_NICKNAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" 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 = "quốc gia", 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 = "quốc gia", bare_category_parent = "long-form names of places", }, ["long-form names of places!"] = { full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s", bare_category_breadcrumb = "long-form names", bare_category_parent = "places", }, ["LONG_FORM_OF country"] = { link = false, default = {"Long-form names of countries"}, }, ["LONG_FORM_OF place"] = { link = false, default = {"Long-form names of places"}, }, ---------- Nicknames ---------- ["nicknames for cities!"] = { full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]", bare_category_breadcrumb = "cities", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"cities"}, }, ["nicknames for continents!"] = { full_category_link = "[[nickname]]s for [[continent]]s", bare_category_breadcrumb = "continents", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"continents"}, }, ["nicknames for countries!"] = { full_category_link = "[[nickname]]s for [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"quốc gia"}, }, ["nicknames for places!"] = { full_category_link = "[[nickname]]s for [[place]]s", bare_category_breadcrumb = "places", bare_category_parent = "nicknames", addl_bare_category_parents = {"places"}, }, ["nicknames for states!"] = { -- For categorizing nicknames for states of e.g. the United States full_category_link = "[[nicknames]] for [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"states"}, }, ["NICKNAME_FOR capital"] = { link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR city"] = { link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR continent"] = { link = false, default = {"Nicknames for continents"}, }, ["NICKNAME_FOR country"] = { link = false, default = {"Nicknames for countries"}, }, ["NICKNAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" but things like "county-level city" and -- "subprovincial city" fall back to "prefecture-level city" link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR state"] = { link = false, default = {"Nicknames for states"}, }, ["NICKNAME_FOR town"] = { link = false, default = {"Nicknames for cities"}, }, ---------- Obsolete forms ---------- ["obsolete forms of places!"] = { full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "obsolete forms", bare_category_parent = "places", }, ["OBSOLETE_FORM_OF place"] = { link = false, default = {"Obsolete forms of places"}, }, ---------- Official names ---------- ["official names of countries!"] = { full_category_link = "[[official]] [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", 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 = "quốc gia", bare_category_parent = "official names of former places", }, ["official names of former places!"] = { full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]", bare_category_breadcrumb = "official names", bare_category_parent = "former places", addl_bare_category_parents = {{name = "official names of places", sort = "former"}}, }, ["official names of places!"] = { full_category_link = "[[official]] [[name]]s of [[place]]s", bare_category_breadcrumb = "official names", bare_category_parent = "places", }, ["OFFICIAL_NAME_OF country"] = { link = false, default = {"Official names of countries"}, }, ["OFFICIAL_NAME_OF FORMER country"] = { link = false, default = {"Official names of former countries"}, }, ["OFFICIAL_NAME_OF FORMER place"] = { link = false, default = {"Official names of former places"}, }, ["OFFICIAL_NAME_OF place"] = { link = false, default = {"Official names of places"}, }, ---------- Official nicknames ---------- ["official nicknames for places!"] = { full_category_link = "[[official]] [[nickname]]s for [[place]]s", bare_category_breadcrumb = "official", bare_category_parent = "nicknames for places", }, ["official nicknames for states!"] = { -- For categorizing official nicknames for states of e.g. the United States full_category_link = "[[official]] [[nicknames]] for [[state]]s", bare_category_breadcrumb = "official", bare_category_parent = "nicknames for states", addl_bare_category_parents = {"states"}, }, ["OFFICIAL_NICKNAME_FOR place"] = { link = false, default = {"Official nicknames for places"}, }, ["OFFICIAL_NICKNAME_FOR state"] = { link = false, default = {"Official nicknames for states"}, }, } export.plural_placetype_to_singular = {} for sg_placetype, spec in pairs(export.placetype_data) do if spec.plural then export.plural_placetype_to_singular[spec.plural] = sg_placetype end end return export 1yqp5mty8zaliq2cxw3dbiuo042ey4y 2463637 2463636 2026-07-19T18:16:59Z Kateru Zakuro 34522 2463637 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) 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 else 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:find("^%(") end function export.resolve_placetype_aliases(placetype) return export.placetype_aliases[placetype] or placetype end --[==[ Return a property from `placetype_data` for a given placetype. If the placetype isn't found in `placetype_data`, or the key isn't found in the placetype's entry in `placetype_data`, return nil. ]==] function export.get_placetype_prop(placetype, key) -- Usually we are called on equivalent placetypes returned from `get_placetype_equivs`, in which case placetype -- aliases have been resolved, but sometimes not, e.g. when fetching the indefinite article in -- get_placetype_article(). `resolve_placetype_aliases` is just a simple lookup and it doesn't hurt to do it twice. placetype = export.resolve_placetype_aliases(placetype) if export.placetype_data[placetype] then return export.placetype_data[placetype][key] else return nil end end --[==[ Given a placetype, split the placetype into one or more potential ''splits'', each consisting of a three-element list { {``prev_qualifiers``, ``this_qualifier``, ``reduced_placetype``}}, i.e. # the concatenation of zero or more previously-recognized qualifiers on the left, normally canonicalized (if there are zero such qualifiers, the value will be nil); # a single recognized qualifier, normally canonicalized (if there is no qualifier, the value will be nil); # the "reduced placetype" on the right. Splitting between the qualifier in (2) and the reduced placetype in (3) happens at each space character, proceeding from left to right, and stops if a qualifier isn't recognized. All placetypes are canonicalized by checking for aliases in `placetype_aliases`, but no other checks are made as to whether the reduced placetype is recognized. Canonicalization of qualifiers does not happen if `no_canon_qualifiers` is specified. For example, given the placetype `"small beachside unincorporated community"`, the return value will be { { {nil, nil, "small beachside unincorporated community"}, {nil, "small", "beachside unincorporated community"}, {"small", "[[beachfront]]", "unincorporated community"}, {"small [[beachfront]]", "[[unincorporated]]", "community"}, }} Here, `"beachside"` is canonicalized to `"[[beachfront]]"` and `"unincorporated"` is canonicalized to `"[[unincorporated]]"`, in both cases according to the entry in `placetype_qualifiers`. On the other hand, if given `"small former haunted community"`, the return value will be { { {nil, nil, "small former haunted community"}, {nil, "small", "former haunted community"}, {"small", "former", "haunted community"}, }} because `"small"` and `"former"` but not `"haunted"` are recognized as qualifiers. Finally, if given `"former adr"`, the return value will be { { {nil, nil, "former adr"}, {nil, "former", "administrative region"}, }} because `"adr"` is a recognized placetype alias for `"administrative region"`. ]==] function export.split_qualifiers_from_placetype(placetype, no_canon_qualifiers) local splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}} local prev_qualifier = nil while true do local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$") if qualifier then local canon = export.placetype_qualifiers[qualifier] if canon == nil then break end local new_qualifier = qualifier if type(canon) == "table" then canon = canon.link end if not no_canon_qualifiers and canon ~= false then if canon == true then new_qualifier = "[[" .. qualifier .. "]]" else new_qualifier = canon end end insert(splits, {prev_qualifier, new_qualifier, export.resolve_placetype_aliases(reduced_placetype)}) prev_qualifier = prev_qualifier and prev_qualifier .. " " .. new_qualifier or new_qualifier placetype = reduced_placetype else break end end return splits end --[==[ Given a `placetype` (which may be pluralized), return an ordered list of equivalent placetypes to look under to find the placetype's properties (such as the category or categories to be inserted). The return value is actually an ordered list of objects of the form `{qualifier=``qualifier``, placetype=``equiv_placetype``}` where ``equiv_placetype`` is a placetype whose properties to look up, derived from the passed-in placetype or from a contiguous subsequence of the words in the passed-in placetype (always including the rightmost word in the placetype, i.e. we successively chop off qualifier words from the left and use the remainder to find equivalent placetypes). ``qualifier`` is the remaining words not part of the subsequence used to find ``equiv_placetype``; or nil if all words in the passed-in placetype were used to find ``equiv_placetype``. (FIXME: This qualifier is not currently used anywhere.) Only placetypes for which there is an entry in `placetype_data` are included. The placetype passed in is always checked first, and will form the first entry if it exists in `placetype_data`. '''NOTE:''' This is a tricky function as it implements handling of (a) qualifiers, (b) fallback logic, (c) "type-raising" qualifiers such as `former`/`ancient`/etc. as well as `fictional` and `mythological`, and (d) form-of directives, which act somewhat similarly to `former`, and allows interaction between more than one of these simultaneously (e.g. official names of former places, which have their own categorization). If {{tl|place}} gets too slow, one potential speedup is to memoize the results of this function, as it appears to be getting called more than once on the same inputs. Another similar potential speedup is to memoize the results of `iterate_matching_holonym_location()`. For example, given the placetype `left tributary`, the following placetype/qualifier combinations are checked in turn: ``` {qualifier = nil, placetype="left tributary"} {qualifier = "left", placetype="tributary"} {qualifier = "left", placetype="river"} ``` and the return value will be { { {qualifier = "left", placetype="tributary"}, {qualifier = "left", placetype="river"}, }} The algorithm first enters the placetype itself into the list, then checks for `left tributary` as a recognized placetype in `placetype_data` and doesn't find it, so it doesn't enter it into the returned list (if it found it, it would add it as well as any fallbacks directly after it). It then splits off the recognized qualifier `left` to form the ''reduced placetype'' `tributary`, which is entered into the list because it is found in `placetype_data`. Then, because it has a fallback `river`, which exists in `placetype_data`, the fallback is entered next. Another example is `small rural fraziones` (where a ''frazione'' is type of subdivision of a ''comune'' or municipality, often specifically an outlying hamlet). the placetype/qualifier combinations checked are: ``` {qualifier = nil, placetype="small rural fraziones"} {qualifier = nil, placetype="small rural frazione"} {qualifier = "small", placetype="rural fraziones"} {qualifier = "small", placetype="rural frazione"} {qualifier = "small [[rural]]", placetype="fraziones"} {qualifier = "small [[rural]]", placetype="frazione"} {qualifier = "small [[rural]]", placetype="hamlet"} {qualifier = "small [[rural]]", placetype="village"} ``` The return value ends up as {qualifier = "small [[rural]]", placetype="frazione"}, {qualifier = "small [[rural]]", placetype="hamlet"}, {qualifier = "small [[rural]]", placetype="village"}, }} Here, because the result of singularizing `fraziones` returns a different value from the placetype itself, that singularized value is checked after the original plural value. Also, in the process of splitting off qualifiers, they are canonicalized if the entry in `placetype_qualifiers` says to do so; in this case, links are placed around `rural`. Finally, `frazione` has `hamlet` as its fallback, which in turn has `village` as its fallback, so both fallbacks end up being returned. `no_fallback`, if set, disables returning equivalent placetypes based on the `fallback` setting for a placetype. This is used in the first of two loops in find_placetype_cat_specs() in [[Module:place]] to prefer exact matches for placetypes such as barangays with later holonyms to matches based on a fallback such as `neighborhood` with an earlier holonym. See the comment in that function in [[Module:place]] for a more detailed explanation of why this is needed. Only the placetype itself, and any reduced placetypes created by chopping off recognized qualifiers at the beginning, are returned; but we do not return reduced placetypes if a containing placetype exists in `placetype_data`. (For example, `"overseas territory"` has a fallback `"dependent territory"`, and `"overseas"` is also a recognized qualifier. When `no_fallback` is in place, without the above proviso, we would return `"overseas territory"` followed by `"territory"` with the incorrect effect of classifying an `"overseas territory"` of the United Kingdom such as `"Gibraltar"` under [[:Category:Territories of the United Kingdom]] instead of [[:Category:Dependent territories of the United Kingdom]].) As an exception, if `historical`, `ancient`, `former` or the like are found, they proceed ignoring `no_fallback`, because it seems tricky to handle them correctly in the presence of `no_fallback`, and historical/former placetypes rarely occur with exact match category specs anyway. `no_split_qualifiers` prevents splitting off recognized qualifiers and returning the remainder of the placetype as an equivalent placetype. Only the passed-in placetype, and any fallbacks, will be returned. This is used in [[Module:category tree/topic cat/data/Places]] when looking up placetypes found in categories. Such placetypes won't have qualifiers and so it doesn't make sense to try and look for them. `from_category`, if set, causes category-only placetypes (those ending in `!`) to also be checked. `form_of_directive`, if set, causes the specified form-of directive (e.g. `FORMER_NAME_OF`) to be prepended to checked placetypes, their directive-specific type (e.g. `FORMER_NAME_OF_type`), and their classes (`class`) to get the appropriate placetypes to check for form-of-directive categories. It falls back to the prepended generic `place` as a placetype, e.g. `FORMER_NAME_OF place`, if nothing else matches. `no_check_for_inherently_former` is used internally to prevent an infinite loop when checking for `inherently_former`. `register_former_as_non_former` is a major hack used in `get_bare_categories` to deal with the mismatch between e.g. known location `Yugoslavia` declaring itself a `country` but definitions of it declaring it a `former country`. It causes the non-former version of the specified placetype to be included in the returned equivalents along with the former placetypes. [FIXME: This should apply only to the entries in `former_countries` but it's tricky to do that now; fix this in the known-location refactor. -- The known-location refactor is already done but we haven't yet fixed this.] ]==] function export.get_placetype_equivs(placetype, props) local no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former local form_of_directive if props then no_fallback, no_split_qualifiers, no_check_for_inherently_former, from_category, register_former_as_non_former = props.no_fallback, props.no_split_qualifiers, props.no_check_for_inherently_former, props.from_category, props.register_former_as_non_former form_of_directive = props.form_of_directive end local equivs = {} -- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. `qualifier` is -- the preceding qualifier to insert into `equivs` along with the placetype (see comment at top of function). If -- `from_category` is given, we also check for a category-specific entry consisting of the placetype followed by -- `!`, and in all cases we also check to see if `placetype` is plural, and if so, insert the singularized version -- along with its fallbacks (if any) in `placetype_data`. `form_of_prefix` is a form-of prefix such as -- `OFFICIAL_NAME_OF`. If specified, we check the fallbacks of `placetype` without the prefix but then insert into -- `equivs` the prefixed placetype. This way, if the user says e.g. {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}}, -- we will correctly categorize into [[:Category:Official names of countries]], rather than only trying to look up -- `OFFICIAL_NAME_OF island country` and failing, falling back ultimately to [[:Category:Official names of places]]. local function insert_placetype_and_fallbacks(qualifier, placetype, form_of_prefix) local function insert_equiv(pt) if form_of_prefix then -- Let's say the user says {{tl|place|pt|@official name of:Cuba|island country|r/Caribbean}} and we have -- no entry for `OFFICIAL_NAME_OF island country` but we do for `OFFICIAL_NAME_OF country` (which we end -- up processing because `island country` falls back to `country`), and that entry in turn is defined -- using a fallback. We have to insert that fallback-of-fallback, and the easiest/cleanest way of -- handling this is by calling ourselves recursively. insert_placetype_and_fallbacks(qualifier, form_of_prefix .. " " .. pt) else insert(equivs, {qualifier=qualifier, placetype=pt}) end end -- Insert the placetype, along with any fallbacks. local canon_placetype, ptdata, ptmatch = export.get_placetype_data(placetype, from_category) if ptdata then insert_equiv(canon_placetype) if no_fallback then return end local first_placetype = #equivs + 1 local prev_placetype = nil while true do local pt_value = export.placetype_data[canon_placetype] if not pt_value then internal_error("Fallback value %s specified for placetype %s but is not in `placetype_data`", canon_placetype, prev_placetype) end if pt_value.fallback then insert_equiv(pt_value.fallback) local last_placetype = #equivs if last_placetype - first_placetype >= 10 then local fallback_loop = {} for i = first_placetype, last_placetype do insert(fallback_loop, equivs[i].placetype) end internal_error("Apparent loop in fallback chain: %s", table.concat(fallback_loop, " -> ")) end prev_placetype = canon_placetype canon_placetype = pt_value.fallback else break end end end end -- Insert `placetype` into `equivs`, along with any fallback placetypes listed in `placetype_data`. This is a -- wrapper around the more basic `insert_placetype_and_fallbacks()` which handles form-of directives. If there is no -- form-of directive, this function directly calls `insert_placetype_and_fallbacks()`. We do things this way so that -- form-of directives correctly combine with `former`-type qualifiers. Note that we also have special backups for -- form-of directives that check `DIRECTIVE place` (and before that, `DIRECTIVE FORMER/ANCIENT place` is there's a -- `former`-type directive); these backups live outside this function because we want them done once, late, rather -- than in each invocation of `process_and_insert_placetype()`. local function process_and_insert_placetype(qualifier, reduced_placetype) if form_of_directive then -- First check for e.g. `OFFICIAL_NAME_OF island country` and its fallbacks; then we look for fallbacks of -- `island country` and check e.g. `OFFICIAL_NAME_OF country` and its fallbacks. All of this is handled by -- `insert_placetype_and_fallbacks()` with appropriate parameters. After that, check the general class of -- the directive, e.g. `subpolity` if something like `district` is given. (Eventually, we check for -- `OFFICIAL_NAME_OF place` as a backup, but this happens at the end outside the loop over qualifiers.) insert_placetype_and_fallbacks(qualifier, reduced_placetype, form_of_directive) if not no_fallback then local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype) local directive_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.get_placetype_prop(pt, form_of_directive .. "_type") or export.get_placetype_prop(pt, "class") end ) if not directive_type then local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.placetype_data[pt] end ) if pt_data then internal_error("For placetype %s in conjunction with form-of directive %s, placetype data " .. 'located but directive-specific type property %s missing, and so is "class"; ' .. "placetypes searched are %s", reduced_placetype, form_of_directive, form_of_directive .. "_type", reduced_placetype_equivs) else -- This should be allowed, as we allow unrecognized placetypes in general. end elseif directive_type ~= "!" then insert_placetype_and_fallbacks(qualifier, directive_type, form_of_directive) end end else insert_placetype_and_fallbacks(qualifier, reduced_placetype) end end -- Successively split off recognized qualifiers and loop over successively greater sets of qualifiers from the left -- (unless `no_split_qualifiers` is specified, in which case we don't check for qualifiers). local splits if no_split_qualifiers then splits = {{nil, nil, export.resolve_placetype_aliases(placetype)}} else splits = export.split_qualifiers_from_placetype(placetype) end for _, split in ipairs(splits) do local prev_qualifier, this_qualifier, reduced_placetype = unpack(split, 1, 3) -- If a special "former" qualifier like `former` or `historical` isn't present, and -- `no_check_for_inherently_former` is not given (this flag is used to avoid infinite loops), check for -- "inherently former" placetypes like `satrapy` and `treaty port` that always refer to no-longer-existing -- placetypes, and handle accordingly. local unlinked_this_qualifier if this_qualifier and this_qualifier:find("%[") then unlinked_this_qualifier = export.remove_links_and_html(this_qualifier) else unlinked_this_qualifier = this_qualifier end local former_qualifiers = this_qualifier and export.former_qualifiers[unlinked_this_qualifier] or nil if not former_qualifiers and not no_check_for_inherently_former then former_qualifiers = export.get_equiv_placetype_prop(reduced_placetype, function(pt) return export.get_placetype_prop(pt, "inherently_former") end, {no_check_for_inherently_former = true}) end -- If a special "former" qualifier like `former` or `historical` is present, map it to the appropriate internal -- qualifiers (`ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified -- qualifiers), fetch the `former_type` property, and treat the placetype as if a concatenation of the mapped -- qualifier(s) and the value of `former_type`. For example, if `medieval village` is given, we map `medieval` -- to `ANCIENT` and `FORMER`, and `village` to its `former_type` of `settlement`, and enter the placetypes -- `ANCIENT settlement` and `FORMER settlement` (in that order) into `equivs`. If the placetype following the -- "former" qualifier is recognized in `placetype_data` but has no `former_type` and no fallback with a -- `former_type` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like -- `former greenhouse` is specified and we don't have an entry for `greenhouse`), just track the occurrence and -- don't enter anything into `equivs`. if former_qualifiers then -- FIXME: Should we respect `no_fallback` here? My instinct says no. local reduced_placetype_equivs = export.get_placetype_equivs(reduced_placetype, { no_check_for_inherently_former = true }) local former_type = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.get_placetype_prop(pt, "former_type") or export.get_placetype_prop(pt, "class") end ) if not former_type then local pt_data = export.get_equiv_placetype_prop_from_equivs(reduced_placetype_equivs, function(pt) return export.placetype_data[pt] end ) if pt_data then internal_error("For placetype %s, placetype data located but `former_type` missing; " .. "placetypes searched are %s", reduced_placetype, reduced_placetype_equivs) else -- Enable error when we've verified there aren't any examples. track("bad-former-placetype") track("bad-former-placetype/" .. reduced_placetype) --process_error("For placetype '%s', unrecognized placetype following 'former'-type " .. -- "qualifier; searched placetype(s) %s", reduced_placetype, dump(reduced_placetype_equivs)) end elseif former_type ~= "!" then -- First check directly for `ANCIENT/FORMER` + the original following placetype. This makes it possible -- for (e.g.) former provinces of the Roman empire to be categorized specially. for _, former_qualifier in ipairs(former_qualifiers) do process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. reduced_placetype) end for _, former_qualifier in ipairs(former_qualifiers) do process_and_insert_placetype(prev_qualifier, former_qualifier .. " " .. former_type) end -- HACK! See explanation above for `register_former_as_non_former`. if register_former_as_non_former then process_and_insert_placetype(prev_qualifier, reduced_placetype) end -- If we're processing a form-of directive, after doing everything else we do -- `DIRECTIVE ANCIENT/FORMER place` e.g. `OFFICIAL_NAME_OF FORMER place` as a backup. if form_of_directive and not no_fallback then for _, former_qualifier in ipairs(former_qualifiers) do insert_placetype_and_fallbacks(prev_qualifier, form_of_directive .. " " .. former_qualifier .. " place") end end -- Don't continue processing equivs. The reason is probably the same as the `break` below for -- qualifier_to_placetype_equivs[]; categories for `former BLAH` are set using `default`, and -- non-former equivs will otherwise take precedence. break end end -- Then see if the rightmost split-off qualifier is in qualifier_to_placetype_equivs -- (e.g. 'fictional *' -> 'fictional location'). If so, add the mapping. if this_qualifier and export.qualifier_to_placetype_equivs[unlinked_this_qualifier] then insert(equivs, { qualifier=prev_qualifier, placetype=export.qualifier_to_placetype_equivs[unlinked_this_qualifier] }) -- Don't continue processing equivs; otherwise, if we specify 'mythological city', even though the -- equivalent entry for 'mythological location' gets inserted ahead of the entry for 'city', the -- latter ends up generating the category because the category for 'mythological location' is set as -- the default value, which is used only when no non-default category can be found. break end -- Finally, join the rightmost split-off qualifier to the previously split-off qualifiers to form a combined -- qualifier, and add it along with reduced_placetype and any mapping in placetype_data for reduced_placetype. -- NOTE: The first time through this loop, both `prev_qualifier` and `this_qualifier` are nil, and this inserts -- the full placetype into `equivs`. local qualifier = prev_qualifier and prev_qualifier .. " " .. this_qualifier or this_qualifier process_and_insert_placetype(qualifier, reduced_placetype) -- If `no_fallback` and there's an entry in `placetype_data` for this placetype, don't include any reduced -- placetypes to avoid the "overseas territory treated as a territory" issue describe above. if no_fallback then local canon_placetype, ptdata, ptmatch = export.get_placetype_data(reduced_placetype, from_category) if canon_placetype then break end end end -- If we're processing a form-of directive, after doing everything else we do `DIRECTIVE place` e.g. -- `OFFICIAL_NAME_OF place` as a backup; but only if either the placetype as a whole is recognized or the placetype -- begins with a recognized qualifier. This latter check is to avoid categorizing into e.g. -- [[Category:en:Former names of places]] in an invocation like -- {{place|en|@former name of:Democratic Republic of the Congo|country|r/Central Africa|;|used from 1971–1997}}; -- the `used from 1971–1997` gets treated as a placetype and we're called on it. if form_of_directive and not no_fallback and (splits[2] or export.get_placetype_data(placetype, from_category)) then insert_placetype_and_fallbacks(nil, form_of_directive .. " place") end return equivs end function export.get_equiv_placetype_prop_from_equivs(equivs, fun, continue_on_nil_only) for _, equiv in ipairs(equivs) do local retval = fun(equiv.placetype) if continue_on_nil_only and retval ~= nil or not continue_on_nil_only and retval then return retval, equiv end end return nil, nil end --[==[ Given a placetype `placetype` and a function `fun` of one argument, iteratively call the function on equivalent placetypes fetched from `get_placetype_equivs` until the function returns a non-falsy value (i.e. not {nil} or {false}); but if `continue_on_nil_only` is specified, the iterations continue until the function returns non non-{nil} value. FIXME: We should make `continue_on_nil_only` the default; but this requires changing some callers.) When `fun` returns a non-falsy or non-{nil} value, `get_equiv_placetype_prop` returns two values: the value returned by `fun` and the equivalent placetype that triggered the non-falsy (or non-{nil}) return value. If `fun` never returns a non-falsy (or non-{nil}) value, `get_equiv_placetype_prop` returns {nil} for both return values. If `placetype` is passed in as {nil}, the return value is the result of calling `fun` on {nil} (whatever it is) with {nil} for the second return value. ]==] function export.get_equiv_placetype_prop(placetype, fun, props) if not placetype then return fun(nil), nil end return export.get_equiv_placetype_prop_from_equivs(export.get_placetype_equivs(placetype, props), fun, props and props.continue_on_nil_only) end --[==[ Return the article that is used with an entry placetype. We proceed as follows: # See if there is a recognized qualifier at the beginning that specifies an article (including `false` for no article). This takes precedence over anything else, so that e.g. `various capitals` gets no article rather than "`the"`. # Then check the placetype or any equivalent placetype for the `entry_placetype_use_the` property, indicating that `"the"` should be used. # Otherwise we look to see if the placetype itself (not any equivalents, even those involving deleting a qualifier from the beginning) has an entry in `placetype_data` that specifies the indefinite article using `entry_placetype_use_the` (principally for use with placetypes like `union territory`). # Otherwise, we use [[Module:en-utilities]] to apply the standard algorithm to generate `"an"` for words beginning with a vowel and `"a"` otherwise. If `ucfirst` is true, the first letter of the article is made upper-case. ]==] function export.get_placetype_article(placetype, ucfirst) local art local qualifier, reduced_placetype = placetype:match("^(.-) (.*)$") if qualifier then local canon = export.placetype_qualifiers[qualifier] if type(canon) == "table" then art = canon.article end end if art == false then return art end if art == nil then local placetype_use_the = export.get_equiv_placetype_prop(placetype, function(pt) return export.get_placetype_prop(pt, "entry_placetype_use_the") end) if placetype_use_the then art = "tên" else art = export.get_placetype_prop(placetype, "entry_placetype_indefinite_article") if not art then art = require(en_utilities_module).get_indefinite_article(placetype) end end end if ucfirst then art = m_strutils.ucfirst(art) end return art end --[==[ Return the preposition that should be used after `placetype` when occurring as an entry placetype or in categories (e.g. `city >in< France` but `country >of< South America`). The preposition defaults to `"của"` 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 "của" 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 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 `"thành phố"` (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 == "thành phố" 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 "thành phố"', 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 key else return key end end -- Necessary for use by [[Module:place]]. FIXME: Reorganize the modules so this isn't necessary. export.iterate_matching_location = m_locations.iterate_matching_location --[=[ Iterator that iterates over holonyms in `place_desc`. If `first_holonym_index` is given, start iterating at the specified holonym and stop either when there are no more holonyms or a holonym with modifier `:also` is found. If `first_holonym_index` is nil or omitted, iterate over all holonyms regardless. If `include_raw_text_holonyms` is specified, raw text holonyms (those not of the form `placetype/placename`) are returned as well; they can be identified by the fact that the `placetype` field in the holonym structure is nil. Two values are returned at each iteration, the holonym index and holonym structure, similar to `ipairs()`. ]=] function export.get_holonyms_to_check(place_desc, first_holonym_index, include_raw_text_holonyms) local stop_at_also = not not first_holonym_index return function(place_desc, index) while true do index = index + 1 local this_holonym = place_desc.holonyms[index] -- If we were passed in a starting holonym index, go up to but not including a holonym marked with `:also` -- (continue_cat_loop); the categorization code will then restart the loop at that holonym. That holonym -- will have `:also` marked on it, so make sure not to stop immediately if the first holonym is marked with -- `:also`. if not this_holonym or stop_at_also and index > first_holonym_index and this_holonym.continue_cat_loop then return nil end -- If not placetype, we're processing raw text, which we normally want to skip. if include_raw_text_holonyms or this_holonym.placetype then return index, this_holonym end end end, place_desc, first_holonym_index and first_holonym_index - 1 or 0 end --[==[ If the holonym in `data` (in the format as passed to a category handler) refers to a known location, iterate over all such known locations, returning for each location the corresponding key, spec and group as well as the trail of ancestral containers. Unlike `iterate_matching_location()`, this specifically checks that there is no mismatch between the location's containers at any level and any of the following holonyms in the {{tl|place}} spec. The fields in `data` are: * `holonym_placetype`: The placetype of the holonym. It can actually be a list of possible placetypes, as with `iterate_matching_location()`. * `holonym_placename`: The placename of the holonym. * `holonym_index`: The index of the holonym among the holonyms in `place_desc`, or nil if the holonym is not among the holonyms in `place_desc`. (If a holonym index is given, we check for container mismatches among the holonyms following the specified index, stopping either when encountering a holonym marked with modifier `:also` or, if none exist, when we run out of holonyms. If no holonym index is given, we check all holonyms for container mismatches.) * `place_desc`: Description of the place; used for the holonyms, to check for container mismatches. Returns four values: the location group, the canonical key by which the location is known, the spec object describing the location and the trail of ancestral containers for the location. The first three values are the same as for `iterate_matching_location`. ]==] function export.iterate_matching_holonym_location(data) local holonym_placetype, holonym_placename, holonym_index, place_desc = data.holonym_placetype, data.holonym_placename, data.holonym_index, data.place_desc local matching_location_iterator = m_locations.iterate_matching_location { placetypes = holonym_placetype, placename = holonym_placename, } return function() while true do local group, key, spec = matching_location_iterator() if not group then return nil end local container_trail = {} -- For each level of container, check that there are no mismatches (i.e. other location of the same -- placetype) mentioned. We allow a mismatch at a given level if there's also a match with the container -- at that level. For example, in the case of Kansas City, defined in [[Module:place/locations]] as a city -- in Missouri, if we define it as {{tl|place|city|s/Missouri,Kansas}}, we ignore the mismatching state of -- Kansas because the correct state of Missouri was also mentioned. But imagine we are defining Newark, -- Delaware as {{tl|place|city|s/Delaware|c/US}} and (as is the case) we have an entry for Newark, New -- Jersey in [[Module:place/locations]]. Just because the containing location `US` matches isn't enough, -- because Newark, NJ also has New Jersey as a containing location and there's a mismatch at that level. If -- there are no mismatches at any level we assume we're dealing with the right known location. -- -- If at a given level there are multiple containing locations, we count a match if any holonym matches any -- containing location, and a mismatch only if a holonym exists of the same placetype that doesn't match any -- containing location. local containers_mismatch = false for containers in m_locations.iterate_containers(group, key, spec) do insert(container_trail, containers) local match_at_level = false local mismatch_at_level = false for other_holonym_index, other_holonym in export.get_holonyms_to_check(place_desc, holonym_index and holonym_index + 1 or nil) do local other_source_holonym = other_holonym.augmented_from_holonym if other_source_holonym and other_source_holonym.placetype == holonym_placetype and other_source_holonym.unlinked_placename ~= holonym_placename then -- Ignore holonyms added during the augmentation process for other holonyms of the same -- placetype as the placetype of the holonym we're considering. See comment in -- augment_holonyms_with_container() for why we do this. -- continue; grrr, no 'continue' in Lua else local holonym_matches_at_level = false local holonym_exists_with_same_placetype = false for _, container in ipairs(containers) do if not container.spec.no_check_holonym_mismatch then local full_container_placename, elliptical_container_placename = m_locations.key_to_placename(container.group, container.key) local placetypes = container.spec.placetype if type(placetypes) ~= "table" then placetypes = {placetypes} end local placetype_equivs = {} for _, pt in ipairs(placetypes) do m_table.extend(placetype_equivs, export.get_placetype_equivs(pt)) end local this_holonym_matches = export.get_equiv_placetype_prop_from_equivs( placetype_equivs, function(placetype) return other_holonym.placetype == placetype and (other_holonym.unlinked_placename == full_container_placename or other_holonym.unlinked_placename == elliptical_container_placename) end ) if this_holonym_matches then holonym_matches_at_level = true break end local this_holonym_exists_with_same_placetype = export.get_equiv_placetype_prop_from_equivs( placetype_equivs, function(placetype) return other_holonym.placetype == placetype end ) if this_holonym_exists_with_same_placetype then -- We seem to have a mismatch at this level. But before we decide conclusively that this -- is the case, check to see whether the putative mismatch is an alias and matches when -- we resolve the alias. for oh_group, oh_key, oh_spec, oh_container_trail in export.iterate_matching_holonym_location { holonym_placetype = other_holonym.placetype, holonym_placename = other_holonym.unlinked_placename, holonym_index = other_holonym_index, place_desc = place_desc, } do local oh_full_placename, oh_elliptical_placename = m_locations.key_to_placename(oh_group, oh_key) if oh_full_placename == full_container_placename or oh_elliptical_placename == elliptical_container_placename then -- Alias matched when resolved. this_holonym_matches = true break end end if this_holonym_matches then -- Alias matched above when resolved. holonym_matches_at_level = true break else -- Not an alias, or doesn't match when resolved. We have a true mismatch. holonym_exists_with_same_placetype = true end end end end if holonym_matches_at_level then match_at_level = true break end if holonym_exists_with_same_placetype then mismatch_at_level = true end end end if not match_at_level and mismatch_at_level then containers_mismatch = true break end end if not containers_mismatch then return group, key, spec, container_trail end end end end --[==[ If the holonym in `data` (in the format as passed to a category handler) refers to a known location, find and return the corresponding key, spec and group as well as the trail of ancestral containers. This is like `iterate_matching_holonym_location()` but throws an error if more than one location matches. (An example where this would happen is {{tl|place|en|neighborhood|city/Newcastle}}, because there are two known locations named Newcastle. To fix this, specify additional following disambiguating holonyms, e.g. {{tl|place|en|neighborhood|city/Newcastle|s/New South Wales}}. ]==] function export.find_matching_holonym_location(data) local all_found = {} for group, key, spec, container_trail in export.iterate_matching_holonym_location(data) do insert(all_found, {group, key, spec, container_trail}) end if not all_found[1] then return nil elseif all_found[2] then local holonym_placetype = data.holonym_placetype if type(holonym_placetype) == "table" then holonym_placetype = concat(holonym_placetype, ",") end local found_keys = {} for _, found in ipairs(all_found) do local _, key, _, _ = unpack(found) insert(found_keys, key) end error(("Found multiple matching locations for holonym '%s/%s'; specify disambiguating context in the " .. "containing holonyms: %s"):format(holonym_placetype, data.holonym_placename, dump(found_keys))) else return unpack(all_found[1]) end end ------------------------------------------------------------------------------------------ -- Placename and placetype data -- ------------------------------------------------------------------------------------------ --[==[ var: This is a map from aliases to their canonical forms. Any placetypes appearing as keys here will be mapped to their canonical forms in all respects, including the display form. Contrast entries in 'placetype_data' with a fallback, which applies to categorization and other processes but not to display. The most important aliases are for holonym placetypes, particularly those that occur often such as "country", "state", "province" and the like. Particularly long placetypes that mostly occur as entry placetypes (e.g. "census-designated place") can be given abbreviations, but it is generally preferred to spell out the entry placetype. Note also that we purposely avoid certain abbreviations that would be ambiguous (e.g. "d", which could variously be interpreted as "department", "district" or "division"). ]==] export.placetype_aliases = { ["acomm"] = "autonomous community", ["adr"] = "administrative region", ["adterr"] = "administrative territory", -- Pakistan ["aobl"] = "autonomous oblast", ["aokr"] = "autonomous okrug", ["ap"] = "autonomous province", ["apref"] = "autonomous prefecture", ["aprov"] = "autonomous province", ["ar"] = "autonomous region", ["arch"] = "archipelago", ["arep"] = "autonomous republic", ["aterr"] = "autonomous territory", ["atu"] = "autonomous territorial unit", ["bor"] = "borough", ["c"] = "quốc gia", ["can"] = "canton", ["carea"] = "council area", ["cc"] = "constituent country", ["cdblock"] = "community development block", ["cdep"] = "Crown dependency", ["CDP"] = "census-designated place", ["cdp"] = "census-designated place", ["clcity"] = "county-level city", ["co"] = "county", ["cobor"] = "county borough", ["colcity"] = "county-level city", ["coll"] = "collectivity", ["comm"] = "community", ["cont"] = "lục địa", ["continent"] = "lục địa", ["contr"] = "continental region", ["contregion"] = "continental region", ["cpar"] = "civil parish", ["damun"] = "direct-administered municipality", ["dep"] = "dependency", ["department capital"] = "departmental capital", ["dept"] = "department", ["depterr"] = "dependent territory", ["dist"] = "district", ["distmun"] = "district municipality", ["div"] = "division", ["emp"] = "empire", ["fpref"] = "French prefecture", ["gov"] = "governorate", ["govnat"] = "governorate", ["home-rule city"] = "home rule city", ["home-rule municipality"] = "home rule municipality", ["inner-city area"] = "inner city area", ["ires"] = "Indian reservation", ["isl"] = "island", ["lbor"] = "London borough", ["lga"] = "local government area", ["lgarea"] = "local government area", ["lgd"] = "local government district", ["lgdist"] = "local government district", ["metbor"] = "metropolitan borough", ["metcity"] = "metropolitan city", ["metmun"] = "metropolitan municipality", ["mtn"] = "mountain", ["mun"] = "municipality", ["mundist"] = "municipal district", ["nonmetropolitan county"] = "non-metropolitan county", ["obl"] = "oblast", ["okr"] = "okrug", ["p"] = "province", ["par"] = "parish", ["parmun"] = "parish municipality", ["pen"] = "peninsula", ["plcity"] = "prefecture-level city", ["plcolony"] = "Polish colony", ["pref"] = "prefecture", ["prefcity"] = "prefecture-level city", ["preflcity"] = "prefecture-level city", ["prov"] = "province", ["r"] = "region", ["range"] = "mountain range", ["rcm"] = "regional county municipality", ["rcomun"] = "regional county municipality", ["rdist"] = "regional district", ["rep"] = "republic", ["rhrom"] = "rural hromada", ["riv"] = "river", ["rmun"] = "regional municipality", ["robor"] = "royal borough", ["romp"] = "Roman province", ["runit"] = "regional unit", ["rurmun"] = "rural municipality", ["s"] = "state", ["sar"] = "special administrative region", ["shrom"] = "settlement hromada", ["spref"] = "subprefecture", ["sprefcity"] = "sub-prefectural city", ["sprovcity"] = "subprovincial city", ["submet city"] = "sub-metropolitan city", ["submetropolitan city"] = "sub-metropolitan city", ["sub-prefecture-level city"] = "sub-prefectural city", ["sub-provincial city"] = "subprovincial city", ["sub-provincial district"] = "subprovincial district", ["terr"] = "territory", ["terrauth"] = "territorial authority", ["twp"] = "township", ["twpmun"] = "township municipality", ["uauth"] = "unitary authority", ["ucomm"] = "unincorporated community", ["udist"] = "unitary district", ["uhrom"] = "urban hromada", ["uterr"] = "union territory", ["utwpmun"] = "united township municipality", ["val"] = "valley", ["vdc"] = "village development committee", ["vil"] = "village", ["voi"] = "voivodeship", ["wcomm"] = "Welsh community", } local no_link_def_article = {link = false, article = ""} local no_link_no_article = {link = false, article = false} --[==[ var: These qualifiers can be prepended onto any placetype and will be handled correctly. For example, the placetype `large city` will be displayed as `large <nowiki>[[city]]</nowiki>` and categorized as if `city` were specified. If the value in the following table is a string, the qualifier will display according to the string. If the value is `true`, the qualifier will be linked to its corresponding Wiktionary entry. If the value is `false`, the qualifier will not be linked but will appear as-is. Note that these qualifiers do not override placetypes with entries elsewhere that contain those same qualifiers. For example, the entry for `inland sea` in `placetype_data` will apply in preference to treating `inland sea` as equivalent to `sea`. ]==] export.placetype_qualifiers = { -- generic qualifiers ["huge"] = false, ["tiny"] = false, ["large"] = false, ["big"] = false, ["mid-size"] = false, ["mid-sized"] = false, ["small"] = false, ["sizable"] = false, ["important"] = false, ["long"] = false, ["short"] = false, ["major"] = false, ["minor"] = false, ["high"] = false, ["tall"] = false, ["low"] = false, ["left"] = false, -- left tributary ["right"] = false, -- right tributary ["modern"] = false, -- for use in opposition to "ancient" in another definition -- "former" qualifiers ["abandoned"] = true, ["ancient"] = true, ["deserted"] = true, ["extinct"] = true, ["former"] = false, ["historic"] = "historical", ["historical"] = true, ["medieval"] = true, ["mediaeval"] = true, ["ruined"] = true, ["traditional"] = true, -- sea qualifiers ["coastal"] = true, ["inland"] = true, -- note, we also have an entry in placetype_data for 'inland sea' to get a link to [[inland sea]] ["maritime"] = true, ["overseas"] = true, ["seaside"] = true, ["beachfront"] = true, ["beachside"] = true, ["riverside"] = true, -- lake qualifiers ["freshwater"] = true, ["saltwater"] = true, ["endorheic"] = true, ["oxbow"] = true, ["ox-bow"] = "[[oxbow]]", -- [[ox-bow]] is a red link ["tidal"] = true, -- land qualifiers ["hilltop"] = true, ["hilly"] = true, ["insular"] = true, ["peninsular"] = true, ["chalk"] = true, ["karst"] = true, ["limestone"] = true, ["mountainous"] = true, ["mountaintop"] = true, ["alpine"] = true, ["volcanic"] = true, -- for an island -- political status qualifiers ["autonomous"] = true, ["incorporated"] = true, ["special"] = true, ["unincorporated"] = true, ["coterminous"] = true, -- monetary status/etc. qualifiers ["fashionable"] = true, ["wealthy"] = true, ["affluent"] = true, ["declining"] = true, -- city vs. rural qualifiers ["urban"] = true, ["suburban"] = true, ["exurban"] = true, ["outlying"] = true, ["remote"] = true, ["rural"] = true, ["outback"] = true, ["inner"] = false, ["inner-city"] = true, ["central"] = false, ["outer"] = false, -- land use qualifiers ["residential"] = true, ["agricultural"] = true, ["business"] = true, ["commercial"] = true, ["industrial"] = true, -- business use qualifiers ["railroad"] = true, ["railway"] = true, ["farming"] = true, ["fishing"] = true, ["mining"] = true, ["logging"] = true, ["cattle"] = true, -- tourism use qualifiers ["resort"] = true, -- note, we also have 'resort city' and 'resort town', that take precedecne ["spa"] = true, -- note, we also have 'spa city' and 'spa town', that take precedecne ["ski"] = true, -- note, we also have 'ski resort city' and 'ski resort town', that take precedecne -- religious qualifiers ["holy"] = true, ["sacred"] = true, ["religious"] = true, ["secular"] = true, -- qualifiers for nonexistent places ["claimed"] = false, ["fictional"] = true, ["legendary"] = true, ["mythical"] = true, ["mythological"] = true, -- directional qualifiers ["northern"] = false, ["southern"] = false, ["eastern"] = false, ["western"] = false, ["north"] = false, ["south"] = false, ["east"] = false, ["west"] = false, ["northeastern"] = false, ["southeastern"] = false, ["northwestern"] = false, ["southwestern"] = false, ["northeast"] = false, ["southeast"] = false, ["northwest"] = false, ["southwest"] = false, -- seasonal qualifiers ["summer"] = true, -- e.g. for 'summer capital' ["winter"] = true, -- legal status qualifiers -- FIXME: Two-word qualifiers don't work yet. But you can enter "de-facto" and it's canonicalized to [[de facto]]. ["official"] = true, ["unofficial"] = true, ["de facto"] = true, -- 'de facto capital' ["de-facto"] = "[[de facto]]", -- [[de-facto]] is a red link ["de jure"] = true, -- 'de jure capital' ["de-jure"] = "[[de jure]]", -- [[de-jure]] is a red link -- NOTE: 'unrecognized/unrecognised' are handled as placetypes 'unrecognized country', 'unrecognized state' -- misc. qualifiers ["planned"] = true, ["chartered"] = true, ["landlocked"] = true, ["uninhabited"] = true, -- superlative qualifiers ["first"] = no_link_def_article, ["second"] = no_link_def_article, -- for "second largest" etc. ["third"] = no_link_def_article, ["fourth"] = no_link_def_article, ["last"] = no_link_def_article, ["only"] = no_link_def_article, ["sole"] = no_link_def_article, ["main"] = no_link_def_article, ["largest"] = no_link_def_article, ["biggest"] = no_link_def_article, ["smallest"] = no_link_def_article, ["shortest"] = no_link_def_article, ["longest"] = no_link_def_article, ["tallest"] = no_link_def_article, ["highest"] = no_link_def_article, ["lowest"] = no_link_def_article, ["leftmost"] = no_link_def_article, ["rightmost"] = no_link_def_article, ["innermost"] = no_link_def_article, ["outermost"] = no_link_def_article, ["northernmost"] = no_link_def_article, ["southernmost"] = no_link_def_article, ["westernmost"] = no_link_def_article, ["easternmost"] = no_link_def_article, ["northwesternmost"] = no_link_def_article, ["southwesternmost"] = no_link_def_article, ["northeasternmost"] = no_link_def_article, ["southeasternmost"] = no_link_def_article, -- several/various ["several"] = no_link_no_article, ["various"] = no_link_no_article, ["numerous"] = no_link_no_article, ["multiple"] = no_link_no_article, ["many"] = no_link_no_article, ["other"] = no_link_no_article, } --[==[ var: In this table, the key qualifiers should be treated the same as the value qualifiers for categorization purposes. This is overridden by `placetype_data` and `qualifier_to_placetype_equivs`. ]==] export.former_qualifiers = { ["abandoned"] = {"FORMER"}, ["ancient"] = {"ANCIENT", "FORMER"}, ["former"] = {"FORMER"}, ["extinct"] = {"FORMER"}, ["historic"] = {"FORMER"}, ["historical"] = {"FORMER"}, ["medieval"] = {"ANCIENT", "FORMER"}, ["mediaeval"] = {"ANCIENT", "FORMER"}, ["ruined"] = {"ANCIENT", "FORMER"}, ["traditional"] = {"FORMER"}, } --[==[ var: In this table, any placetypes containing these qualifiers that do not occur in `placetype_data` should be mapped to the specified placetypes for categorization purposes. Entries here are overridden by `placetype_data`. ]==] export.qualifier_to_placetype_equivs = { ["fictional"] = "fictional location", ["legendary"] = "mythological location", ["mythical"] = "mythological location", ["mythological"] = "mythological location", -- For e.g. Taiwan as a "claimed province" of China; parts of Belize as claimed by Guatemala; various islands -- claimed by various parties in East Asia. FIXME: We should conditionalize on what is being claimed since there are -- also claimed capitals, e.g. Israel and Palestine claim Jerusalem as their capital. ["claimed"] = "claimed political division", } --[==[ var: Mapping from placetypes to the corresponding plural category-only placetype for a capital of that placetype. The reverse mapping also exists. ]==] export.placetype_to_capital_cat = { ["autonomous community"] = "autonomous community capitals", ["canton"] = "cantonal capitals", ["comarca"] = "comarca capitals", ["country"] = "national capitals", -- The following are not obviously different from 'county seats' but the latte terminology is used in the US. ["county"] = "county capitals", ["department"] = "departmental capitals", ["district"] = "district capitals", ["division"] = "division capitals", ["emirate"] = "emirate capitals", ["governorate"] = "governorate capitals", ["hromada"] = "hromada capitals", ["krai"] = "krai capitals", ["metropolitan city"] = "metropolitan city capitals", ["municipality"] = "municipal capitals", ["oblast"] = "oblast capitals", ["okrug"] = "okrug capitals", ["prefecture"] = "prefectural capitals", ["province"] = "provincial capitals", ["raion"] = "raion capitals", ["regency"] = "regency capitals", ["region"] = "regional capitals", ["regional unit"] = "regional unit capitals", ["republic"] = "republic capitals", ["state"] = "state capitals", ["territory"] = "territorial capitals", ["voivodeship"] = "voivodeship capitals", } --[==[ var: This contains placenames that should be preceded by an article (almost always "the"). '''NOTE''': There are multiple ways that placenames can come to be preceded by "the": # Listed here. # Given in [[Module:place/locations]] with an initial "the". All such placenames are added to this map by the code just below the map. # The placetype of the placename has `holonym_use_the = true` in its placetype_data. # A regex in placename_the_re matches the placename. Note that "the" is added only before the first holonym in a place description. ]==] export.placename_article = { -- This should only contain info that can't be inferred from [[Module:place/locations]]. ["archipelago"] = { ["Cyclades"] = "the", ["Dodecanese"] = "the", }, ["country"] = { ["Holy Roman Empire"] = "the", }, ["empire"] = { ["Holy Roman Empire"] = "the", }, ["island"] = { ["North Island"] = "the", ["South Island"] = "the", }, ["region"] = { ["Balkans"] = "the", ["Russian Far East"] = "the", ["Caribbean"] = "the", ["Caucasus"] = "the", ["Middle East"] = "the", ["New Territories"] = "the", ["North Caucasus"] = "the", ["South Caucasus"] = "the", ["West Bank"] = "the", ["Gaza Strip"] = "the", }, ["valley"] = { ["San Fernando Valley"] = "the", }, } --[==[ var: Regular expressions to apply to determine whether we need to put 'the' before a holonym. The key "*" applies to all holonyms, otherwise only the regexes for the holonym's placetype apply. ]==] export.placename_the_re = { -- We don't need entries for peninsulas, seas, oceans, gulfs or rivers -- because they have holonym_use_the = true. ["*"] = {"^Isle of ", " Islands$", " Mountains$", " Empire$", " Country$", " Region$", " District$", "^City of "}, ["bay"] = {"^Vịnh của "}, ["lake"] = {"^Hồ của "}, ["country"] = {"^Republic of ", " Republic$"}, ["republic"] = {"^Republic of ", " Republic$"}, ["region"] = {"^Vùng của "}, ["river"] = {"^Sông của "}, ["local government area"] = {"^Shire of "}, ["county"] = {"^Shire of "}, ["Indian reservation"] = {" Reservation", " Nation"}, ["tribal jurisdictional area"] = {" Reservation", " Nation"}, } --[==[ var: If any of the following holonyms are present, the associated holonyms are automatically added to the end of the list of holonyms for categorization (but not display) purposes. ]==] export.cat_implications = { ["region"] = { ["Eastern Europe"] = {"continent/Europe"}, ["Central Europe"] = {"continent/Europe"}, ["Western Europe"] = {"continent/Europe"}, ["South Europe"] = {"continent/Europe"}, ["Southern Europe"] = {"continent/Europe"}, ["Northern Europe"] = {"continent/Europe"}, ["Northeast Europe"] = {"continent/Europe"}, ["Northeastern Europe"] = {"continent/Europe"}, ["Southeast Europe"] = {"continent/Europe"}, ["Southeastern Europe"] = {"continent/Europe"}, ["North Caucasus"] = {"continent/Europe"}, ["South Caucasus"] = {"continent/Asia"}, ["South Asia"] = {"continent/Asia"}, ["Southern Asia"] = {"continent/Asia"}, ["East Asia"] = {"continent/Asia"}, ["Eastern Asia"] = {"continent/Asia"}, ["Central Asia"] = {"continent/Asia"}, ["West Asia"] = {"continent/Asia"}, ["Western Asia"] = {"continent/Asia"}, ["Southeast Asia"] = {"continent/Asia"}, ["North Asia"] = {"continent/Asia"}, ["Northern Asia"] = {"continent/Asia"}, ["Anatolia"] = {"continent/Asia"}, ["Asia Minor"] = {"continent/Asia"}, ["Mesopotamia"] = {"continent/Asia"}, ["North Africa"] = {"continent/Africa"}, ["Central Africa"] = {"continent/Africa"}, ["West Africa"] = {"continent/Africa"}, ["East Africa"] = {"continent/Africa"}, ["Southern Africa"] = {"continent/Africa"}, ["Central America"] = {"continent/Central America"}, ["Caribbean"] = {"continent/North America"}, ["Polynesia"] = {"continent/Oceania"}, ["Micronesia"] = {"continent/Oceania"}, ["Melanesia"] = {"continent/Oceania"}, ["Siberia"] = {"country/Russia", "continent/Asia"}, ["Russian Far East"] = {"country/Russia", "continent/Asia"}, ["South Wales"] = {"constituent country/Wales", "continent/Europe"}, ["Balkans"] = {"continent/Europe"}, ["West Bank"] = {"country/Palestine", "continent/Asia"}, ["Gaza"] = {"country/Palestine", "continent/Asia"}, ["Gaza Strip"] = {"country/Palestine", "continent/Asia"}, } } ------------------------------------------------------------------------------------------ -- Category and display handlers -- ------------------------------------------------------------------------------------------ local function city_type_cat_handler(data) local entry_placetype = data.entry_placetype local generic_before_non_cities = export.get_placetype_prop(entry_placetype, "generic_before_non_cities") if not generic_before_non_cities then internal_error("city_type_cat_handler called on placetype %s that doesn't have a `generic_before_non_cities`" .. " setting", entry_placetype) end local plural_entry_placetype = export.pluralize_placetype(entry_placetype) local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group and not spec.is_former_place and not spec.is_city then -- 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))} 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))) 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 = "thành phố", 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 của %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 của %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 của %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, "Capital cities") end return retcats end --[=[ This is invoked specially for all placetypes (see the `*` placetype key at the bottom of `placetype_data`). This is used in two ways: # To add pages to generic holonym categories like [[:Category:en:Places in Merseyside, England]] (and [[:Category:en:Places in England]]) for any pages that have `co/Merseyside` as their holonym. # To categorize demonyms in bare placename categories like [[:Category:en:Merseyside, England]] if the demonym description mentions `co/Merseyside` and doesn't mention a more specific placename that also has a category. (In this case there are none, but we can have demonyms at multiple levels, e.g. in France for individual villages, departments, administrative regions, and for the entire country, and for example we only want to categorize a demonym into [[:Category:France]] if no more specific category applies.) Unlike when invoked from {{tl|place}}, a demonym invocation only adds the most specific holonym category and not the category of any containing polity (hence if we add [[:Category:en:Merseyside, England]] we won't also add [[:Category:England]]). This code also handles cities; e.g. for the first use case above, it would be used to add a page that has `city/Boston` as a holonym to [[:Category:en:Places in Boston]], along with [[:Category:en:Places in Massachusetts, USA]] and [[:Category:en:Places in the United States]]. The city handler tries to deal with the possibility of multiple cities having the same name. For example, the code in [[Module:place/locations]] knows about the city of [[Columbus]], [[Ohio]], which has containing polities `Ohio` (a state) and `the United States` (a country). If either containing polity is mentioned, the handler proceeds to return the key `Columbus` (along with `Ohio, USA` and `the United States`). Otherwise, if any other state or country is mentioned, the handler returns nothing, and otherwise it assumes the mentioned city is the one we're considering and returns `Columbus` etc. This works correctly if the place only mentions Ohio and a holonym for a Columbus in a different country is encountered, because of the function `augment_holonyms_with_container`, which adds the US as a holonym when Ohio is encountered. The single parameter `data` is as in category handlers. The return value is a list of categories (without the preceding language code). ]=] local function generic_place_cat_handler(data) local from_demonym = data.from_demonym local retcats = {} local function insert_retkey(key, spec) if from_demonym then insert(retcats, key) else insert(retcats, ("Địa danh của %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:Places in Osaka Prefecture, Japan]] and [[Category:Places in Japan]]. But not when -- no_container_cat is set (e.g. for 'United Kingdom'). if not spec.no_container_cat then for _, container_set in ipairs(container_trail) do local stop_adding_containers = false for _, container in ipairs(container_set) do if not container.spec.no_generic_place_cat then insert_retkey(container.key, container.spec) end if container.spec.no_container_cat then stop_adding_containers = true end end if stop_adding_containers then break end end end return retcats end end --[==[ Special category handler run for all placetypes that checks for specified division placetypes of known locations and categorizes appropriately. ]==] function export.political_division_cat_handler(data) if data.from_demonym then return end local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group then local divlists = {} if spec.divs then insert(divlists, spec.divs) end if spec.addl_divs then insert(divlists, spec.addl_divs) end for _, divlist in ipairs(divlists) do if type(divlist) ~= "table" then divlist = {divlist} end for _, div in ipairs(divlist) do if type(div) == "string" then div = {type = div} end local sgdiv = export.maybe_singularize_placetype(div.type) or div.type local prep = div.prep or "của" 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)) 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("^ ", "") for i, place_desc in ipairs(place_descs) do -- Iterate over all matching locations in case there are multiple, as with Delhi defined as -- {{place|en|megacity/and/union territory|c/India|containing the national capital [[New Delhi]]}}. for group, key, spec, container_trail in export.iterate_matching_holonym_location { holonym_placetype = possible_placetypes_by_place_desc[i], holonym_placename = term, place_desc = place_desc, } do insert(bare_cats, key) end end end -- FIXME: Should we only do the following if the language is English (requires that the lang is passed in)? -- We should always do it if `pagename` is given (as it is with {{tcl}}) but maybe not otherwise unless 1=en. There -- are cases like [[Ankara]] = English name for capital of Turkey, but also the name in various languages for the -- capital of Ghana (= English [[Accra]]). But this should get caught by mismatching the containing country. The -- advantage of checking when the language isn't English is we catch those places that fail to give an English -- translation but where the translation happens to be the same as the other-language spelling. However, I don't -- know how often this situation occurs. check_term(args.pagename or mw.loadData("Module:headword/data").pagename) for _, t in ipairs(args.t) do check_term(t) end local function check_termobj_list(terms) for _, term in ipairs(terms) do if term.eq then check_term(term.eq) end if term.alt or term.term then check_term(term.alt or term.term) end end end for _, extra_info_terms in ipairs(overall_place_spec.extra_info) do local arg = extra_info_terms.arg if arg == "modern" or arg == "now" or arg == "full" or arg == "short" then check_termobj_list(extra_info_terms.terms) end end for _, directive in ipairs(overall_place_spec.directives) do check_termobj_list(directive.terms) end return bare_cats end --[==[ This is used to augment the holonyms associated with a place description with the containing polities. For example, given the following: `# {{tl|place|en|subprefecture|pref/Hokkaido}}.` We auto-add Japan as another holonym so that the term gets categorized into [[:Category:Subprefectures of Japan]]. To avoid over-categorizing we need to check to make sure no other countries are specified as holonyms. ]==] function export.augment_holonyms_with_container(place_descs) for _, place_desc in ipairs(place_descs) do if place_desc.holonyms then -- This ends up containing a copy of the original holonyms, with the augmented holonyms inserted in their -- appropriate position. We don't just put them at the end because some holonyms have use the `:also` -- modifier, which causes category processing to restart at that point after generating categories for a -- preceding holonym, and we don't want the preceding holonym's augmented holonyms interfering with -- categorization of a later holonym. We proceed from right to left, and each time we augment, we copy -- the holonyms with the augmented holonym(s) inserted appropriately and replace the place description's -- holonyms with the augmented ones before the next iteration. The reason for this is so that e.g. -- {{place|neighborhood|city/Birmingham|co/West Midlands|cc/England}} doesn't throw an error during the -- augmentation process due to 'Birmingham' referring to two known locations (in England and Alabama). If -- we go left to right, we will throw an ambiguity error on `city/Birmingham` because code to exclude -- Birmingham, Alabama needs `c/United Kingdom` present (to cause a mismatch with `c/United States`), -- which isn't yet present as the augmentation code hasn't gotten to `cc/England` yet. For similar -- reasons, we need to include the augmented holonyms in the holonyms considered in the next iteration -- rather than modifying the place description once at athe end. for i = #place_desc.holonyms, 1, -1 do local holonym = place_desc.holonyms[i] if holonym.placetype and not export.placetype_is_ignorable(holonym.placetype) then local group, key, spec, container_trail = export.find_matching_holonym_location { holonym_placetype = holonym.placetype, holonym_placename = holonym.unlinked_placename, holonym_index = i, place_desc = place_desc, } if group and container_trail[1] and not spec.no_auto_augment_container then local augmented_holonyms = {} for j = 1, i do insert(augmented_holonyms, place_desc.holonyms[j]) end for _, containers in ipairs(container_trail) do local any_no_auto_augment_container = false for _, container in ipairs(containers) do any_no_auto_augment_container = any_no_auto_augment_container or container.spec.no_auto_augment_container local containing_type = container.spec.placetype if type(containing_type) == "table" then -- If the containing type is a list, use the first element as the canonical variant. containing_type = containing_type[1] end local full_container_placename, elliptical_container_placename = m_locations.key_to_placename(container.group, container.key) -- Don't side-effect holonyms while processing them. local new_holonym = { -- By the time we run, the display has already been generated so we don't need to -- set display_placename. placetype = containing_type, -- placename_to_key() for the group should correctly handle both full and elliptical -- placenames, but the full placename seems less likely to be ambiguous. FIXME: We -- should just store the key directly and use it when available to avoid having to -- convert key to placename and back to key. unlinked_placename = full_container_placename, -- Indicate that this is an augmented holonym, and was derived from the specified -- holonym. In iterate_matching_holonym_location(), we ignore augmented holonyms -- derived from holonyms that are different from the holonym we're searching for but -- of the same placetype. This is to correctly handle a situation like -- {{place|river|dept/Ardèche,Gard,Vaucluse,Bouches-du-Rhône|c/France}}. Here, -- `Ardèche` is in `r/Auvergne-Rhône-Alpes`, while `Gard` is in `r/Occitania` and -- the other two are in `r/Provence-Alpes-Côte d'Azur`. Augmenting proceeds from -- right to left, so after it adds `r/Provence-Alpes-Côte d'Azur` to -- `Bouches-du-Rhône`, Vaucluse gets augmented correctly but `Gard` fails to match -- in find_matching_holonym_location() because of the mismatch between augmented -- `r/Provence-Alpes-Côte d'Azur` and actual `r/Occitania`. Similarly, all later -- calls to find_matching_holonym_location() fail to match `Gard` (and likewise -- `Ardèche`) against any known location. To deal with this, we mark augmented -- holoynms as being augmented due to a source holonym, and when processing a given -- holonym, ignore augmented holonyms from other holonyms of the same placetype. -- The restriction to the same placetype is so that `Birmingham` still gets -- correctly disambiguated to Birmingham, England in the example given above near -- the top of this function, using the augmented holonym `c/United Kingdom` added by -- the specified `cc/England` (whose placetype `constituent country` differs from -- the placetype `city` of Birmingham). augmented_from_holonym = holonym, } insert(augmented_holonyms, new_holonym) -- But it is safe to modify other parts of the place_desc. export.key_holonym_into_place_desc(place_desc, new_holonym) end if any_no_auto_augment_container then break end end for j = i + 1, #place_desc.holonyms do insert(augmented_holonyms, place_desc.holonyms[j]) end place_desc.holonyms = augmented_holonyms end end end end end end -- Cat handler for district, areas, neighborhoods and suburbs. Districts are tricky because they can either be political -- divisions or city neighborhoods. Areas similarly can be political divisions (rarely; specifically, in Kuwait), city -- neighborhoods or larger geographical areas/regions. We handle this as follows: -- (1) `placetype_data` cat entries for specific countries or country divisions take precedence over cat_handlers, so if -- the user says {{tl|place|district|s/Maharashtra|c/India}}, we won't even be called because there is an entry that -- categorizes into [[:Category|Districts of Maharashtra, India]]. -- (2) If we're called, we check the holonym we're called on to see if it is a recognized city, e.g. if we're called -- using {{tl|place|district|city/Mumbai|s/Maharashtra|c/India}}. If so, we categorize under e.g. -- [[:Category:Neighbourhoods of Mumbai]]. (Choosing the spelling "neighbourhoods" because we're in India.) -- (3) If we're called and the holonym is not a recognized city, we check if the placetype has has_neighborhoods set. -- If so, it's "city-like" and we categorize under the first containing polity that we recognize. For example, if -- we're called using {{tl|place|district|town/Northampton|co/Hampshire|s/Massachusetts|c/US}}, we should recognize -- town as "city-like" and categorize under [[:Category:Neighborhoods in Massachusetts]]. (Note "in" not "của", and -- note the spelling "neighborhoods" because we're in the US.) -- (4) If the holonym is not city-like, we do nothing. If there's a city or city-like placetype farther up (e.g. we're -- called as {{tl|place|district|ward/Foo|mun/Bar|...}}), we will handle the city-like entity according to (2) or -- (3) when called on that holonym. Otherwise either the categorization in (1) takes place or there's no -- categorization. local function district_neighborhood_cat_handler(data) local function get_plural_entry_placetype(location_spec, container_trail) if data.entry_placetype == "suburb" then return "Suburbs" else -- Check for `british_spelling` setting on the spec itself or any container. local uses_british_spelling = location_spec.british_spelling if uses_british_spelling == nil and container_trail then for _, container_set in ipairs(container_trail) do local must_outer_break = false for _, container in ipairs(container_set) do if container.spec.british_spelling ~= nil then uses_british_spelling = container.spec.british_spelling must_outer_break = true break end end if must_outer_break then break end end end return uses_british_spelling and "Neighbourhoods" or "Neighborhoods" end end -- First check the immediate holonym to see if it's a city or a city-like top-level entity (Hong Kong, Bonaire, -- etc.) local group, key, spec, container_trail = export.find_matching_holonym_location(data) if group and not spec.is_former_place and spec.is_city then return {get_plural_entry_placetype(spec, container_trail) .. " of " .. export.get_prefixed_key(key, spec)} end -- If the entry placetype is neighbo(u)rhood, assume it is a neighborhood even if there isn't a city-like -- entity father up the chain. (E.g. due to a mistaken use of m/ instead of mun/ for municipality.) local has_neighborhoods local entry_placetype = data.entry_placetype if entry_placetype == "neighborhood" or entry_placetype == "neighbourhood" or entry_placetype == "suburb" then has_neighborhoods = true else -- Otherwise, make sure the current holonym is city-like. has_neighborhoods = export.get_equiv_placetype_prop(data.holonym_placetype, function(pt) return export.get_placetype_prop(pt, "has_neighborhoods") end, {continue_on_nil_only = true}) end if has_neighborhoods then -- Loop up the holonyms, looking for city and city-like entities in case of e.g. [[Sepulveda]] written -- {{place|en|neighborhood|valley/San Fernando Valley|city/Los Angeles|s/California|c/USA}} -- but also look for a recognizable poldiv, and if so categorize as "Neighborhoods in POLDIV". We need -- to start with the current holonym, which is especially important for neighborhoods and suburbs that -- may have the first holonym be a recognizable province, etc. but can't hurt otherwise. (Previously -- we skipped the first/current holonym.) for other_holonym_index, other_holonym in export.get_holonyms_to_check(data.place_desc, data.holonym_index) do local other_holonym_data = { holonym_placetype = other_holonym.placetype, holonym_placename = other_holonym.unlinked_placename, holonym_index = other_holonym_index, place_desc = data.place_desc, } local group, key, spec, container_trail = export.find_matching_holonym_location(other_holonym_data) if group and not spec.is_former_place then return {get_plural_entry_placetype(spec, container_trail) .. (spec.is_city and " of " or " in ") .. export.get_prefixed_key(key, spec)} end end end end function export.check_already_seen_string(holonym_placename, already_seen_strings) local canon_placename = ulower(m_links.remove_links(holonym_placename)) if type(already_seen_strings) ~= "table" then already_seen_strings = {already_seen_strings} end for _, already_seen_string in ipairs(already_seen_strings) do if canon_placename:find(already_seen_string) then return true end end return false end -- Prefix display handler that adds a prefix such as "Metropolitan Borough of " to the display -- form of holonyms. We make sure the holonym doesn't contain the prefix or some variant already. -- We do this by checking if any of the strings in ALREADY_SEEN_STRINGS, either a single string or -- a list of strings, or the prefix if ALREADY_SEEN_STRINGS is omitted, are found in the holonym -- placename, ignoring case and links. If the prefix isn't already present, we create a link that -- uses the raw form as the link destination but the prefixed form as the display form, unless the -- holonym already has a link in it, in which case we just add the prefix. local function prefix_display_handler(prefix, holonym_placename, already_seen_strings) if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(prefix)) then return holonym_placename end if holonym_placename:find("%[%[") then return prefix .. " " .. holonym_placename end return prefix .. " [[" .. holonym_placename .. "]]" end -- Suffix display handler that adds a suffix such as " parish" to the display form of holonyms. -- Works identically to prefix_display_handler but for suffixes instead of prefixes. local function suffix_display_handler(suffix, holonym_placename, already_seen_strings, include_suffix_in_link) if export.check_already_seen_string(holonym_placename, already_seen_strings or ulower(suffix)) then return holonym_placename end if holonym_placename:find("%[%[") then return holonym_placename .. " " .. suffix end if include_suffix_in_link then return "[[" .. holonym_placename .. " " .. suffix .. "]]" else return "[[" .. holonym_placename .. "]] " .. suffix end end -- Display handler for boroughs. New York City boroughs are display as-is. Others are suffixed -- with "borough". local function borough_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.new_york_boroughs[unlinked_placename] then -- Hack: don't display "borough" after the names of NYC boroughs return holonym_placename end return suffix_display_handler("borough", holonym_placename) end local function county_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) -- Display handler for Irish counties. Irish counties are displayed as e.g. "County [[Cork]]". if m_locations.ireland_counties["Hạt " .. unlinked_placename .. ", Ireland"] or m_locations.northern_ireland_counties["Hạt " .. unlinked_placename .. ", Bắc Ireland"] then return prefix_display_handler("Hạt", holonym_placename) end -- Display handler for Taiwanese counties. Taiwanese counties are displayed as e.g. "[[Chiayi]] County". if m_locations.taiwan_counties[unlinked_placename .. ", Đài Loan"] then return suffix_display_handler("Hạt", holonym_placename) end -- Display handler for Romanian counties. Romanian counties are displayed as e.g. "[[Cluj]] County". if m_locations.romania_counties[unlinked_placename .. ", România"] then return suffix_display_handler("Hạt", 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 .. ", Nhật Bản"] and "" or "prefecture" return suffix_display_handler(suffix, holonym_placename) end -- Display handler for provinces of Bulgaria, Iran, Laos, North and South Korea, Thailand, Turkey and Vietnam. Recognized -- provinces are displayed as e.g. "[[Gyeonggi]] Province" or "[[Antalya]] Province". Others are displayed as-is. local function province_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.bulgaria_provinces[unlinked_placename .. ", Bulgaria"] or m_locations.iran_provinces[unlinked_placename .. ", Iran"] or m_locations.laos_provinces[unlinked_placename .. ", Lào"] or m_locations.north_korea_provinces[unlinked_placename .. ", Cộng hòa Dân chủ Nhân dân Triều Tiên"] or m_locations.south_korea_provinces[unlinked_placename .. ", Hàn Quốc"] or m_locations.thailand_provinces[unlinked_placename .. ", Thái Lan"] or m_locations.turkey_provinces[unlinked_placename .. ", Thổ Nhĩ Kỳ"] or m_locations.vietnam_provinces[unlinked_placename .. ", Việt Nam"] then return suffix_display_handler("Province", holonym_placename) end return holonym_placename end -- Display handler for Nigerian states. Nigerian states are display as "[[Kano]] State". Others are displayed as-is. local function state_display_handler(holonym_placetype, holonym_placename) local unlinked_placename = m_links.remove_links(holonym_placename) if m_locations.nigeria_states[unlinked_placename .. ", Nigeria"] then return suffix_display_handler("State", holonym_placename) end return holonym_placename end -- Display handler for voivodeships. Display as e.g. [[Subcarpathian Voivodeship]]. local function voivodesip_display_handler(holonym_placetype, holonym_placename) return suffix_display_handler("Voivodeship", holonym_placename, nil, "include_suffix_in_link") end ------------------------------------------------------------------------------------------ -- Placetype data -- ------------------------------------------------------------------------------------------ --[==[ var: Main placetype data structure. This specifies, for each canonicalized placetype, various properties. The keys are placetypes (in the singular, except for category-only placetypes, which are plural and followed by `!`), and the value is a table of properties. The `"*"` key is special and is used for adding "generic" categories of the form `Places in ``location`` `; it runs for all entry placetypes. Keys in the form of plural placetypes followed by `!` are used only in [[Module:category tree/topic/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 = "của"`, meaning that {{tl|place|en|branch|riv/Mississippi}} displays as `a branch of the Mississippi` (whereas `river` itself uses the preposition `in`), but otherwise categorizes the same as `river`. A more complex example is `area`, which sets a fallback of `geographic and cultural area` and also sets a category handler that checks for cities or city-like entities (e.g. boroughs) occurring as holonyms and categorizes the toponym under [[:Category:Neighborhoods of CITY]] (for recognized cities) or otherwise [[:Category:Neighborhoods of POLDIV]] (for the nearest containing recognized location). In addition, `area` is set as a political division of Kuwait, meaning if `c/Kuwait` occurs as holonym, the toponym is categorized under [[:Category:Areas of Kuwait]]. If none of these categories trigger, the fallback of `geographic and cultural area` will take effect, and the toponym will be categorized as e.g. [[:Category:Geographic and cultural areas of England]]. 3. There is currently one property to control irregular plurals of placetypes: * `plural`: If specified, its value is the plural of the placetype. Otherwise, the default pluralization algorithm in [[Module:en-utilities]] applies (which correctly pluralizes most words, including those ending in `-y`, `-ch`, `-sh`, `-x`, etc.). The value of `plural` is also used when converting a pluralized placetype into its singular equivalent; for example, since the placetype `kibbutz` has `plural = "kibbutzim"`, the placetype `kibbutzim` will be recognized as a plural and singularized to `kibbutz`. For this reason, it's occasionally necessary to specify a `plural` value even when the default pluralization algorithm works correctly, if the default singularization algorithm won't correctly reverse the pluralization (as with `pass` and other terms ending in `-ss`). 4. The following property keys relate to generating categories for entry placetypes and specifying the parents of those categories: * `class`: The general class of placetype. This is used for various purposes: (a) to categorize placetypes preceded by a qualifier such as `former`, `ancient`, `medieval` or `historical` (note that these placetypes are not all treated alike); (b) to determine the parent category of bare placetype categories (e.g. [[:Category:Villages]] for placetype `village`); (c) to determine whether to add a parent category `political divisions of specific countries` to qualified placetype categories (e.g. [[:Category:Villages in Mali]]). The possible values are: *# `polity`: a more-or-less sovereign/independent polity, such as a country, kingdom or empire. *# `subpolity`: a non-sovereign division of a polity, above the level of an individual settlement. *# `settlement`: a city or smaller equivalent, such as a village. This also includes administrative divisions of a settlement, such as wards and barangays. *# `non-admin settlement`: similar to a settlement but without administrative or political significance, such as an unincorporated community, farm or neighborhood. *# `capital`: a settlement that is a capital. A former capital is generally still in existence, just not the capital any more. *# `natural feature`: any non-man-made feature, such as a lake, mountain, island, ocean, etc. *# `man-made structure`: a man-made feature below the level of a neighborhood, such as a house, airport, university, metro station, park or the like. *# `geographic region`: a geographic or cultural region or area that has no administrative significance. These may vary greatly in size but typically have some sort of cultural significance (possibly historical). The `former`, `ancient`, etc. qualifier has no effect on the category of these placetypes. *# `generic place`: a place that isn't further qualified into any specific subtype. * `former_type`: The class of placetype used for categorizing placetypes preceded by a qualifier such as `former`, `ancient`, `medieval` or `historical`. The possible values are the same as for `class` but with the addition of `dependent territory` (for colonies, protectorates and the like) and `!` (ignore the historical/former/ancient/etc. qualifier; used e.g. with `fictional location` and `mythological location`). If not specified, the value of `class` is used. When a qualifier such as `former`, `ancient`, `medieval` or `historical` is encountered (specifically, those in `former_qualifiers`), it is mapped using `former_qualifiers` to the appropriate internal qualifier or qualifiers (one or both of `ANCIENT` and/or `FORMER`, which are written in all-caps to distinguish them from user-specified qualifiers), which is prepended to the value of `former_type` or `class` to form a placetype whose properties are looked up to determine how to categorize the toponym in question. For example, if `medieval village` is given, we map `medieval` to `ANCIENT` and `FORMER`, and `village` to its `class` of `settlement`, and enter the placetypes `ANCIENT settlement` and `FORMER settlement` (in that order) into the list of equivalent placetypes returned by `get_placetype_equivs`. In this case, there is an entry in `placetype_data` for `ANCIENT settlement`, so its default category spec `Ancient settlements` is used as the category. If on the other hand `medieval kingdom` is given, where `kingdom` has a `class` value `polity`, we first look up `ANCIENT polity`, see there is no entry in `placetype_data` for it, and then look up `FORMER polity`, which exists and has a default category spec `Former polities`, which is used as the category. Note that if the placetype following the "former" qualifier is recognized in `placetype_data` but has no `former_type` or `class` and no fallback with a `former_type` or `class` specified, it is an internal error; but if the placetype isn't recognized (e.g. something like `former greenhouse` is specified and we don't have an entry for `greenhouse`), we just track the occurrence and end up not categorizing. * `bare_category_parent`: This specifies the first parent category of a bare placetype category named according to the placetype in question (e.g. [[:Category:Atolls]] for placetype `atoll`, or [[:Category:Named buildings]] for placetype `named buildings!`). If not specified, the first parent category is determined by the value of `class`, using the mapping `class_to_bare_category_parent` in [[Module:category tree/topic cat/data/Places]]. * `addl_bare_category_parents`: Extra parent categories to add a bare placetype category to (see `bare_category_parent` just above). * `bare_category_breadcrumb`: Breadcrumb for bare placetype categories. Also used as the sort key of `bare_category_parent` if it is a string. * `inherently_former`: If specified and the given placetype is used as an entry placetype, act as if `former` or `ancient` (depending on the value of `inherently_former`) were prefixed to the placetype. This is for placetypes that always refer to no-longer-existing entities, such as `satrapy` and `treaty port`. The value of `inherently_former` is a list of internal qualifiers (one or more of `ANCIENT` and/or `FORMER`), just as for `former_qualifiers`, and the implementation is the same. * `cat_handler`: Handler used to generate the categories to add a given toponym to, if its entry placetype is the placetype in question. Generally the `cat_handler` function checks the holonyms specified in order to determine which category or categories to generate. For example, `district_neighborhood_cat_handler` handles placetypes `district`, `neighborhood`, `subdivision`, `suburb` and the like, and either adds the toponym to a category like `Neighborhoods of ``city`` ` (if a recognized city is given as a holonym), or otherwise a category like `Neighborhoods in ``location`` ` (for the first recognized non-city location given as a holonym, if an unrecognized city or city-like entity is given before the recognized non-city). The algorithm that runs the category handlers iterates over holonyms from left to right, running the `cat_handler` function on each holonym in turn until one or more categories are returned; see below for more specifics. (Note that countries for which e.g. a `district` is a political division do not get the corresponding category added by the `district_neighborhood_cat_handler` function but by `political_division_cat_handler`.) `cat_handler` functions are called with one argument, `data`, describing the resolved entry placetype (i.e. after resolving placetype aliases and fallbacks) and the holonym being processed. The return value should be a list of category specs (categories minus the langcode prefix, with `+++` standing for the holonym key, or the value `true`, which stands for ` ``Placetypes`` in/of ``Holonym`` `, i.e. the pluralized placetype with the appropriate preposition as specified in `placetype_data`). `data` contains the following fields: ** `entry_placetype`: the resolved entry placetype for the entry placetype being processed (i.e. it will always have an entry in `placetype_data` but may not be the original placetype given by the user); ** `holonym_placetype` and `holonym_placename`: the holonym placetype and placename being processed; ** `holonym_index`: the index of the holonym being processed, or {nil} if we're handling an overriding holonym (FIXME: we will change the overriding holonym algorithm so there will be an index even when processing overriding holonyms); ** `place_desc`: a full description of the {{tl|place}} call, as specified at the top of [[Module:place]]; ** `from_demonym`: If set, we are called from [[Module:demonym]], triggered by {{tl|demonym-adj}} or {{tl|demonym-noun}}, instead of being triggered by {{tl|place}}. * `has_neighborhoods`: If `true`, the specified placetype is city-like. This is used in the `district_neighborhood_cat_handler` to determine whether to add a category such as `Neighborhoods in ``location`` `; see the section just above on `cat_handler`. 5. The following preposition-related property keys are recognized: * `preposition`: The preposition used after this placetype when it occurs as an entry placetype. Defaults to `"in"`. * `generic_before_non_cities`: If specified, the appropriate category description handler in [[Module:category tree/topic cat/data/Places]] will recognize categories of the form ` ``Placetype`` in/of ``location`` ` for the specified placetype and preposition, if ``location`` is a non-city. This is used to generate descriptions for categories added by category handlers and by explicit category specs in the placetype data. All placetypes that specify `generic_before_non_cities` or `generic_before_cities` *MUST* also specify a value for `class` so that the category tree code can determine whether it's a political or non-political division. * `generic_before_cities`: Like `generic_before_non_cities` but for locations referring to cities. 6. The following property keys control the auto-addition of affixes when formatting holonyms of a particular placetype: * `affix_type`: If specified, add the placetype as an affix before or after holonyms of this placetype. Possible values are: *# `"pref"` (the holonym will display as `(the) placetype of Holonym`, where `the` appears when the holonym directly follows an entry placetype); *# `"Pref"` (same as `"pref"` but the placetype is capitalized; each word is capitalized if there are multiple); *# `"suf"` (the holonym will display as `Holonym placetype`); *# `"Suf"` (the holonym will display as `Holonym Placetype`, i.e. same as `"suf"` but the placetype is capitalized). * `suffix`: String to use in place of the placetype itself when the placetype is displayed as a suffix after a holonym. Note that `suffix` can be used independently of `affix_type` because the user can also request a suffix explicitly using a syntax like `adr:suf/Occitania`, which will display as `Occitania region` because the placetype `administrative region` specifies `suffix = "region"`. * `prefix`: Like `suffix` but for use when the placetype is displayed as a prefix before the holonym. * `affix`: Like `suffix` and `prefix` but for use when the placetype is displayed as an affix either before or after the holonym. If both `suffix` or `prefix` and `affix` are given for a single placetype, `suffix` or `prefix` take precedence. * `no_affix_strings`: String or list of strings that, if they occur in the holonym, suppress the addition of any affix requested using `affix_type`. Defaults to the placetype itself. For example, `autonomous okrug` specifies `affix_type = "Suf"` so that `aokr/Nenets` displays as `Nenets Autonomous Okrug`, but also specifies `no_affix_strings = "okrug"` so that `aokr/Nenets Okrug` or `aokr/Nenets Autonomous Okrug` displays as specified, without a redundant `Autonomous Okrug` added. Matching is case-insensitive but whole-word. * `display_handler`: A function of two arguments, `holonym_placetype` and `holonym_placename` (specifying a holonym). Its return value is a string specifying the display form of the holonym. 7. The following property keys control the indefinite and definite articles used before entry placetypes and/or holonyms of the specified placetype. * `entry_placetype_use_the`: Use `"the"` before this placetype when it occurs as an entry placetype. * `entry_placetype_indefinite_article`: Indefinite article used before this placetype when it occurs as an entry placetype (usually `"a"`, specifically for placetypes beginning with u- that don't take the indefinite article `"an"`). Defaults to the appropriate indefinite article (`"a"` or `"an"` depending on whether the placetype begins with a vowel). Overridden by `entry_placetype_use_the`, and unlike for most properties, does not apply to equivalent placetypes (i.e. fallbacks or those formed by removing a qualifier from the beginning); only to the exact placetype specified. * `holonym_use_the`: Use `"the"` before holonyms of this placetype. '''NOTE:''' # The `link` property must be specified on all placetypes, except those ending in `!` (category-only placetypes), which must have either `link` or `category_link` specified. # Either the `class` or `former_type` property must be specified on all placetypes not ending in `!` that do not have a fallback (if a placetype has a fallback and omits the `class` and `former_type` properties, they are taken from the fallback). An internal error will result if a placetype has no `class` or `former_type` property derivable either directly or through a fallback, if an attempt is made to categorize a former/ancient/historical/etc. entity of this placetype. # It is possible to have multiple levels of fallback (e.g. `frazione` falls back to `hamlet`, which falls back to `village`). Fallback loops will cause an internal error. All placetypes specified as fallbacks must exist in `placetype_data` or an internal error occurs. ]==] export.placetype_data = { --[=[ If you need to sort the following, do this (using Vim): 1. Make sure all full-line comments are within the { ... } table, or are moved after and on the same line as single-line entries. 2. Make sure the table uses tabs everywhere for indent, and not spaces. 3. Mark the top of the table with `ma`, go to the bottom and execute the following two lines in sequence: :'a,.s/\n/\\n/g :s/\\n\(\t\[\)/\r\1/g The first command converts every newline to a literal `\n` sequence, so the whole thing becomes a single line, while the second command restores the newlines before the beginning of each entry. The effect is to convert all entries to a single line while not losing any information. (Potentially a negative lookahead could be used to do it all in one command.) 4. Execute the following to sort: :'a,.!perl -pe 's/^(\t\[")(.*?)(".*)$/$2 @@@ $1$2$3/' | sort -f | perl -pe 's/.*? @@@ //' Note that a simple `sort -f` (where `-f` means case-insensitive) would almost work, but it would sort "hill station" before "hill" and "county borough" before "county" because the space after e.g. "hill station" sorts before the quotation mark after e.g. "hill". The above command deals with this by extracting the key, prepending it followed by ` @@@ `, sorting, and then removing key (the classic decorate-sort-undecorate pattern). 5. Put the table back to multi-line format by marking the top of the table with `ma`, going to the bottom and executing :'a,.s/\\n/\r/g Note that for some reason, in order to get a match a newline in the left side of a replacement, you must use \n, but to insert a newline in the right sode of a replacement you must use \r. ]=] ["*"] = { link = false, cat_handler = generic_place_cat_handler, }, ["administrative atoll"] = { -- Maldives link = "+w:administrative divisions of the Maldives", preposition = "của", class = "subpolity", }, ["administrative capital"] = { link = "w", fallback = "capital city", }, ["administrative center"] = { link = "w", fallback = "non-city capital", }, ["administrative centre"] = { link = "w", fallback = "administrative center", }, ["administrative county"] = { link = "w", fallback = "county", }, ["administrative district"] = { link = "w", fallback = "district", }, ["administrative headquarters"] = { link = "separately", fallback = "administrative centre", }, ["administrative region"] = { link = true, preposition = "của", suffix = "region", -- but prefix is still "administrative region (of)" fallback = "region", class = "subpolity", }, ["administrative seat"] = { link = "w", fallback = "administrative centre", }, ["administrative territory"] = { link = "separately", preposition = "của", suffix = "territory", -- but prefix is still "administrative territory (of)" fallback = "territory", class = "subpolity", }, ["administrative unit"] = { -- Grrr, it's difficult to generalize about "administrative units". In Albania, "administrative unit" is an -- official term for a city-level division of municipalities; Wikipedia renders it using the more practical term -- "commune". In Pakistan, "administrative unit" is a collective term used to refer to all the different types -- of first-level divisions (four provinces, one federal territory, and two "disputed territories", i.e. Azad -- Kashmir and Gilgit-Balistan, that are variously described). For this reason, we set no fallback, but we need -- to include this so that it can be used as a placetype for Albania, categorizing as communes. link = "w", class = "subpolity", }, ["administrative village"] = { link = "w", preposition = "của", has_neighborhoods = true, class = "settlement", }, ["aimag"] = { -- used in Mongolia, Russia and China (Inner Mongolia); in Mongolia, equivalent to a province; -- in China, equivalent to a prefecture (below a province); in Russia, equivalent to a municipal district. link = "w", fallback = "prefecture", }, ["airport"] = { link = true, class = "man-made structure", default = {true}, }, ["alliance"] = { link = true, fallback = "confederation", }, ["archipelago"] = { link = true, fallback = "island", }, ["area"] = { link = true, preposition = "của", 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 = "của", class = "natural feature", default = {"Seas"}, }, ["arrondissement"] = { link = true, preposition = "của", -- FIXME!!! Grrrrr!!! In some countries, arrondissements are divisions of cities; in others, they are divisions -- of departments or provinces. Need to conditionalize on the country for both of the following. class = "subpolity", has_neighborhoods = true, }, ["associated province"] = { link = "separately", fallback = "province", }, ["atoll"] = { -- FIXME! Atolls are administrative divisions of the Maldives but natural features elsewhere. Need to -- conditionalize `class` on the country. See also `administrative atoll`. link = true, class = "natural feature", bare_category_parent = "islands", default = {true}, }, ["autonomous city"] = { link = "w", preposition = "của", fallback = "thành phố", has_neighborhoods = true, }, ["autonomous community"] = { -- Spain; refers to regional entities, not village-like entities, as might be expected from "community" link = true, preposition = "của", class = "subpolity", }, ["autonomous island"] = { -- Comoros; seems like an administrative atoll of the Maldives. link = "+w:autonomous islands of Comoros", preposition = "của", class = "subpolity", }, ["autonomous oblast"] = { link = true, preposition = "của", affix_type = "Suf", no_affix_strings = "oblast", class = "subpolity", }, ["autonomous okrug"] = { link = true, preposition = "của", affix_type = "Suf", no_affix_strings = "okrug", class = "subpolity", }, ["autonomous prefecture"] = { link = true, fallback = "prefecture", }, ["autonomous province"] = { link = "w", fallback = "province", }, ["autonomous region"] = { link = "w", preposition = "của", fallback = "administrative region", -- "administrative region" sets an affix of "region" but we want to display as "Tibet Autonomous Region" -- if the user writes 'ar:Suf/Tibet'. affix = "autonomous region", }, ["autonomous republic"] = { link = "w", preposition = "của", class = "subpolity", }, ["autonomous territorial unit"] = { -- Moldova; only two of them, one for Gagauzia and one for Transnistria. link = "w", preposition = "của", class = "subpolity", }, ["autonomous territory"] = { link = "w", fallback = "dependent territory", }, ["bailiwick"] = { -- Jersey, etc. link = true, fallback = "polity", }, ["barangay"] = { -- Philippines link = true, class = "settlement", -- Barangays are formal administrative divisions of a city rather than informal neighborhoods, but can use -- some of the properties of a neighborhood. fallback = "neighborhood", }, ["barrio"] = { -- Spanish-speaking countries; Philippines link = true, -- FIXME: Not completely correct, in some countries barrios are formal administrative divisions of a city. -- `class` will need to conditionalize on the country to be completely correct. fallback = "neighborhood", }, ["basin"] = { link = true, fallback = "lake", }, ["vịnh"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"Vùng nước"}, default = {true}, }, ["bãi biển"] = { link = true, class = "natural feature", addl_bare_category_parents = {"nước"}, default = {true}, }, ["beach resort"] = { link = "w", fallback = "resort town", }, ["bishopric"] = { link = true, fallback = "polity", }, ["vùng nước!"] = { -- 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 = "vùng nước", class = "natural feature", addl_bare_category_parents = {"địa mạo", "hệ thống sinh thái", "nước"}, }, ["borough"] = { link = true, preposition = "của", 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 = "của", has_neighborhoods = true, class = "capital", }, ["branch"] = { link = true, preposition = "của", fallback = "river", }, ["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 = "polity", }, ["canton"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["cape"] = { link = true, fallback = "headland", }, ["capital"] = { link = true, fallback = "capital city", }, ["capital city"] = { link = true, category_link = "[[capital city|capital cities]]: the [[seat of government|seats of government]] for a country or [[political]] [[division]] of a country", entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", bare_category_parent = "cities", cat_handler = capital_city_cat_handler, default = {true}, -- The following is necessary so that e.g. [[Melbourne]] defined as {{place|en|capital city|s/Victoria|c/Australia}} -- gets categorized in the bare category [[Category:en:Melbourne]]; otherwise placetype 'capital city' wouldn't -- match against the placetype 'city' of Melbourne. fallback = "thành phố", }, ["caplc"] = { link = "[[capital]] and [[large]]st [[city]]", plural_link = false, fallback = "capital city", }, ["captaincy"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["caravan city"] = { link = "w", fallback = "thành phố", class = "settlement", inherently_former = {"ANCIENT", "FORMER"}, }, ["castle"] = { link = true, fallback = "building", }, ["cathedral city"] = { link = true, fallback = "thành phố", }, ["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 = "của", class = "subpolity", }, ["census town"] = { link = "w", fallback = "town", }, ["central business district"] = { link = true, fallback = "neighborhood", }, ["cercle"] = { -- Mali link = "+w:cercles of Mali", preposition = "của", class = "subpolity", }, ["ceremonial county"] = { link = true, fallback = "county", }, ["chain of islands"] = { link = "[[chain]] of [[island]]s", plural = "chains of islands", plural_link = "[[chain]]s of [[island]]s", fallback = "island", }, ["channel"] = { link = true, fallback = "strait", }, ["charter community"] = { -- Northwest Territories, Canada link = "w", fallback = "village", }, ["thành phố"] = { link = true, generic_before_non_cities = "của", 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", "Cities in +++", "Quốc gia của +++", "National capitals"}, default = {"City-states", "Cities", "Quốc gia", "National capitals"}, }, ["civil parish"] = { -- Mostly England; similar to municipalities link = true, preposition = "của", affix_type = "suf", has_neighborhoods = true, class = "subpolity", }, ["claimed political division"] = { link = "[[claim]]ed [[political]] [[division]]", class = "subpolity", default = {true}, }, ["co-capital"] = { link = "[[co-]][[capital]]", fallback = "capital city", }, ["coal city"] = { link = "+w:coal town", fallback = "thành phố", }, ["coal town"] = { link = "w", fallback = "town", }, ["collectivity"] = { link = "w", preposition = "của", -- 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 = "của", class = "subpolity", }, ["commandery"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"ANCIENT", "FORMER"}, }, ["commonwealth"] = { link = true, preposition = "của", -- No default; applies specifically to Puerto Rico class = "subpolity", }, ["commune"] = { link = true, fallback = "municipality", }, ["community"] = { link = true, category_link = "[[community|communities]] of all sizes", fallback = "village", }, ["community development block"] = { -- in India; appears to be similar to a rural municipality; groups several villages, unclear if there will be -- neighborhoods so I'm not setting `has_neighborhoods` for now link = "w", affix_type = "suf", no_affix_strings = "block", class = "subpolity", }, ["comune"] = { -- Italy, Switzerland link = true, fallback = "municipality", }, ["condominium"] = { link = true, fallback = "polity", }, ["confederacy"] = { link = true, fallback = "confederation", }, ["confederation"] = { link = true, fallback = "polity", }, ["constituency"] = { -- currently we have them as political divisions of Namibia but many countries have them link = true, preposition = "của", class = "subpolity", }, ["constituent country"] = { link = true, preposition = "của", class = "subpolity", }, ["constituent part"] = { link = "separately", preposition = "của", class = "subpolity", }, ["constituent republic"] = { -- Of Russia, Yugoslavia, etc. link = "separately", preposition = "của", class = "subpolity", }, ["counties and county-level cities!"] = { -- This is used when grouping counties and county-level cities under prefecture-level cities in China. category_link = "[[county|counties]] and [[county-level city|county-level cities]]", class = "subpolity", }, ["continent"] = { link = true, category_link = false, -- can't occur as a bare category class = "natural feature", default = {"Lục địa"}, }, ["continental region"] = { link = "separately", category_link = false, -- can't occur as a bare category class = "geographic region", fallback = "continent", }, ["lục địa!"] = { category_link = "[[continent]]s and [[continent]]-[[level]] [[region]]s (e.g. [[Polynesia]])", class = "geographic region", default = {"Lục địa"}, }, ["council area"] = { link = true, -- in Scotland; similar to a county preposition = "của", affix_type = "suf", class = "subpolity", }, ["quốc gia"] = { link = true, class = "polity", ["continent/*"] = {true, "Quốc gia"}, default = {"Quốc gia"}, }, ["country-like entities!"] = { category_link = "[[polity|polities]] not normally considered [[country|countries]] but treated similarly for categorization purposes; typically, [[unrecognized]] [[de-facto]] countries or [[w:dependent territory|dependent territories]]", class = "polity", }, ["county"] = { link = true, preposition = "của", display_handler = county_display_handler, class = "subpolity", }, ["county borough"] = { link = true, -- in Wales; similar to a county preposition = "của", affix_type = "suf", fallback = "borough", class = "subpolity", }, ["county seat"] = { link = true, entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", }, ["county town"] = { link = true, entry_placetype_use_the = true, preposition = "của", fallback = "town", has_neighborhoods = true, class = "capital", }, ["county-administered city"] = { -- In Taiwan, per Wikipedia similar to a Taiwanese township or district, which is a small city. -- NOT anything like a "county-level city" in PR China, which is a county masquerading as a city. link = "w", fallback = "thành phố", has_neighborhoods = true, class = "settlement", }, ["county-controlled city"] = { -- Taiwan link = "w", fallback = "county-administered city", }, ["county-level city"] = { -- PR China link = "w", fallback = "prefecture-level city", }, ["crater lake"] = { link = true, fallback = "lake", }, ["creek"] = { link = true, fallback = "stream", }, ["Crown colony"] = { link = "+crown colony", fallback = "crown colony", }, ["crown colony"] = { link = true, fallback = "colony", }, ["Crown dependency"] = { link = true, fallback = "dependent territory", }, ["crown dependency"] = { link = true, fallback = "dependent territory", }, ["cultural area"] = { link = "w", fallback = "geographic and cultural area", }, ["cultural region"] = { link = "w", fallback = "geographic and cultural area", }, ["delegation"] = { -- Tunisia link = "+w:delegations of Tunisia", preposition = "của", class = "subpolity", }, ["department"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["departmental capital"] = { link = "separately", fallback = "capital city", }, ["dependency"] = { link = true, fallback = "dependent territory", }, ["dependent territory"] = { link = "w", preposition = "của", class = "subpolity", former_type = "dependent territory", bare_category_parent = "political divisions", ["country/*"] = {true}, default = {true}, }, ["hoang mạc"] = { link = true, class = "natural feature", addl_bare_category_parents = {"hệ thống sinh thái"}, default = {true}, }, ["deserted mediaeval village"] = { link = "w", fallback = "deserted medieval village", }, ["deserted medieval village"] = { link = "w", fallback = "ANCIENT settlement", }, ["direct-administered municipality"] = { -- China link = "+w:direct-administered municipalities of China", fallback = "municipality", }, ["direct-controlled municipality"] = { -- several countries link = "w", fallback = "municipality", }, ["distributary"] = { link = true, preposition = "của", fallback = "river", }, ["district"] = { link = true, preposition = "của", affix_type = "suf", -- Grrr! FIXME! Here is where we need handlers for `class`. Using similar logic to -- district_neighborhood_cat_handler, we need to check if we're below or above a city to determine if the class -- is "settlement" or "subpolity". class = "subpolity", cat_handler = district_neighborhood_cat_handler, -- No default. Countries for which districts are political divisions will get entries. }, ["districts and autonomous regions!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Portugal. category_link = "[[district]]s and [[autonomous region]]s", class = "subpolity", }, ["districts and autonomous territorial units!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Moldova. category_link = "[[district]]s and [[w:autonomous territorial unit|autonomous territorial unit]]s", class = "subpolity", }, ["district capital"] = { link = "separately", fallback = "capital city", }, ["district headquarters"] = { link = "separately", fallback = "administrative centre", }, ["district municipality"] = { -- In Canada, a district municipality is equivalent to a rural municipality and won't have neighborhoods; in -- South Africa, district municipalities group local municipalities and hence won't have neighborhoods. link = "w", preposition = "của", affix_type = "suf", no_affix_strings = {"district", "municipality"}, fallback = "municipality", class = "subpolity", }, ["division"] = { link = true, preposition = "của", class = "subpolity", }, ["division capital"] = { link = "separately", fallback = "capital city", }, ["dome"] = { link = true, fallback = "mountain", }, ["dormant volcano"] = { link = true, fallback = "volcano", }, ["duchy"] = { link = true, fallback = "polity", }, ["emirate"] = { link = true, preposition = "của", -- FIXME: Can be subpolities (of the United Arab Emirates). fallback = "polity", }, ["empire"] = { link = true, fallback = "polity", }, ["enclave"] = { link = true, preposition = "của", -- Enclaves can theoretically be any size but assume a subpolity. class = "subpolity", }, ["entity"] = { -- Bosnia and Herzegovina link = "+w:entities of Bosnia and Herzegovina", preposition = "của", class = "subpolity", }, ["escarpment"] = { link = true, fallback = "mountain", }, ["ethnographic region"] = { -- used in Lithuania link = "+w:ethnographic regions of Lithuania", fallback = "geographic and cultural area", }, ["exclave"] = { link = true, preposition = "của", -- 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 = "của", fallback = "thành phố", }, ["federal district"] = { link = true, preposition = "của", -- 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 = "của", class = "subpolity", }, ["federal territory"] = { link = "w", fallback = "territory", }, ["fictional location"] = { link = "separately", former_type = "!", class = "hypothetical location", bare_category_parent = "places", default = {true}, }, ["First Nations reserve"] = { -- Canada link = "[[First Nations]] [[w:Indian reserve|reserve]]", -- Wikipedia uses "Indian reserve"; presumably that is the legal term fallback = "Indian reserve", class = "subpolity", }, ["fjord"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["footpath"] = { link = true, fallback = "road", }, ["rừng"] = { link = true, class = "natural feature", addl_bare_category_parents = {"hệ thống sinh thái", "lâm nghiệp"}, 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 = "của", 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 = "của", preposition = "của", class = "geographic region", bare_category_parent = "places", ["country/*"] = {true}, ["constituent country/*"] = {true}, ["continent/*"] = {true}, default = {true}, }, ["geographic area"] = { link = "+w:geographic region", fallback = "geographic and cultural area", }, ["geographic region"] = { link = "w", fallback = "geographic and cultural area", }, ["geographical area"] = { link = "w", fallback = "geographic and cultural area", }, ["geographical region"] = { link = "w", fallback = "geographic and cultural area", }, ["geopolitical zone"] = { -- Nigeria link = true, preposition = "của", class = "subpolity", }, ["gewog"] = { -- Bhutan link = true, preposition = "của", class = "subpolity", }, ["ghost town"] = { link = true, generic_before_non_cities = "in", class = "non-admin settlement", bare_category_parent = "former settlements", cat_handler = city_type_cat_handler, default = {true}, }, ["glen"] = { link = true, fallback = "valley", }, ["governorate"] = { link = true, preposition = "của", affix_type = "suf", class = "subpolity", }, ["greater administrative region"] = { -- China (former division) link = "w", preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["gromada"] = { -- Poland (former division) link = "w", preposition = "của", 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", }, ["vịnh biển"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["hamlet"] = { link = true, fallback = "village", }, ["harbor city"] = { link = "separately", fallback = "thành phố", }, ["harbor town"] = { link = "separately", fallback = "town", }, ["harbour city"] = { link = "separately", fallback = "thành phố", }, ["harbour town"] = { link = "separately", fallback = "town", }, ["mũi đất"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["headquarters"] = { link = "w", fallback = "administrative centre", }, ["bãi hoang"] = { link = true, fallback = "đồng hoang", }, ["hemisphere"] = { link = true, entry_placetype_use_the = true, fallback = "continental region", }, ["highway"] = { link = true, fallback = "road", }, ["đồi"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["hill station"] = { link = "w", fallback = "town", }, ["hill town"] = { link = "w", fallback = "town", }, ["historic region"] = { -- provided only for the link link = "+w:historical region", fallback = "FORMER geographic region", }, ["historical county"] = { -- needed for historical counties of England/etc. link = "+w:historic county", fallback = "FORMER subpolity", }, ["historical region"] = { -- provided only for the link link = "w", fallback = "FORMER geographic region", }, ["home rule city"] = { link = "w", fallback = "thành phố", }, ["home rule municipality"] = { link = "w", fallback = "municipality", }, ["hot spring"] = { link = true, fallback = "spring", }, ["house"] = { link = true, fallback = "building", }, ["housing estate"] = { -- not the same as a housing project (i.e. public housing) link = true, -- not exactly the case but approximately fallback = "neighborhood", }, ["hromada"] = { -- Ukraine link = "w", disallow_in_entries = "Use placetype 'urban hromada', 'rural hromada' or 'settlement hromada' in place of bare 'hromada'", disallow_in_holonyms = "Use placetype 'urban hromada'/'uhrom', 'rural hromada'/'rhrom' or 'settlement hromada'/'shrom' in place of bare 'hromada'", preposition = "của", affix_type = "suf", class = "subpolity", }, ["inactive volcano"] = { link = "w", fallback = "dormant volcano", }, ["independent city"] = { link = true, fallback = "thành phố", }, ["independent town"] = { link = "+independent city", fallback = "town", }, ["Indian reservation"] = { link = "w", -- In the US. Also known as "Native American reservation" or "domestic dependent nation", and the reservations -- themselves often use the term "nation" in their official name (e.g. the "Navajo Nation"). But Wikipedia puts -- the article at [[w:Indian reservation]] and uses that term when describing e.g. what the Navajo Nation is, -- so this must still be the legal term. preposition = "của", 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 = "của", class = "subpolity", default = {true}, }, ["inland sea"] = { -- note, we also have 'inland' as a qualifier link = true, fallback = "sea", }, ["inner city area"] = { link = "[[inner city]] [[area]]", fallback = "neighborhood", }, ["đảo"] = { link = true, preposition = "của", class = "natural feature", addl_bare_category_parents = {"địa mạo"}, default = {true}, }, ["island country"] = { -- FIXME: The following should map to both 'island' and 'country'. link = "w", fallback = "country", }, ["island group"] = { link = "separately", fallback = "island", }, ["island municipality"] = { link = "w", fallback = "municipality", }, ["islet"] = { link = "w", fallback = "island", }, ["Israeli settlement"] = { link = "w", class = "settlement", default = {true}, }, ["judicial capital"] = { link = "w", fallback = "capital city", }, ["khanate"] = { link = true, fallback = "polity", }, ["kibbutz"] = { link = true, plural = "kibbutzim", class = "non-admin settlement", default = {true}, }, ["kingdom"] = { link = true, fallback = "monarchy", }, ["krai"] = { link = true, preposition = "của", affix_type = "Suf", class = "subpolity", }, ["hồ"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {true}, }, ["địa mạo!"] = { category_link = "[[địa mạo]]", bare_category_parent = "địa danh", addl_bare_category_parents = {"Trái Đất"}, }, ["largest city"] = { link = "[[large]]st [[city]]", entry_placetype_use_the = true, fallback = "thành phố", has_neighborhoods = true, }, ["league"] = { link = true, fallback = "confederation", }, ["legislative capital"] = { link = "separately", fallback = "capital city", }, ["library"] = { link = true, fallback = "building", }, ["lieutenancy area"] = { -- used in the United Kingdom; per Wikipedia: -- In England, lieutenancy areas are colloquially known as the ceremonial counties, although this phrase does -- not appear in any legislation referring to them. The lieutenancy areas of Scotland are subdivisions of -- Scotland that are more or less based on the counties of Scotland, making use of the major cities as separate -- entities.[2] In Wales, the lieutenancy areas are known as the preserved counties of Wales and are based on -- those used for lieutenancy and local government between 1974 and 1996. The lieutenancy areas of Northern -- Ireland correspond to the six counties and two former county boroughs.[3] link = "w", fallback = "ceremonial county", }, ["local authority district"] = { link = "w", fallback = "local government district", }, ["local government area"] = { -- Australia link = "w", preposition = "của", class = "subpolity", }, ["local council"] = { -- Malta; similar to municipalities link = "+w:local councils of Malta", preposition = "của", fallback = "municipality", }, ["local government district"] = { link = "w", preposition = "của", affix_type = "suf", affix = "district", class = "subpolity", }, ["local government district with borough status"] = { link = "[[w:local government district|local government district]] with [[w:borough status|borough status]]", plural = "local government districts with borough status", plural_link = "[[w:local government district|local government districts]] with [[w:borough status|borough status]]", preposition = "của", affix_type = "suf", affix = "district", class = "subpolity", }, ["local urban district"] = { link = "w", fallback = "unincorporated community", }, ["locality"] = { link = "+w:locality (settlement)", -- not necessarily true, but usually is the case fallback = "village", }, ["London borough"] = { link = "w", preposition = "của", affix_type = "pref", affix = "borough", fallback = "local government district with borough status", has_neighborhoods = true, }, ["macroregion"] = { link = true, fallback = "region", }, ["man-made structures!"] = { category_link = "[[w:geographical feature#Engineered constructs|man-made structures]] such as [[airport]]s, [[university|universities]] and [[metro station]]s", bare_category_parent = "places", }, ["manor"] = { -- FIXME: or is this more like a farm? link = true, fallback = "building", }, ["marginal sea"] = { link = true, preposition = "của", fallback = "sea", }, ["market city"] = { link = "+market town", fallback = "thành phố", }, ["market town"] = { link = true, fallback = "town", }, ["massif"] = { link = true, fallback = "mountain", }, ["megacity"] = { link = true, fallback = "thành phố", }, ["metro station"] = { link = true, class = "man-made structure", }, ["metropolitan borough"] = { link = true, preposition = "của", affix_type = "Pref", no_affix_strings = {"borough", "thành phố"}, fallback = "local government district", has_neighborhoods = true, }, ["metropolitan city"] = { -- These exist e.g. in Italy and are more like municipalities or even provinces than cities. link = true, preposition = "của", affix_type = "Pref", no_affix_strings = {"metropolitan", "thành phố"}, class = "subpolity", }, ["metropolitan county"] = { link = true, fallback = "county", }, ["metropolitan municipality"] = { -- In South Africa, metropolitan municipalities group local municipalities and are like districts, between -- provinces and municipalities. -- In Turkey, metropolitan municipalities are provinces-level. link = "w", preposition = "của", affix_type = "Suf", no_affix_strings = {"metropolitan", "municipality"}, fallback = "municipality", class = "subpolity", }, ["microdistrict"] = { -- residential complex in post-Soviet states link = true, fallback = "neighborhood", }, ["micronations!"] = { -- FIXME, merge with microstate category_link = "[[micronation]]s", bare_category_parent = "quốc gia", }, ["microstate"] = { link = true, fallback = "country", }, ["military base"] = { link = "w", class = "settlement", -- or "man-made structure"? default = {true}, }, ["minster town"] = { -- England link = "separately", fallback = "town", }, ["monarchy"] = { link = true, fallback = "polity", }, ["đồng hoang"] = { link = true, class = "natural feature", addl_bare_category_parents = {"địa mạo", "hệ thống sinh thái"}, default = {true}, }, ["thảo nguyên"] = { link = true, fallback = "đồng hoang", }, ["motorway"] = { link = true, fallback = "road", }, ["mountain"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, }, ["mountain indigenous district"] = { -- Taiwan link = "+w:district (Taiwan)", fallback = "district", }, ["mountain indigenous township"] = { -- Taiwan link = "+w:township (Taiwan)", fallback = "township", }, ["mountain pass"] = { link = true, -- The default plural algorithm gets this right but the singularization algorithm incorrectly converts -- passes -> passe, so put an entry here to ensure we singularize correctly. plural = "mountain passes", class = "natural feature", addl_bare_category_parents = {"mountains"}, default = {true}, }, ["mountain range"] = { link = true, fallback = "mountain", }, ["mountainous region"] = { link = "separately", fallback = "region", }, ["mukim"] = { -- Malaysia, Brunei, Indonesia, Singapore link = true, preposition = "của", 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 = "của", affix_type = "Pref", no_affix_strings = "district", fallback = "municipality", }, ["municipality"] = { link = true, preposition = "của", has_neighborhoods = true, class = "subpolity", }, ["municipality with city status"] = { link = "[[municipality]] with [[w:city status|city status]]", plural = "municipalities with city status", plural_link = "[[municipality|municipalities]] with [[w:city status|city status]]", fallback = "municipality", }, ["museum"] = { link = true, fallback = "building", }, ["địa danh thần thoại"] = { link = "địa danh thần thoại", former_type = "!", class = "hypothetical location", bare_category_parent = "địa danh", default = {true}, }, ["named bridges!"] = { category_link = "notable [[bridge]]s", bare_category_parent = "man-made structures", addl_bare_category_parents = {"bridges"}, }, ["named buildings!"] = { category_link = "notable [[house]]s, [[library|libraries]] and other [[building]]s", bare_category_parent = "man-made structures", addl_bare_category_parents = {"buildings"}, }, ["named roads!"] = { category_link = "notable [[road]]s, [[highway]]s, [[trail]]s and similar linear structures", bare_category_parent = "man-made structures", addl_bare_category_parents = {"roads"}, }, ["national capital"] = { link = "w", fallback = "capital city", }, ["national park"] = { link = true, fallback = "park", }, ["đặc điểm tự nhiên!"] = { category_link = "tổng hợp các yếu tố vật chất hình thành tồn tại", bare_category_parent = "địa danh", }, ["neighborhood"] = { -- The majority of the properties here apply to both `neighborhoods` and `neighbourhoods`; the choice of which -- one to use is made by district_neighborhood_cat_handler() based on the value of `british_spelling` for the -- location (city, political division, etc.) of the holonym that follows the word "neighbo(u)hoods" in the -- category name. It does *NOT* depend on whether the {{place}} call uses "neighborhoods" or "neighbourhoods". -- (In general it can't, because other things like "urban areas", "districts", "subdivisions" and the like also -- categorize as neighbo(u)rhoods.) link = true, -- See below. These are used by category handlers in [[Module:category tree/topic cat/data/Places]]. generic_before_non_cities = "in", generic_before_cities = "của", -- 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 "của" before cities and "in" before non-cities regardless. (FIXME: We should change that.) preposition = "của", class = "non-admin settlement", cat_handler = district_neighborhood_cat_handler, }, ["neighbourhood"] = { link = true, category_link = "[[neighbourhood]]s, [[district]]s and other subportions of [[city|cities]]", category_link_before_city = "[[neighbourhood]]s, [[district]]s and other subportions", fallback = "neighborhood", }, ["new area"] = { -- China (type of economic development zone, varying greatly in size) link = "w", preposition = "in", class = "subpolity", --? }, ["new town"] = { link = true, fallback = "town", }, ["non-city capital"] = { link = "[[capital]]", entry_placetype_use_the = true, preposition = "của", has_neighborhoods = true, class = "capital", cat_handler = function(data) return capital_city_cat_handler(data, "non-city") end, -- FIXME, do we need the following? default = {true}, }, ["non-metropolitan county"] = { link = "w", fallback = "county", }, ["non-metropolitan district"] = { link = "w", fallback = "local government district", }, ["non-sovereign kingdom"] = { -- especially in Africa and Asia link = "+w:non-sovereign monarchy", generic_before_non_cities = "in", class = "subpolity", ["country/*"] = {true}, ["continent/*"] = {true}, default = {true}, }, ["non-sovereign monarchy"] = { link = "w", fallback = "non-sovereign kingdom", }, ["oblast"] = { link = true, preposition = "của", 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", }, ["đại dương"] = { link = true, class = "natural feature", addl_bare_category_parents = {"biển", "vùng nước"}, default = {true}, }, ["okrug"] = { link = true, preposition = "của", 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 = "của", 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 = "của", fallback = "municipality", has_neighborhoods = true, }, ["parish seat"] = { link = true, entry_placetype_use_the = true, preposition = "của", class = "capital", has_neighborhoods = true, }, ["park"] = { link = true, class = "man-made structure", default = {true}, }, ["pass"] = { link = "+mountain pass", -- The default plural algorithm gets this right but the singularization algorithm incorrectly converts -- passes -> passe, so put an entry here to ensure we singularize correctly. plural = "passes", fallback = "mountain pass", }, ["path"] = { link = true, fallback = "road", }, ["peak"] = { link = true, fallback = "mountain", }, ["peninsula"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, }, ["periphery"] = { link = true, preposition = "của", class = "subpolity", }, ["địa danh!"] = { generic_before_non_cities = "của", generic_before_cities = "của", 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 = "tên", }, ["planned community"] = { -- Include this so we don't categorize 'planned community' into villages, as 'community' does. link = true, class = "settlement", has_neighborhoods = true, }, ["plateau"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true}, -- FIXME: Should generate both "Plateaus" and the appropriate 'geographic and cultural area' category }, ["Polish colony"] = { link = "[[w:colony (Poland)|colony]]", affix_type = "suf", affix = "colony", fallback = "village", has_neighborhoods = true, }, ["political divisions!"] = { category_link = "[[political]] [[division]]s and [[subdivision]]s, such as [[state]]s, [[province]]s, [[county|counties]] or [[district]]s", bare_category_parent = "places", }, ["tổ chức chính trị"] = { link = true, category_link = "[[independent]] or [[semi-]][[independent]] [[polity|polities]]", class = "polity", bare_category_parent = "địa danh", default = {true}, }, ["populated place"] = { link = "+w:populated place", -- not necessarily true, but usually is the case fallback = "village", }, ["port"] = { link = true, class = "man-made structure", default = {true}, }, ["port city"] = { -- FIXME: should categorize into "Ports" as well as "Cities" link = true, fallback = "thành phố", }, ["port town"] = { -- FIXME: should categorize into "Ports" as well as "Towns" link = "w", fallback = "town", }, ["prefecture"] = { -- FIXME! `prefecture` is like a county in Japan and elsewhere but a department capital city in France. -- May need `has_neighborhoods` to be a function. link = true, preposition = "của", 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 = "của", class = "subpolity", }, ["preserved county"] = { -- In Wales; they are former counties enshrined in law; there are 8 of them and each consists of one or more -- "principal areas" (styled as "counties" or "county boroughs"), of which there are 22. link = "w", preposition = "của", class = "subpolity", inherently_former = {"FORMER"}, }, ["primary area"] = { -- a grouping of "districts" (neighborhoods) in Gothenburg, Sweden link = "+w:sv:primärområde", fallback = "neighborhood", }, ["principality"] = { link = true, fallback = "monarchy", }, ["promontory"] = { link = true, fallback = "headland", }, ["protectorate"] = { link = true, fallback = "dependent territory", }, ["province"] = { link = true, preposition = "của", 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 = "capital city", }, ["raion"] = { link = true, preposition = "của", affix_type = "Suf", class = "subpolity", }, ["ranch"] = { link = true, fallback = "farm", }, ["range"] = { -- FIXME: Where is this used? Is it a mountain range? link = true, class = "natural feature", }, ["regency"] = { link = true, preposition = "của", class = "subpolity", }, ["region"] = { link = true, preposition = "của", -- If 'region' isn't a specific administrative division, fall back to 'geographic and cultural area' fallback = "geographic and cultural area", -- "former region" is a subpolity but traditional/historic(al)/ancient/medieval/etc. is a geographic region class = "geographic region", }, ["regional capital"] = { link = "separately", fallback = "capital city", }, ["regional county municipality"] = { -- Quebec link = "w", preposition = "của", affix_type = "Suf", no_affix_strings = {"municipality", "county"}, fallback = "municipality", }, ["regional district"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "district", fallback = "district", }, ["regional municipality"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "municipality", fallback = "municipality", }, ["regional unit"] = { link = "w", preposition = "của", affix_type = "suf", class = "subpolity", }, ["registration county"] = { -- Used in Scotland for land registration purposes; formerly used in England, Wales and Ireland for statistical -- purposes (registration of births, deaths and marriages, and for the output of census information). link = "w", fallback = "county", }, ["republic"] = { -- Of Russia, Yugoslavia, etc. "Republics" in general are sovereign but we use "country" in that case. link = true, fallback = "constituent republic", }, ["research base"] = { link = "+w:research station", fallback = "research station", }, ["research station"] = { link = "w", class = "non-admin settlement", -- or "man-made structure"? default = {true}, }, ["reservoir"] = { link = true, fallback = "lake", }, ["residential area"] = { link = "separately", fallback = "neighborhood", }, ["resort city"] = { link = "w", fallback = "thành phố", }, ["resort town"] = { link = "w", fallback = "town", }, ["sông"] = { link = true, generic_before_non_cities = "của", class = "natural feature", addl_bare_category_parents = {"vùng nước"}, cat_handler = city_type_cat_handler, ["continent/*"] = {true}, default = {true}, }, ["river island"] = { link = "w", fallback = "island", }, ["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 = "của", affix_type = "Pref", no_affix_strings = {"royal", "borough"}, fallback = "local government district with borough status", has_neighborhoods = true, }, ["royal burgh"] = { link = true, fallback = "borough", }, ["royal capital"] = { link = "w", fallback = "capital city", }, ["rural committee"] = { -- Hong Kong; a group of villages link = "w", affix_type = "Suf", has_neighborhoods = true, class = "settlement", }, ["rural community"] = { -- New Brunswick link = "+w:list of municipalities in New_Brunswick#Rural communities", fallback = "municipality", }, ["rural hromada"] = { link = "[[rural]] [[w:hromada|hromada]]", affix_type = "suf", fallback = "hromada", }, ["rural municipality"] = { link = "w", preposition = "của", affix_type = "Pref", no_affix_strings = "municipality", fallback = "municipality", has_neighborhoods = true, --? }, ["rural township"] = { -- Taiwan link = "+w:rural township (Taiwan)", fallback = "township", }, ["sanctuary"] = { link = true, fallback = "temple", }, ["satrapy"] = { link = true, preposition = "của", class = "subpolity", inherently_former = {"ANCIENT", "FORMER"}, }, ["biển"] = { link = true, class = "natural feature", addl_bare_category_parents = {"vùng nước"}, default = {"Biển"}, }, ["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 = "của", class = "subpolity", }, ["self-administered division"] = { -- Myanmar (only one of them: Wa Self-Administered Division) link = "w", fallback = "self-administered area", }, ["self-administered zone"] = { -- Myanmar (five of them) link = "w", fallback = "self-administered area", }, ["separatist state"] = { link = "separately", fallback = "unrecognized country", }, ["settlement"] = { link = true, category_link = "[[settlement]]s such as [[city|cities]], [[village]]s and [[farm]]s", bare_category_parent = "places", -- not necessarily true, but usually is the case fallback = "village", }, ["settlement hromada"] = { link = "[[w:Populated places in Ukraine#Rural settlements|settlement]] [[w:hromada|hromada]]", affix_type = "suf", fallback = "hromada", }, ["sheading"] = { -- Isle of Man link = true, fallback = "district", }, ["sheep station"] = { -- Australia link = true, fallback = "farm", }, ["shire"] = { link = true, fallback = "county", }, ["shire county"] = { link = "w", fallback = "county", }, ["shire town"] = { link = true, fallback = "county seat", }, ["ski resort city"] = { link = "[[ski resort]] [[city]]", fallback = "thành phố", }, ["ski resort town"] = { link = "[[ski resort]] [[town]]", fallback = "town", }, ["spa city"] = { link = "+w:spa town", fallback = "thành phố", }, ["spa town"] = { link = "w", fallback = "town", }, ["space station"] = { link = true, fallback = "research station", }, ["special administrative region"] = { -- in China; in practice they are city-like (Hong Kong, Macau); also [[Oecusse]] in East Timor is formally a -- "special administrative region"; North Korea had one such region planned (Sinuiju) but abandoned; Indonesia -- has similar "special regions" of Jakarta, Yogyakarta and Aceh; and South Sudan has three "special -- administrative areas" link = "+w:special administrative regions of China", preposition = "của", class = "subpolity", has_neighborhoods = true, --? -- no suffix since places in Hong Kong or Macau are listed without China, except Hong Kong and Macau themselves -- they also contain regions (or areas), e.g. [[Kowloon]], so it would be confusing suffix = "", }, ["special collectivity"] = { link = "w", fallback = "collectivity", }, ["special municipality"] = { -- formerly linked to the Taiwan article but there are also special municipalities of the Netherlands link = "w", fallback = "municipality", }, ["special ward"] = { -- Tokyo link = true, fallback = "municipality", }, ["spit"] = { link = true, fallback = "peninsula", }, ["spring"] = { link = true, class = "natural feature", default = {true}, }, ["star"] = { link = true, class = "natural feature", default = {true}, }, ["state"] = { link = true, preposition = "của", class = "subpolity", -- 'former/historical state' could refer either to a state of a country (a division) or a state = sovereign -- entity. The latter appears more common (e.g. in various "ancient states" of East Asia). former_type = "polity", }, ["states and territories!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case Australia. category_link = "[[state]]s and [[territory|territories]]", class = "subpolity", }, ["states and union territories!"] = { -- This and other similar "combined placetypes" are for use in the plural when grouping first-level -- administrative regions of certain countries, in this case India. category_link = "[[state]]s and [[union territory|union territories]]", class = "subpolity", }, ["state capital"] = { link = true, fallback = "capital city", }, ["state park"] = { link = true, fallback = "park", }, ["state-level new area"] = { -- China (type of economic development zone, varying greatly in size) link = "w", fallback = "new area", }, ["statistical region"] = { -- Slovenia link = true, fallback = "administrative region", }, ["statutory city"] = { link = "w", fallback = "thành phố", }, ["statutory town"] = { link = "w", fallback = "town", }, ["strait"] = { link = true, class = "natural feature", addl_bare_category_parents = {"bodies of water"}, default = {true}, }, ["stream"] = { link = true, fallback = "river", }, ["street"] = { link = true, fallback = "road", }, ["strip"] = { link = true, fallback = "geographic region", }, ["strip of land"] = { link = "[[strip]] of [[land]]", plural = "strips of land", plural_link = "[[strip]]s of [[land]]", fallback = "geographic region", }, ["sub-metropolitan city"] = { link = "+w:List of cities in Nepal#Sub-metropolitan cities", fallback = "thành phố", }, ["sub-prefectural city"] = { link = "w", fallback = "subprovincial city", }, ["subdistrict"] = { link = true, preposition = "của", 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 = "của", 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 = "của", class = "subpolity", }, ["subprovince"] = { link = true, preposition = "của", 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 = "của", class = "subpolity", }, ["subregion"] = { link = true, fallback = "geographic region", }, ["suburb"] = { link = true, -- The following text is suitable for the top-level description of a suburb as well as categories of the form -- 'Suburbs in POLDIV' e.g. 'Suburbs in Illinois, USA' but not for categories of the form 'Suburbs of Chicago', -- where we'd get "[[suburb]]s of [[city|cities]] of [[Chicago]]". category_link = "[[suburb]]s of [[city|cities]]", category_link_before_city = "[[suburb]]s", -- See comments under "neighborhood" for the following three settings. They are used by -- [[Module:category tree/topic cat/data/Places]] for generating the text of 'Suburbs in/of PLACE' categories -- but currently ignored by district_neighborhood_cat_handler (which actually generates the categories for a -- given page), which hardcodes "in" for non-cities and "của" for cities. (FIXME: Change this.) generic_before_non_cities = "in", generic_before_cities = "của", preposition = "của", has_neighborhoods = true, --? class = "non-admin settlement", --? cat_handler = district_neighborhood_cat_handler, }, ["suburban area"] = { link = "w", fallback = "suburb", }, ["subway station"] = { link = "w", fallback = "metro station", }, ["sum"] = { -- In China, Mongolia, Russia; something like a county in Mongolia but a township in China (Inner Mongolia), -- and equivalent to a [[selsoviet]] in the parts of Russia where it's in use (a rural council, below a raion). link = "+w:sum (administrative division)", -- This fallback is somewha arbitrary. We could use "county" but that has a display handler -- which we don't want to be active (FIXME: If the display handler would be active, that's a bug). fallback = "division", }, ["supercontinent"] = { link = true, fallback = "continent", }, ["tehsil"] = { link = true, affix_type = "suf", no_affix_strings = {"tehsil", "tahsil"}, class = "subpolity", }, ["temple"] = { link = true, fallback = "building", }, ["territorial authority"] = { link = "w", fallback = "district", }, ["territory"] = { link = true, preposition = "của", class = "subpolity", }, ["theme"] = { link = "+w:theme (Byzantine district)", preposition = "của", class = "subpolity", }, ["town"] = { link = true, generic_before_non_cities = "in", has_neighborhoods = true, class = "settlement", cat_handler = city_type_cat_handler, default = {true}, }, ["town with bystatus"] = { -- can't use templates in links currently link = "[[town]] with [[bystatus#Norwegian Bokmål|bystatus]]", plural = "towns with bystatus", plural_link = "[[town]]s with [[bystatus#Norwegian Bokmål|bystatus]]", fallback = "town", }, ["township"] = { link = true, has_neighborhoods = true, class = "settlement", --? default = {true}, }, ["township municipality"] = { -- Quebec link = "+w:township municipality (Quebec)", preposition = "của", fallback = "municipality", has_neighborhoods = true, --? }, ["traditional county"] = { link = true, fallback = "county", }, ["traditional region"] = { -- FIXME: Verify this works. Same for 'historic(al) region'. -- provided only for the link link = "w", fallback = "FORMER geographic region", }, ["trail"] = { link = true, fallback = "road", }, ["treaty port"] = { link = "w", fallback = "thành phố", class = "settlement", inherently_former = {"FORMER"}, }, ["tributary"] = { link = true, preposition = "của", fallback = "river", }, ["underground station"] = { link = "w", fallback = "metro station", }, ["unincorporated area"] = { link = "w", -- I don't know if this fallback makes sense everywhere. fallback = "unincorporated community", }, ["unincorporated community"] = { link = true, generic_before_non_cities = "in", class = "non-admin settlement", }, ["unincorporated territory"] = { link = "w", fallback = "territory", }, ["union territory"] = { -- India link = true, preposition = "của", entry_placetype_indefinite_article = "a", class = "subpolity", }, ["unitary authority"] = { -- UK, New Zealand link = true, entry_placetype_indefinite_article = "a", fallback = "local government district", }, ["unitary district"] = { link = "w", entry_placetype_indefinite_article = "a", fallback = "local government district", }, ["united township municipality"] = { -- Quebec link = "+w:united township municipality (Quebec)", entry_placetype_indefinite_article = "a", fallback = "township municipality", has_neighborhoods = true, --? }, ["university"] = { link = true, entry_placetype_indefinite_article = "a", class = "man-made structure", default = {true}, }, ["unrecognised country"] = { link = "w", fallback = "unrecognized country", }, ["unrecognized and nearly unrecognized countries!"] = { category_link = "[[de facto]] [[independent]] [[state]]s with little or no {{w|international recognition}}", bare_category_parent = "country-like entities", }, ["unrecognized country"] = { link = "w", class = "polity", default = {"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 = "thành phố", }, ["urban township"] = { link = "w", fallback = "township", }, ["urban-type settlement"] = { -- appears to be a particular type of small urban settlement in post-Soviet states, -- had an administrative function. link = "w", fallback = "town", }, ["valley"] = { link = true, class = "natural feature", addl_bare_category_parents = {"landforms", "water"}, default = {true}, }, ["viceroyalty"] = { -- in essence, a type of colony link = true, fallback = "dependent territory", }, ["village"] = { link = true, generic_before_non_cities = "in", category_link = "[[village]]s, [[hamlet]]s, and other small [[community|communities]] and [[settlement]]s", class = "settlement", cat_handler = city_type_cat_handler, default = {true}, }, ["village development committee"] = { -- former administrative structure in Nepal; also exists in India but not as a formal unit link = "+w:village development committee (Nepal)", inherently_former = {"FORMER"}, fallback = "village", }, ["village municipality"] = { -- Quebec link = "+w:village municipality (Quebec)", preposition = "của", fallback = "municipality", has_neighborhoods = true, --? }, ["voivodeship"] = { -- Poland link = true, display_handler = voivodeship_display_handler, preposition = "của", class = "subpolity", }, ["volcano"] = { link = true, plural = "volcanoes", class = "natural feature", addl_bare_category_parents = {"landforms"}, default = {true, "Mountains"}, }, ["phường"] = { 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 = "của", affix_type = "suf", affix = "community", has_neighborhoods = true, class = "settlement", }, ["zone"] = { -- administrative division of Ethiopia, Qatar, Nepal, India link = "+w:zone#Place names", preposition = "của", class = "subpolity", }, ---------------------------------------------------------------------------------------------- -- Categories for former places -- ---------------------------------------------------------------------------------------------- ["ANCIENT capital"] = { link = false, entry_placetype_use_the = true, preposition = "của", 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 = "của", has_neighborhoods = true, class = "capital", default = {"Former capitals"}, }, ["former capitals!"] = { category_link = "former [[capital]] [[city|cities]] and [[town]]s", bare_category_parent = "settlements", }, ["former counties and county-level cities!"] = { -- For categorizing former counties and county-level cities of China category_link = "no-longer existing [[county|counties]] and [[county-level city|county-level cities]]", bare_category_breadcrumb = "counties and county-level cities", bare_category_parent = "former political divisions", }, ["FORMER county"] = { -- For categorizing former counties and county-level cities of China link = false, fallback = "FORMER subpolity", }, ["FORMER county-level city"] = { -- For categorizing former counties and county-level cities of China link = false, fallback = "FORMER subpolity", }, ["former countries and country-like entities!"] = { category_link = "[[country|countries]] and similar [[polity|polities]] that no longer exist", bare_category_breadcrumb = "countries and country-like entities", bare_category_parent = "former polities", }, ["FORMER country"] = { link = false, class = "polity", default = {"Former countries and country-like entities"}, }, ["former dependent territories!"] = { category_link = "[[w:dependent territory|dependent territories]] (colonies, dependencies, protectorates, etc.) that no longer exist", bare_category_breadcrumb = "dependent territories", bare_category_parent = "former political divisions", }, ["FORMER dependent territory"] = { link = false, preposition = "của", class = "subpolity", default = {"Former dependent territories"}, }, ["former districts!"] = { -- For categorizing former districts of China category_link = "no-longer-existing [[district]]s", bare_category_breadcrumb = "districts", bare_category_parent = "former political divisions", }, ["FORMER district"] = { -- For categorizing former districts of China link = false, fallback = "FORMER subpolity", }, ["FORMER geographic region"] = { link = false, fallback = "geographic and cultural area", }, ["FORMER man-made structure"] = { link = false, class = "man-made structure", default = {"Former man-made structures"}, }, ["former man-made structures!"] = { category_link = "man-made structures such as [[airport]]s and [[park]]s that no longer exist", bare_category_breadcrumb = "man-made structures", bare_category_parent = "former places", }, ["former municipalities!"] = { -- For categorizing former municipalities of the Netherlands category_link = "no-longer-existing [[municipality|municipalities]]", bare_category_breadcrumb = "municipalities", bare_category_parent = "former political divisions", }, ["FORMER municipality"] = { -- For categorizing former municipalities of the Netherlands link = false, fallback = "FORMER subpolity", }, ["FORMER natural feature"] = { link = false, class = "natural feature", default = {"Former natural features"}, }, ["former natural features!"] = { category_link = "natural features such as [[lake]]s, [[river]]s and [[island]]s that no longer exist", bare_category_breadcrumb = "natural features", bare_category_parent = "former places", }, ["FORMER non-admin settlement"] = { link = false, class = "non-admin settlement", fallback = "FORMER settlement", }, ["former places!"] = { category_link = "[[place]]s of all sorts that no longer exist", bare_category_breadcrumb = "former", bare_category_parent = "places", }, ["former political divisions!"] = { category_link = "[[political]] [[division]]s (states, provinces, counties, etc.) that no longer exist", bare_category_breadcrumb = "political divisions", bare_category_parent = "former places", }, ["former polities!"] = { category_link = "[[polity|polities]] (countries, kingdoms, empires, etc.) that no longer exist", bare_category_breadcrumb = "polities", bare_category_parent = "former places", }, ["FORMER polity"] = { link = false, class = "polity", default = {"Former polities"}, }, ["former prefectures!"] = { -- For categorizing former prefectures of China category_link = "no-longer-existing [[prefecture]]s", bare_category_breadcrumb = "prefectures", bare_category_parent = "former political divisions", }, ["FORMER prefecture"] = { -- For categorizing former prefectures of China link = false, fallback = "FORMER subpolity", }, ["former provinces!"] = { -- For categorizing former provinces of China, etc. category_link = "no-longer-existing [[province]]s", bare_category_breadcrumb = "provinces", bare_category_parent = "former political divisions", }, ["FORMER province"] = { -- For categorizing ancient/historical/former provinces of the Roman Empire link = false, fallback = "FORMER subpolity", }, ["former region"] = { -- A former region is considered a former political division, but not a 'historical/traditional/etc.' region. link = "separately", preposition = "của", inherently_former = {"FORMER"}, class = "subpolity", }, ["FORMER settlement"] = { link = false, has_neighborhoods = true, class = "settlement", default = {"Former settlements"}, }, ["former settlements!"] = { category_link = "[[city|cities]], [[town]]s and [[village]]s that no longer exist or have been merged or reclassified", bare_category_breadcrumb = "settlements", bare_category_parent = "former political divisions", }, ["FORMER subpolity"] = { link = false, preposition = "của", class = "subpolity", default = {"Former political divisions"}, }, ---------------------------------------------------------------------------------------------- -- form-of categories -- ---------------------------------------------------------------------------------------------- ---------- Abbreviations ---------- ["abbreviations of counties!"] = { -- For categorizing abbreviations of counties of e.g. England full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[county|counties]]", bare_category_breadcrumb = "counties", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of countries!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "abbreviations of places", }, ["abbreviations of departments!"] = { -- For categorizing abbreviations of departments of e.g. France full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[department]]s", bare_category_breadcrumb = "departments", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of districts!"] = { -- For categorizing abbreviations of districts of e.g. ??? full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[district]]s", bare_category_breadcrumb = "districts", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of divisions!"] = { -- For categorizing abbreviations of divisions of e.g. Bangladesh full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[division]]s", bare_category_breadcrumb = "divisions", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of former countries!"] = { full_category_link = "{{glossary|abbreviation}}s of [[country|countries]] that no longer [[exist]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "abbreviations of former places", }, ["abbreviations of former places!"] = { full_category_link = "{{glossary|abbreviation}}s of [[place]]s that no longer [[exist]]", bare_category_breadcrumb = "abbreviations", bare_category_parent = "former places", addl_bare_category_parents = {{name = "abbreviations of places", sort = "former"}}, }, ["abbreviations of places!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[place]]s", bare_category_breadcrumb = "abbreviations", bare_category_parent = "places", }, ["abbreviations of political divisions!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[political]] [[division]]s", bare_category_breadcrumb = "political divisions", bare_category_parent = "abbreviations of places", }, ["abbreviations of prefectures!"] = { -- For categorizing abbreviations of prefectures of e.g. Japan full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[prefecture]]s", bare_category_breadcrumb = "prefectures", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of provinces!"] = { -- For categorizing abbreviations of provinces of e.g. Canada full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s", bare_category_breadcrumb = "provinces", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of provinces and territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[province]]s and [[territory|territories]]", bare_category_breadcrumb = "provinces and territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of regions!"] = { -- For categorizing abbreviations of regions of e.g. Italy full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[administrative region]]s", bare_category_breadcrumb = "regions", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states!"] = { -- For categorizing abbreviations of states of e.g. the United States full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states and territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[territory|territories]]", bare_category_breadcrumb = "states and territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of states and union territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[state]]s and [[union territory|union territories]]", bare_category_breadcrumb = "states and union territories", bare_category_parent = "abbreviations of political divisions", }, ["abbreviations of territories!"] = { full_category_link = "{{glossary|abbreviation}}s of [[name]]s of [[territory|territories]]", bare_category_breadcrumb = "territories", bare_category_parent = "abbreviations of political divisions", }, ["ABBREVIATION_OF country"] = { link = false, default = {"Abbreviations of countries"}, }, ["ABBREVIATION_OF county"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF department"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF district"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF division"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF FORMER country"] = { link = false, default = {"Abbreviations of former countries"}, }, ["ABBREVIATION_OF FORMER place"] = { link = false, default = {"Abbreviations of former places"}, }, ["ABBREVIATION_OF place"] = { link = false, default = {"Abbreviations of places"}, }, ["ABBREVIATION_OF prefecture"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF province"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF region"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF state"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF subpolity"] = { link = false, default = {"Abbreviations of political divisions"}, }, ["ABBREVIATION_OF territory"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ["ABBREVIATION_OF union territory"] = { link = false, fallback = "ABBREVIATION_OF subpolity", }, ---------- Archaic forms ---------- ["archaic forms of places!"] = { full_category_link = "{{glossary|archaic}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "archaic forms", bare_category_parent = "places", }, ["ARCHAIC_FORM_OF place"] = { link = false, default = {"Archaic forms of places"}, }, ---------- Clippings ---------- ["clippings of places!"] = { full_category_link = "{{glossary|clipping}}s of [[name]]s of [[place]]s", bare_category_breadcrumb = "clippings", bare_category_parent = "places", }, ["CLIPPING_OF place"] = { link = false, default = {"Clippings of places"}, }, ---------- Dated forms ---------- ["dated forms of places!"] = { full_category_link = "{{glossary|dated}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "dated forms", bare_category_parent = "places", }, ["DATED_FORM_OF place"] = { link = false, default = {"Dated forms of places"}, }, ---------- Derogatory names ---------- ["derogatory names for cities!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[city|cities]]", bare_category_breadcrumb = "cities", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for cities"}, }, ["derogatory names for continents!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[continent]]s", bare_category_breadcrumb = "continents", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for continents"}, }, ["derogatory names for countries!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for countries"}, }, ["derogatory names for places!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[place]]s", bare_category_breadcrumb = "derogatory names", bare_category_parent = "nicknames for places", }, ["derogatory names for states!"] = { full_category_link = "{{glossary|derogatory}} [[name]]s for [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "derogatory names for places", addl_bare_category_parents = {"nicknames for states"}, }, ["DEROGATORY_NAME_FOR capital"] = { link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR city"] = { link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR continent"] = { link = false, default = {"Derogatory names for continents"}, }, ["DEROGATORY_NAME_FOR country"] = { link = false, default = {"Derogatory names for countries"}, }, ["DEROGATORY_NAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" but things like "county-level city" and -- "subprovincial city" fall back to "prefecture-level city" link = false, default = {"Derogatory names for cities"}, }, ["DEROGATORY_NAME_FOR state"] = { link = false, default = {"Derogatory names for states"}, }, ["DEROGATORY_NAME_FOR town"] = { link = false, default = {"Derogatory names for cities"}, }, ---------- Ellipses ---------- ["ellipses of places!"] = { full_category_link = "{{glossary|ellipsis|ellipses}} of [[name]]s of [[place]]s", bare_category_breadcrumb = "ellipses", bare_category_parent = "places", }, ["ELLIPSIS_OF place"] = { link = false, default = {"Ellipses of places"}, }, ---------- Former long-form names ---------- ["former long-form names of countries!"] = { full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "former long-form names of places", addl_bare_category_parents = {{name = "former names of countries", sort = "long-form"}}, }, ["former long-form names of places!"] = { full_category_link = "no-longer-[[use]]d [[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s", bare_category_breadcrumb = "long-form", bare_category_parent = "former names of places", }, ["FORMER_LONG_FORM_OF country"] = { link = false, default = {"Former long-form names of countries"}, }, ["FORMER_LONG_FORM_OF place"] = { link = false, default = {"Former long-form names of places"}, }, ---------- Former names ---------- ["former names of capitals!"] = { full_category_link = "[[former]] [[name]]s of [[capital city|capital cities]] that generally still exist but under a different name", bare_category_breadcrumb = "capitals", bare_category_parent = "former names of settlements", }, ["former names of countries!"] = { full_category_link = "[[former]] [[name]]s of [[country|countries]] that generally still exist but under a different name", bare_category_breadcrumb = "quốc gia", bare_category_parent = "former names of places", }, ["former names of places!"] = { full_category_link = "[[former]] [[name]]s of [[place]]s that generally still exist but under a different name", bare_category_breadcrumb = "former names", bare_category_parent = "places", }, ["former names of political divisions!"] = { full_category_link = "[[former]] [[name]]s of [[political]] [[division]]s (states, provinces, counties, etc.) that generally still exist but under a different name", bare_category_breadcrumb = "political divisions", bare_category_parent = "former names of places", }, ["former names of polities!"] = { full_category_link = "[[former]] [[name]]s of [[polity|polities]] (e.g. [[country|countries]]) that generally still exist but under a different name", bare_category_breadcrumb = "polities", bare_category_parent = "former names of places", }, ["former names of settlements!"] = { full_category_link = "[[former]] [[name]]s of [[city|cities]], [[town]]s, [[village]]s, etc. that generally still exist but under a different name", bare_category_breadcrumb = "settlements", bare_category_parent = "former names of political divisions", }, ["FORMER_NAME_OF capital"] = { link = false, default = {"Former names of capitals"}, }, ["FORMER_NAME_OF country"] = { link = false, default = {"Former names of countries"}, }, ["FORMER_NAME_OF place"] = { link = false, default = {"Former names of places"}, }, ["FORMER_NAME_OF polity"] = { link = false, default = {"Former names of polities"}, }, ["FORMER_NAME_OF region"] = { link = false, fallback = "FORMER_NAME_OF subpolity", }, ["FORMER_NAME_OF settlement"] = { link = false, default = {"Former names of settlements"}, }, ["FORMER_NAME_OF subpolity"] = { link = false, default = {"Former names of political divisions"}, }, ---------- Former nicknames ---------- ["former nicknames for cities!"] = { full_category_link = "no-longer-used [[nickname]]s for [[city|cities]], e.g. the [[Eternal City]] for [[Kyoto]] during the {{w|Heian period}} ({{circa2|800–1100|short=yes}} {{AD}})", bare_category_breadcrumb = "cities", bare_category_parent = "former nicknames for places", addl_bare_category_parents = {"nicknames for cities"}, }, ["former nicknames for places!"] = { full_category_link = "no-longer-used [[nickname]]s for [[place]]s", bare_category_breadcrumb = "former", bare_category_parent = "nicknames for places", addl_bare_category_parents = {{name = "former names of places", sort = "nicknames"}}, }, ["FORMER_NICKNAME_FOR capital"] = { link = false, default = {"Former nicknames for cities"}, }, ["FORMER_NICKNAME_FOR city"] = { link = false, default = {"Former nicknames for cities"}, }, ["FORMER_NICKNAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" 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 = "quốc gia", 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 = "quốc gia", bare_category_parent = "long-form names of places", }, ["long-form names of places!"] = { full_category_link = "[[long]]-[[form]] (but typically [[unofficial]]) [[name]]s of [[place]]s", bare_category_breadcrumb = "long-form names", bare_category_parent = "places", }, ["LONG_FORM_OF country"] = { link = false, default = {"Long-form names of countries"}, }, ["LONG_FORM_OF place"] = { link = false, default = {"Long-form names of places"}, }, ---------- Nicknames ---------- ["nicknames for cities!"] = { full_category_link = "[[nickname]]s for [[city|cities]], e.g. the [[Big Apple]] for [[New York City]]", bare_category_breadcrumb = "cities", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"cities"}, }, ["nicknames for continents!"] = { full_category_link = "[[nickname]]s for [[continent]]s", bare_category_breadcrumb = "continents", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"continents"}, }, ["nicknames for countries!"] = { full_category_link = "[[nickname]]s for [[country|countries]]", bare_category_breadcrumb = "quốc gia", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"quốc gia"}, }, ["nicknames for places!"] = { full_category_link = "[[nickname]]s for [[place]]s", bare_category_breadcrumb = "places", bare_category_parent = "nicknames", addl_bare_category_parents = {"places"}, }, ["nicknames for states!"] = { -- For categorizing nicknames for states of e.g. the United States full_category_link = "[[nicknames]] for [[state]]s", bare_category_breadcrumb = "states", bare_category_parent = "nicknames for places", addl_bare_category_parents = {"states"}, }, ["NICKNAME_FOR capital"] = { link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR city"] = { link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR continent"] = { link = false, default = {"Nicknames for continents"}, }, ["NICKNAME_FOR country"] = { link = false, default = {"Nicknames for countries"}, }, ["NICKNAME_FOR metropolitan city"] = { -- "metropolitan city" doesn't fall back to "thành phố" 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 "thành phố" but things like "county-level city" and -- "subprovincial city" fall back to "prefecture-level city" link = false, default = {"Nicknames for cities"}, }, ["NICKNAME_FOR state"] = { link = false, default = {"Nicknames for states"}, }, ["NICKNAME_FOR town"] = { link = false, default = {"Nicknames for cities"}, }, ---------- Obsolete forms ---------- ["obsolete forms of places!"] = { full_category_link = "{{glossary|obsolete}} [[form]]s of [[name]]s of [[place]]s", bare_category_breadcrumb = "obsolete forms", bare_category_parent = "places", }, ["OBSOLETE_FORM_OF place"] = { link = false, default = {"Obsolete forms of places"}, }, ---------- Official names ---------- ["official names of countries!"] = { full_category_link = "[[official]] [[name]]s of [[country|countries]]", bare_category_breadcrumb = "quốc gia", 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 = "quốc gia", bare_category_parent = "official names of former places", }, ["official names of former places!"] = { full_category_link = "[[official]] [[name]]s of [[place]]s that no longer [[exist]]", bare_category_breadcrumb = "official names", bare_category_parent = "former places", addl_bare_category_parents = {{name = "official names of places", sort = "former"}}, }, ["official names of places!"] = { full_category_link = "[[official]] [[name]]s of [[place]]s", bare_category_breadcrumb = "official names", bare_category_parent = "places", }, ["OFFICIAL_NAME_OF country"] = { link = false, default = {"Official names of countries"}, }, ["OFFICIAL_NAME_OF FORMER country"] = { link = false, default = {"Official names of former countries"}, }, ["OFFICIAL_NAME_OF FORMER place"] = { link = false, default = {"Official names of former places"}, }, ["OFFICIAL_NAME_OF place"] = { link = false, default = {"Official names of places"}, }, ---------- Official nicknames ---------- ["official nicknames for places!"] = { full_category_link = "[[official]] [[nickname]]s for [[place]]s", bare_category_breadcrumb = "official", bare_category_parent = "nicknames for places", }, ["official nicknames for states!"] = { -- For categorizing official nicknames for states of e.g. the United States full_category_link = "[[official]] [[nicknames]] for [[state]]s", bare_category_breadcrumb = "official", bare_category_parent = "nicknames for states", addl_bare_category_parents = {"states"}, }, ["OFFICIAL_NICKNAME_FOR place"] = { link = false, default = {"Official nicknames for places"}, }, ["OFFICIAL_NICKNAME_FOR state"] = { link = false, default = {"Official nicknames for states"}, }, } export.plural_placetype_to_singular = {} for sg_placetype, spec in pairs(export.placetype_data) do if spec.plural then export.plural_placetype_to_singular[spec.plural] = sg_placetype end end return export q3w6xg62q4uwmkfhr30iguqqzdcdql9 assaborir 0 286173 2463559 2110994 2026-07-19T15:32:10Z Hiyuune 50834 2463559 wikitext text/x-wiki =={{langname|ca}}== ==={{section|etym}}=== Từ {{af|ca|a-|sabor|-ir}}. ==={{section|pron}}=== * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Marvives-assaborir.wav|a=Barcelona}} * {{rhymes|ca|i(ɾ)|s=4}} ==={{section|v}}=== {{ca-verb}} # {{label|ca|transitive}} [[nếm|Nếm]] {{gloss|thử vị của cái gì đó}}. # {{label|ca|transitive}} [[thưởng thức|Thưởng thức]] {{gloss|đồ ăn, thức uống}}. #: {{synonyms|ca|paladejar}} ===={{section|forms}}==== {{ca-conj}} ===={{section|drv}}==== * {{l|ca|assaboriment}} ==={{section|further}}=== * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} cp26ydghwnzyx3o94mxdeifn18664tf хонин 0 292150 2463733 2325411 2026-07-20T08:24:19Z Kelly zhrm 58416 2463733 wikitext text/x-wiki =={{langname|bua}}== ==={{ĐM|etym}}=== Từ {{inh|bua|xgn-pro|*konïn}}, so sánh với {{cog|mn|хонь}}, {{cog|xal|хөн}}. ==={{ĐM|n}}=== {{head|bua|Danh từ}} # [[cừu|Cừu]]. =={{langname|gld}}== ==={{ĐM|n}}=== {{head|gld|Danh từ|tr=honin}} # [[cừu|Cừu]]. =={{langname|tuw-kil}}== ==={{ĐM|noun}}=== {{head|tuw-kil|Danh từ}} # {{tuw-kil-cyrl|xɔnin}}. onpbpxr1b1nyoepas5xa0nppsd9vw3p 2463734 2463733 2026-07-20T08:24:39Z Kelly zhrm 58416 2463734 wikitext text/x-wiki =={{langname|bua}}== ==={{ĐM|etym}}=== Từ {{inh|bua|xgn-pro|*konïn}}, so sánh với {{cog|mn|хонь}}, {{cog|xal|хөн}}. ==={{ĐM|n}}=== {{head|bua|Danh từ}} # [[cừu|Cừu]]. =={{langname|tuw-kil}}== ==={{ĐM|noun}}=== {{head|tuw-kil|Danh từ}} # {{tuw-kil-cyrl|xɔnin}}. =={{langname|gld}}== ==={{ĐM|n}}=== {{head|gld|Danh từ|tr=honin}} # [[cừu|Cừu]]. d5vw7v4vvfh9jcp6a1vilv4ibcsu0v9 𞓨 0 300172 2463601 2147900 2026-07-19T16:20:27Z Hiyuune 50834 2463601 wikitext text/x-wiki {{character info}} =={{langname|unr}}== ==={{ĐM|letter}}=== {{head|unr|Chữ cái}} # Chữ ''[[en]]'' trong bảng chữ Mundari Bani. ghtvi44iiegwlcflvgittzm7g8fq7eb गेलदोतुरुय 0 300197 2463667 2147948 2026-07-19T23:17:51Z Hiyuune 50834 /* */ 2463667 wikitext text/x-wiki =={{langname|kfq}}== ==={{section|num}}=== {{head|kfq|Số từ}} # [[mười sáu|Mười sáu]]. jkocwrnvfp5l6ltixe0rjqk6lar1jrt गेलसद्दि 0 300219 2463603 2147983 2026-07-19T16:21:32Z Hiyuune 50834 2463603 wikitext text/x-wiki =={{langname|kfq}}== ==={{section|num}}=== {{head|kfq|Số từ}} # [[một|Một]] [[nghìn]]. ih72q3wj4ogrsnkrgig89bcsigcecdg ᱜᱮᱞ ᱮᱭᱟᱭ 0 300258 2463608 2148041 2026-07-19T16:22:20Z Hiyuune 50834 2463608 wikitext text/x-wiki =={{langname|sat}}== ==={{ĐM|num}}=== {{head|sat|Số từ}} # [[mười bảy|Mười bảy]]. ==={{ĐM|ref}}=== * [https://omniglot.com/language/numbers/santali.htm Santali Numbers] - Omniglot co4h4xrbix1kxuzd9f2ybj5pcn277g7 ᱰᱟᱴᱟ 0 300376 2463749 2148239 2026-07-20T09:20:47Z Hiyuune 50834 2463749 wikitext text/x-wiki =={{langname|sat}}== ==={{section|pron}}=== * {{IPA4|sat|[ɖaʈa]}} ==={{section|n}}=== {{sat-noun}} # {{label|sat|giải phẫu}} [[răng|Răng]]. ===={{section|decl}}==== {{sat-decl-noun|ᱰᱟᱴᱟ|ḍaṭa}} ==={{section|ref}}=== * {{R:sat:Campbell|124}} t8toft6nab45031tproykv17xv90tik khalun 0 300698 2463748 2148780 2026-07-20T09:18:02Z Hiyuune 50834 2463748 wikitext text/x-wiki =={{langname|sce}}== ==={{section|pron}}=== {{sce-pron}} ==={{section|adj}}=== {{sce-adj}} # [[nóng|Nóng]]. ==={{section|ref}}=== * Julie Lefort (2023). ''Dongxiang-English glossary: Dunxian kielien yinyi kielien lugveqi''. gwi9jwmvbjthtwzm4hkdgg4m2t9gw9q gwang ku 0 301484 2463602 2150353 2026-07-19T16:21:03Z Hiyuune 50834 2463602 wikitext text/x-wiki =={{langname|zns}}== ==={{ĐM|pron}}=== * {{IPA4|zns|[ɡʷàŋ kû]}} ==={{ĐM|n}}=== {{head|zns|Danh từ}} # [[gà trống|Gà trống]]. ==={{ĐM|ref}}=== * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. fy5ozpapr84vh22jokqv7ge37yj6z34 lwang 0 301656 2463750 2150683 2026-07-20T09:21:51Z Hiyuune 50834 2463750 wikitext text/x-wiki =={{langname|zns}}== ==={{section|pron}}=== * {{IPA4|zns|[lʷāŋ]}} ==={{section|n}}=== {{head|zns|Danh từ}} # [[đầm lầy|Đầm lầy]]. ==={{section|ref}}=== * Blench, Roger. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. b5c0biti8plc2t5o3z834u8vbjxv5so جدادة 0 303278 2463751 2428694 2026-07-20T09:25:52Z Hiyuune 50834 2463751 wikitext text/x-wiki =={{langname|apd}}== [[Image:Chicken portrait.jpg|thumb|{{lang|apd|جدادة}}]] ==={{section|n}}=== {{apd-noun|tr=jidāda|g=f}} # [[gà|Gà]]. ===={{section|desc}}==== * {{desc|pga|jidaada}} * {{desc|kcn|gidida}} ==={{section|ref}}=== * {{R:apd:Hillelson|53}} * {{R:apd:CLIK|306}} {{C|apd|Gia cầm|Gà}} e6hreh11o8j78ofztivsegckzeyaum3 Thể loại:Chữ cái tiếng Hausa 14 304440 2463526 2158464 2026-07-19T13:22:56Z Kelly zhrm 58416 2463526 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Tên tiếng Nhật dành cho nam 14 310645 2463656 2175933 2026-07-19T22:28:08Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463656 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Nhật dành cho nam}} [[Thể loại:Tên người tiếng Nhật]] [[Thể loại:Tên người theo ngôn ngữ]] 30b7dbo30pb8wxz49re0a8y3rbo14ch Thể loại:Tên tiếng Nhật dành cho nữ 14 314665 2463657 2262528 2026-07-19T22:28:20Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463657 wikitext text/x-wiki [[Thể loại:Tên người tiếng Nhật]] [[Thể loại:Tên người theo ngôn ngữ]] h02dfhscobyovmxj5ppwj8q7ln93d66 Thể loại:Tên người tiếng Nhật 14 314799 2463665 2328803 2026-07-19T22:29:53Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463665 wikitext text/x-wiki {| id="newest-and-oldest-pages" class="wikitable mw-collapsible" style="float: right; clear: both; margin: 0 0 .5em 1em;" ! Trang mới nhất và cũ nhất&nbsp; |- | id="recent-additions" style="font-size:0.9em;" | '''Trang mới nhất theo [[mw:Manual:Categorylinks table#cl_timestamp|cập nhật thể loại liên kết lần cuối]]:''' <dynamicpagelist>category=Tên người tiếng Nhật namespace= count=10 mode=ordered ordermethod=categoryadd order=descending</dynamicpagelist> |- | id="oldest-pages" style="font-size:0.9em;" | '''Trang cũ nhất:''' <dynamicpagelist>category=Tên người tiếng Nhật namespace= count=10 mode=ordered ordermethod=lastedit order=ascending</dynamicpagelist> |}[[Thể loại:Tên tiếng Nhật]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Nhật]] 8qslemljjql97j8cjm050os5ghoyay6 Thể loại:Tên tiếng Mông Cổ dành cho nam 14 316600 2463653 2186039 2026-07-19T22:27:32Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463653 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Mông Cổ dành cho nam}} [[Thể loại:Tên người tiếng Mông Cổ]] [[Thể loại:Tên người theo ngôn ngữ]] 9ginbmrcuf3yfgap1vql6s4j5yet644 Thể loại:Tên người tiếng Mông Cổ 14 316601 2463664 2186040 2026-07-19T22:29:41Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463664 wikitext text/x-wiki [[Thể loại:Tên tiếng Mông Cổ]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Mông Cổ]] 522jrht3omllkdzxg7galop2ze58h3z Thể loại:Tên tiếng Mông Cổ dành cho nữ 14 316614 2463654 2186054 2026-07-19T22:27:44Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463654 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Mông Cổ dành cho nữ}} [[Thể loại:Tên người tiếng Mông Cổ]] [[Thể loại:Tên người theo ngôn ngữ]] dlfh7e40vnex69y78mw8zi9l91b4fn5 Thể loại:Tên người tiếng Buryat 14 317423 2463662 2187381 2026-07-19T22:29:18Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463662 wikitext text/x-wiki [[Thể loại:Tên tiếng Buryat]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Buryat]] 6k66zqdj3nomv9pikcjwv1tvo3yvlfu Thể loại:Tên tiếng Buryat dành cho nam 14 317424 2463650 2187382 2026-07-19T22:26:57Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463650 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Buryat dành cho nam}} [[Thể loại:Tên người tiếng Buryat]] [[Thể loại:Tên người theo ngôn ngữ]] tiu0l11zm8fhrt2ponskrbtc7poqs6b Thể loại:Tên tiếng Nhật dành cho cả hai giới 14 317462 2463655 2187435 2026-07-19T22:27:56Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463655 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Nhật dành cho cả hai giới}} [[Thể loại:Tên người tiếng Nhật]] [[Thể loại:Tên người theo ngôn ngữ]] q7xbdna4hza9robtec8qf0ynkv8ikl1 Thể loại:Tên tiếng Abkhaz dành cho nam 14 317656 2463613 2187765 2026-07-19T16:27:28Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463613 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Abkhaz dành cho nam}} [[Thể loại:Tên người tiếng Abkhaz]] [[Thể loại:Tên người theo ngôn ngữ]] {{C|vi|Tên}} mw23xroouoown94zp8mdk7mm31ingsk 2463614 2463613 2026-07-19T16:28:05Z Kateru Zakuro 34522 2463614 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Abkhaz dành cho nam}} [[Thể loại:Tên người tiếng Abkhaz]] [[Thể loại:Tên người theo ngôn ngữ]] ih6p6etd5madpyxlcutf22ftjteirto Thể loại:Tên người tiếng Abkhaz 14 317752 2463659 2187902 2026-07-19T22:28:43Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463659 wikitext text/x-wiki [[Thể loại:Tên tiếng Abkhaz]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Abkhaz]] a9timju2auol2eo7ctuz8qtwxiqc7ff Thể loại:Tên tiếng Abkhaz dành cho nữ 14 317754 2463648 2187904 2026-07-19T22:26:33Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463648 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Abkhaz dành cho nam}} [[Thể loại:Tên người tiếng Abkhaz]] [[Thể loại:Tên người theo ngôn ngữ]] ih6p6etd5madpyxlcutf22ftjteirto Thể loại:Tên người tiếng Adygea 14 317767 2463660 2187929 2026-07-19T22:28:55Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463660 wikitext text/x-wiki [[Thể loại:Tên tiếng Adygea]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Adygea]] j1aoy57nrmoocvu48jsak4f9z550xr6 Thể loại:Tên người tiếng Aka-Bo 14 318098 2463661 2188487 2026-07-19T22:29:06Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463661 wikitext text/x-wiki [[Thể loại:Tên tiếng Aka-Bo]] [[Thể loại:Tên người theo ngôn ngữ|tiếng Aka-Bo]] sebtpso60pimwo9igsfod664sjk2446 Thể loại:Tên tiếng Aka-Bo dành cho nữ 14 318099 2463649 2188488 2026-07-19T22:26:45Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463649 wikitext text/x-wiki [[Thể loại:Tên người tiếng Aka-Bo]] [[Thể loại:Tên người theo ngôn ngữ]] 9zvzls24pue49z3t7po5fnyn0pv13ry Thể loại:Tên tiếng Thổ Nhĩ Kỳ dành cho cả hai giới 14 319160 2463658 2191133 2026-07-19T22:28:32Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463658 wikitext text/x-wiki [[Thể loại:Tên người tiếng Thổ Nhĩ Kỳ]] [[Thể loại:Tên người theo ngôn ngữ]] f5sp0j9q9bt53go3ahshwmt8ka10gty өйрәк 0 322778 2463742 2197427 2026-07-20T09:08:55Z Hiyuune 50834 2463742 wikitext text/x-wiki =={{langname|ba}}== {{wp|ba:}} [[Image:Anas platyrhynchos male female quadrat.jpg|thumb|Ата менән инә '''өйрәк'''.<br />'''vịt''' đực và cái.]] ==={{section|pron}}=== * {{IPA4|ba|[ʏ̞jˈræk]}} * {{hyphenation|ba|өй|рәк}} ==={{section|n}}=== {{ba-noun}} # [[vịt|Vịt]]. ===={{section|decl}}==== {{ba-ndecl-c|ә|к}} ==={{section|ref}}=== * [https://turkic.elegantlexicon.com/lxforms.php?lx=bsk Tiếng Bashkir] tại Cơ sở Dữ liệu các ngôn ngữ Turk. 77gha8j3ex6immefl6mzjqeo9hxacb4 Mô đun:category tree/topic/Names 828 324858 2463580 2463463 2026-07-19T16:01:55Z Kateru Zakuro 34522 2463580 Scribunto text/plain local labels = {} local handlers = {} labels["Tên"] = { type = "chủ đề thuộc nhóm liên quan", description = "{{{langname}}} names for a variety of things.", additional = "Given names and surnames can be found in [[:Category:Names by language]].", parents = {"Tất cả chủ đề"}, } labels["letter names"] = { type = "name", description = "{{{langname}}} terms that are the names of letters.", additional = "Ideally entries should be in a subcategory for the names of letters in a particular script.", parents = {"names", "letters, symbols, and punctuation"}, } -- Handler for "SCRIPT letter names". table.insert(handlers, function(label) local script = label:match("^(.*) letter names$") if script then local sc = require("Module:scripts").getByCanonicalName(script) if sc then local script_page local appendix = ("Phu lục:Chữ %s"):format(script) local appendix_title = mw.title.new(appendix) if appendix_title and appendix_title.exists then script_page = appendix else script_page = "w:" .. sc:getWikipediaArticle() end local link = ("[[%s|%s script]]"):format(script_page, script) return { type = "name", description = ("{{{langname}}} terms that serve as names for letters and symbols directly based on letters, " .. "such as [[ligature]]s and letters with [[diacritic]]s, of the %s."):format(link), parents = {"letter names"}, } end end end) labels["couple nicknames"] = { type = "name", description = "{{{langname}}} informal names for pairs of people, especially [[celebrity]] [[couple]]s.", additional = "For fictional relationships, see [[:Category:Ships (fandom)]].", parents = {"nicknames", "people"}, } labels["foreign personal names"] = { type = "name", description = "Transliterations, respellings or other renderings of personal names into {{{langname}}}.", umbrella = { description = "Transliterations, respellings or other renderings of personal names.", }, parents = {"names"}, } labels["named prayers"] = { type = "name", description = "=[[specific]] [[prayer]]s", parents = {"names", "prayer"}, } labels["nicknames"] = { type = "name", description = "{{{langname}}} terms that are informal names or diminutives of specific entities (people, places, etc.)", parents = {"names"}, } labels["nicknames for individuals"] = { type = "name", description = "{{{langname}}} terms that are informal names for specific individuals (e.g. [[J-Lo]] for singer {{w|Jennifer Lopez}}).", parents = {"individuals", "nicknames"}, } labels["sports nicknames"] = { type = "name", description = "{{{langname}}} informal names for people or teams involved in sports.", parents = {"nicknames", "sports"}, } labels["danh pháp phân loại"] = { type = "chủ đề thuộc nhóm tên gọi", description = "=[[danh pháp]] [[phân loại]]", parents = {"tên", "phân loại học"}, } return {LABELS = labels, HANDLERS = handlers} 4aws4earuzy85f3apx7ephdtkfmur8l 2463632 2463580 2026-07-19T17:59:31Z Kateru Zakuro 34522 2463632 Scribunto text/plain local labels = {} local handlers = {} labels["Tên gọi"] = { type = "chủ đề thuộc nhóm liên quan", description = "{{{langname}}} names for a variety of things.", additional = "Given names and surnames can be found in [[:Category:Names by language]].", parents = {"Tất cả chủ đề"}, } labels["letter names"] = { type = "name", description = "{{{langname}}} terms that are the names of letters.", additional = "Ideally entries should be in a subcategory for the names of letters in a particular script.", parents = {"names", "letters, symbols, and punctuation"}, } -- Handler for "SCRIPT letter names". table.insert(handlers, function(label) local script = label:match("^(.*) letter names$") if script then local sc = require("Module:scripts").getByCanonicalName(script) if sc then local script_page local appendix = ("Phu lục:Chữ %s"):format(script) local appendix_title = mw.title.new(appendix) if appendix_title and appendix_title.exists then script_page = appendix else script_page = "w:" .. sc:getWikipediaArticle() end local link = ("[[%s|%s script]]"):format(script_page, script) return { type = "name", description = ("{{{langname}}} terms that serve as names for letters and symbols directly based on letters, " .. "such as [[ligature]]s and letters with [[diacritic]]s, of the %s."):format(link), parents = {"letter names"}, } end end end) labels["couple nicknames"] = { type = "name", description = "{{{langname}}} informal names for pairs of people, especially [[celebrity]] [[couple]]s.", additional = "For fictional relationships, see [[:Category:Ships (fandom)]].", parents = {"nicknames", "people"}, } labels["foreign personal names"] = { type = "name", description = "Transliterations, respellings or other renderings of personal names into {{{langname}}}.", umbrella = { description = "Transliterations, respellings or other renderings of personal names.", }, parents = {"names"}, } labels["named prayers"] = { type = "name", description = "=[[specific]] [[prayer]]s", parents = {"names", "prayer"}, } labels["nicknames"] = { type = "name", description = "{{{langname}}} terms that are informal names or diminutives of specific entities (people, places, etc.)", parents = {"names"}, } labels["nicknames for individuals"] = { type = "name", description = "{{{langname}}} terms that are informal names for specific individuals (e.g. [[J-Lo]] for singer {{w|Jennifer Lopez}}).", parents = {"individuals", "nicknames"}, } labels["sports nicknames"] = { type = "name", description = "{{{langname}}} informal names for people or teams involved in sports.", parents = {"nicknames", "sports"}, } labels["danh pháp phân loại"] = { type = "chủ đề thuộc nhóm tên gọi", description = "=[[danh pháp]] [[phân loại]]", parents = {"tên", "phân loại học"}, } return {LABELS = labels, HANDLERS = handlers} g60pxksxh6ezk219biczvuqkw2s5ck1 2463639 2463632 2026-07-19T18:18:13Z Kateru Zakuro 34522 2463639 Scribunto text/plain local labels = {} local handlers = {} labels["Tên"] = { type = "chủ đề thuộc nhóm liên quan", description = "{{{langname}}} names for a variety of things.", additional = "Given names and surnames can be found in [[:Category:Names by language]].", parents = {"Tất cả chủ đề"}, } labels["letter names"] = { type = "name", description = "{{{langname}}} terms that are the names of letters.", additional = "Ideally entries should be in a subcategory for the names of letters in a particular script.", parents = {"names", "letters, symbols, and punctuation"}, } -- Handler for "SCRIPT letter names". table.insert(handlers, function(label) local script = label:match("^(.*) letter names$") if script then local sc = require("Module:scripts").getByCanonicalName(script) if sc then local script_page local appendix = ("Phu lục:Chữ %s"):format(script) local appendix_title = mw.title.new(appendix) if appendix_title and appendix_title.exists then script_page = appendix else script_page = "w:" .. sc:getWikipediaArticle() end local link = ("[[%s|%s script]]"):format(script_page, script) return { type = "name", description = ("{{{langname}}} terms that serve as names for letters and symbols directly based on letters, " .. "such as [[ligature]]s and letters with [[diacritic]]s, of the %s."):format(link), parents = {"letter names"}, } end end end) labels["couple nicknames"] = { type = "name", description = "{{{langname}}} informal names for pairs of people, especially [[celebrity]] [[couple]]s.", additional = "For fictional relationships, see [[:Category:Ships (fandom)]].", parents = {"nicknames", "people"}, } labels["foreign personal names"] = { type = "name", description = "Transliterations, respellings or other renderings of personal names into {{{langname}}}.", umbrella = { description = "Transliterations, respellings or other renderings of personal names.", }, parents = {"names"}, } labels["named prayers"] = { type = "name", description = "=[[specific]] [[prayer]]s", parents = {"names", "prayer"}, } labels["nicknames"] = { type = "name", description = "{{{langname}}} terms that are informal names or diminutives of specific entities (people, places, etc.)", parents = {"names"}, } labels["nicknames for individuals"] = { type = "name", description = "{{{langname}}} terms that are informal names for specific individuals (e.g. [[J-Lo]] for singer {{w|Jennifer Lopez}}).", parents = {"individuals", "nicknames"}, } labels["sports nicknames"] = { type = "name", description = "{{{langname}}} informal names for people or teams involved in sports.", parents = {"nicknames", "sports"}, } labels["danh pháp phân loại"] = { type = "chủ đề thuộc nhóm tên gọi", description = "=[[danh pháp]] [[phân loại]]", parents = {"tên", "phân loại học"}, } return {LABELS = labels, HANDLERS = handlers} 4aws4earuzy85f3apx7ephdtkfmur8l lɔ²¹ŋăi⁵¹kɔn⁵¹ 0 330073 2463502 2213614 2026-07-19T12:49:58Z WhoAlone 40420 2463502 wikitext text/x-wiki =={{langname|bvp}}== ==={{ĐM|noun}}=== {{head|bvp|Danh từ}} # [[ngôi sao]]. ==={{ĐM|ref}}=== * Edmondson, Jerold A. (2010). "[https://www.sil.org/system/files/reapdata/37/69/41/37694131869962083547185786582610831574/52537.pdf The Kháng language of Vietnam in comparison to Ksingmul (Xinh-mun)]" (PDF). {{C|bvp|Thiên thể}} dr21z9ikt0ry2alz1745hxkfbf42f26 ဟာခံမ 0 343144 2463509 2235909 2026-07-19T12:55:50Z WhoAlone 40420 WhoAlone đã đổi [[ဟာ ခံမ]] thành [[ဟာခံမ]] (đã tắt đổi hướng): Chữ Miến không có spacing 2235909 wikitext text/x-wiki =={{langname|pll}}== ==={{ĐM|pron}}=== * {{IPA4|pll|/hɔ khəm/}} ==={{ĐM|noun}}=== {{head|pll|Danh từ|tr=hǭ-k̔ạ̄m}} # [[vua]]. 8exf58i995v66wkfmd9rnb3elpsm7im 𑜆𑜢𑜄𑜫 0 371020 2463736 2302438 2026-07-20T08:26:56Z Hiyuune 50834 /* Tiếng Ahom */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463736 wikitext text/x-wiki =={{langname|aho}}== ==={{section|etym}} 1=== {{cardinalbox|aho|𑜷|𑜸|𑜹|𑜋𑜢𑜄𑜫|𑜀𑜧}} Từ {{inh|aho|tai-pro|*peːtᴰ||tám}}, từ {{der|aho|ltc|-}} {{ltc-l|八|[[tám]]}}. Cùng gốc với {{cog|blt|ꪵꪜꪒ}}, {{cog|nod|ᨸᩯ᩠ᨯ}}, {{cog|lo|ແປດ}}, {{cog|khb|ᦶᦔᧆᧈ}}, {{cog|shn|ပႅတ်ႇ}}, {{cog|tdd|ᥙᥦᥖᥱ}}, {{cog|th|แปด}}, {{cog|pcc|beedt}}, {{cog|za|bet}}. ===={{section|num}}==== {{head|aho|Số từ}} # [[tám|Tám]] (8). ==={{section|etym}} 2=== {{inh+|aho|tai-swe-pro|*petᴰˢ²||vịt}}, từ {{inh|aho|tai-pro|*pitᴰ||vịt}}. Cùng gốc với {{cog|th|เป็ด}}, {{cog|nod|ᨸᩮᩢ᩠ᨯ}}, {{cog|kkh|ᨸᩮ᩠ᨯ}}, {{cog|lo|ເປັດ}}, {{cog|tts|เป็ด}}, {{cog|khb|ᦵᦔᧆ}}, {{cog|blt|ꪹꪜꪸꪒ}}, {{cog|shn|ပဵတ်း}}, {{cog|tdd|ᥙᥥᥖᥱ}}, {{cog|za|bit}}, {{cog|zhn|baet}}, {{mention|zhn|byet}}, {{cog|zzj|bet}}, {{cog|pcc|bidt}}, {{cog|skb|ปิ๊ด}}. So sánh với {{cog|och|-}} {{och-l|鴄}}, {{cog|qfa-onb-pro|*ɓitᴰ¹}}. ===={{section|n}}==== {{head|aho|Danh từ}} # [[vịt|Vịt]]. ==={{section|ref}}=== *Morey, Stephen; Hosken, Martin (2012). "Revised Proposal to add the Ahom Script in the SMP of the UCS" {{cln|aho|Số đếm}} 0iga5t1elmnj21sfifi139jh90f8swf guaifjiax 0 371243 2463517 2302816 2026-07-19T13:13:38Z WhoAlone 40420 Sát nghĩa hơn 2463517 wikitext text/x-wiki =={{langname|bca}}== ==={{ĐM|etym}}=== {{bor+|bca|zh|国家|tr=guójiā}}. ==={{ĐM|noun}}=== {{head|bca|Danh từ}} # [[quốc gia]], [[nhà nước]]. #:{{ux|bca|'''Guaifjiax '''baotzanb saotsub miepcuf hox mal huffaf nox quainplib gol libyif.|'''Nhà nước''' bảo đảm quyền và lợi ích hợp pháp của dân tộc thiểu số.}} ==={{ĐM|ref}}=== * Hefright, Brook Emerson (2011). ''Language contact as bilingual contrast among Bái language users in Jiànchuān County, China.'' 66cc7xb37upms0rie501ivjiwj8fx77 ngaan 0 376223 2463695 2313395 2026-07-20T02:10:43Z InternetArchiveBot 44631 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 2463695 wikitext text/x-wiki =={{langname|blz}}== ==={{section|etym}}=== Từ {{inh|blz|poz-pro|*ŋajan}}, từ {{inh|blz|map-pro|*ŋajan}}. ==={{section|pron}}=== * {{IPA4|blz|[ŋaːn]}} ==={{section|n}}=== {{head|blz|Danh từ}} # [[tên|Tên]], [[tên gọi]]. ==={{section|ref}}=== * Robert Busenitz & Daniel Bradbury (2016). [https://web.archive.org/web/20240731184741/https://www.webonary.org/balantak?s=ngaan ''Balantak Dictionary – ngaan'']. SIL International. 6iy0jfq480h8ptok7nzk2je8fzp29v2 Thể loại:Tên tiếng Mông Cổ dành cho cả hai giới 14 378751 2463652 2318511 2026-07-19T22:27:21Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463652 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Mông Cổ dành cho cả hai giới}} [[Thể loại:Tên người tiếng Mông Cổ]] [[Thể loại:Tên người theo ngôn ngữ]] mhw9oy1frqh2xlxasqi12lhsf72tu6a Thể loại:Tên tiếng Kalmyk dành cho nam 14 378973 2463651 2319006 2026-07-19T22:27:09Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463651 wikitext text/x-wiki {{Giải thích thể loại|mục từ có tên tiếng Kalmyk dành cho nam}} [[Thể loại:Tên người tiếng Kalmyk]] [[Thể loại:Tên người theo ngôn ngữ]] pa6m8crq13vn8iawu5r5i9348g2vddh Thể loại:Tên người tiếng Kalmyk 14 378974 2463663 2319007 2026-07-19T22:29:29Z BlueShurikenNinjaBot 50371 /* top */ clean up 2463663 wikitext text/x-wiki [[Thể loại:Tên tiếng Kalmyk]] [[Thể loại:Tên người theo ngôn ngữ|Tiếng Kalmyk]] 6woe6eddartlfukh0nchpttom7xkt99 Thể loại:bdq:Tên 14 394481 2463572 2347980 2026-07-19T15:54:17Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:bdq:Tên]] thành [[Thể loại:bdq:Tên gọi]] (đã tắt đổi hướng) 2347980 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463575 2463572 2026-07-19T15:57:56Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:bdq:Tên gọi]] thành [[Thể loại:bdq:Tên]] (đã tắt đổi hướng) 2347980 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thành viên:Manhdeptraipro2114 2 394665 2463726 2348335 2026-07-20T07:12:10Z Manhdeptraipro2114 60261 2463726 wikitext text/x-wiki {{Đồng hồ kỹ thuật số và thông số Wiktionary}} '''Chào mừng bạn đến với Manhdeptraipro2114! một thành viên Wikimedia.''' {{Babel|vi-N|en-3|zh-4}} 9pz6emmjxegpx7pxvihxcd8dfx41dvu Thể loại:mkh-bhn:Tên 14 405105 2463569 2399250 2026-07-19T15:51:35Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:mkh-bhn:Tên]] thành [[Thể loại:mkh-bhn:Tên gọi]] (đã tắt đổi hướng) 2399250 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463577 2463569 2026-07-19T15:58:44Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:mkh-bhn:Tên gọi]] thành [[Thể loại:mkh-bhn:Tên]] (đã tắt đổi hướng) 2399250 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bux:Tên 14 405520 2463573 2405513 2026-07-19T15:54:45Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:bux:Tên]] thành [[Thể loại:bux:Tên gọi]] (đã tắt đổi hướng) 2405513 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463576 2463573 2026-07-19T15:58:29Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:bux:Tên gọi]] thành [[Thể loại:bux:Tên]] (đã tắt đổi hướng) 2405513 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:glb:Tên 14 407035 2463567 2449281 2026-07-19T15:50:09Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:glb:Tên]] thành [[Thể loại:glb:Tên gọi]] (đã tắt đổi hướng) 2449281 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 2463578 2463567 2026-07-19T15:58:56Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:glb:Tên gọi]] thành [[Thể loại:glb:Tên]] (đã tắt đổi hướng) 2449281 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Tên gọi tiếng Anh 14 408599 2463582 2463400 2026-07-19T16:05:39Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Tên tiếng Anh]] thành [[Thể loại:Tên gọi tiếng Anh]] (đã tắt đổi hướng) 2463400 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 𰋷儿 0 408680 2463499 2026-07-19T12:44:16Z WhoAlone 40420 Trang mới: “=={{langname|zh}}== {{zh-see|嬰兒}}” 2463499 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|嬰兒}} 8poco24h3x2lrum20p0tqjt3hgkha48 yīng'ér 0 408681 2463500 2026-07-19T12:45:57Z WhoAlone 40420 Trang mới: “=={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|嬰兒}}” 2463500 wikitext text/x-wiki =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|嬰兒}} m46qsi9t52waa54tdxddf7lady4r38j Thể loại:bvp:Thiên thể 14 408682 2463503 2026-07-19T12:50:50Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463503 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bvp:Không gian 14 408683 2463504 2026-07-19T12:51:18Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463504 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bvp:Danh sách chủ đề thuộc nhóm tập hợp 14 408684 2463505 2026-07-19T12:51:19Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463505 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bvp:Tất cả chủ đề 14 408685 2463506 2026-07-19T12:52:13Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463506 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bvp:Tự nhiên 14 408686 2463507 2026-07-19T12:52:17Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463507 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:bvp:Danh sách chủ đề thuộc nhóm liên quan 14 408687 2463508 2026-07-19T12:52:19Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463508 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ tiếng Nam Á nguyên thủy tiếng Palaung Shwe 14 408688 2463510 2026-07-19T12:56:59Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463510 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ kế thừa từ tiếng Nam Á nguyên thủy tiếng Palaung Shwe 14 408689 2463511 2026-07-19T12:57:00Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463511 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ ngữ hệ Nam Á tiếng Palaung Shwe 14 408690 2463512 2026-07-19T12:57:17Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463512 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ kế thừa tiếng Palaung Shwe 14 408691 2463513 2026-07-19T12:57:19Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463513 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ ngôn ngữ khác tiếng Palaung Shwe 14 408692 2463514 2026-07-19T12:57:37Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463514 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ nguyên tiếng Palaung Shwe 14 408693 2463515 2026-07-19T12:57:39Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463515 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Zonxhuap Ssenpmiep Gonbhupguaif 0 408694 2463520 2026-07-19T13:16:34Z WhoAlone 40420 Trang mới: “=={{langname|bca}}== ==={{ĐM|etym}}=== {{bor+|bca|zh|中华人民共和国|tr=Zhōnghuá rénmín gònghéguó}}. ==={{ĐM|pr-noun}}=== {{head|bca|Danh từ riêng}} # {{place|sed|quốc gia|cont/châu Á|t=Cộng hòa Nhân dân Trung Hoa}}. #:{{ux|bca|'''Zonxhuap Ssenpmiep Gonbhupguaif''' nox miepcuf hox jienlzex atyap nox.|Mọi dân tộc ở '''Cộng hòa Nhân dân Trung Hoa''' đều bình đẳng.}} ==={{ĐM|ref}}=== * Hefright, Brook Emerson (2011). ''Langua…” 2463520 wikitext text/x-wiki =={{langname|bca}}== ==={{ĐM|etym}}=== {{bor+|bca|zh|中华人民共和国|tr=Zhōnghuá rénmín gònghéguó}}. ==={{ĐM|pr-noun}}=== {{head|bca|Danh từ riêng}} # {{place|sed|quốc gia|cont/châu Á|t=Cộng hòa Nhân dân Trung Hoa}}. #:{{ux|bca|'''Zonxhuap Ssenpmiep Gonbhupguaif''' nox miepcuf hox jienlzex atyap nox.|Mọi dân tộc ở '''Cộng hòa Nhân dân Trung Hoa''' đều bình đẳng.}} ==={{ĐM|ref}}=== * Hefright, Brook Emerson (2011). ''Language contact as bilingual contrast among Bái language users in Jiànchuān County, China.'' fxa4c769gl24kxn2kfmn2ktrb46ccv4 ᐊᓈᓇ 0 408695 2463521 2026-07-19T13:16:42Z Kelly zhrm 58416 Trang mới: “=={{langname|iu}}== ==={{ĐM|n}}=== {{iu-noun|c|anaana}} # [[mẹ|Mẹ]]. {{C|iu|Gia đình}}” 2463521 wikitext text/x-wiki =={{langname|iu}}== ==={{ĐM|n}}=== {{iu-noun|c|anaana}} # [[mẹ|Mẹ]]. {{C|iu|Gia đình}} j1yzx3yk1wbbv3donaz4hewvga4h17r Thể loại:Danh từ riêng tiếng Hausa 14 408696 2463525 2026-07-19T13:22:03Z Kelly zhrm 58416 Trang mới: “{{auto cat}}” 2463525 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có cách phát âm IPA tiếng Hausa 14 408697 2463527 2026-07-19T13:23:15Z Kelly zhrm 58416 Trang mới: “{{auto cat}}” 2463527 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 冰激凌 0 408698 2463528 2026-07-19T13:52:31Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-forms|type=12|delink=2|2=''ngữ âm''}} ==={{section|pron}}=== {{zh-pron |m=bīngjīlíng,tl2=y |ma=LL-Q9192 (cmn)-CanonNi-冰激凌.wav |c=bing1 gik1 ling4 |ca=LL-Q9186-Luilui6666-冰激凌.wav |j=bing1 jieh4-5 ling1 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[kem lạnh|Kem lạnh]]. ===={{section|syn}}==== {{zh-dial|冰淇淋}}” 2463528 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|type=12|delink=2|2=''ngữ âm''}} ==={{section|pron}}=== {{zh-pron |m=bīngjīlíng,tl2=y |ma=LL-Q9192 (cmn)-CanonNi-冰激凌.wav |c=bing1 gik1 ling4 |ca=LL-Q9186-Luilui6666-冰激凌.wav |j=bing1 jieh4-5 ling1 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[kem lạnh|Kem lạnh]]. ===={{section|syn}}==== {{zh-dial|冰淇淋}} 424spm4vrhjn4ubylwdukbp5mkye3n1 2463643 2463528 2026-07-19T19:15:49Z TheHighFighter2 42988 /* Danh từ */ 2463643 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|type=12|delink=2|2=''ngữ âm''}} ==={{section|pron}}=== {{zh-pron |m=bīngjīlíng,tl2=y |ma=LL-Q9192 (cmn)-CanonNi-冰激凌.wav |c=bing1 gik1 ling4 |ca=LL-Q9186-Luilui6666-冰激凌.wav |j=bing1 jieh4-5 ling1 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[kem|Kem]] [[lạnh]]. ===={{section|syn}}==== {{zh-dial|冰淇淋}} 8w463d7acu3oyx9kcata5yvfclgcwrw реформувати 0 408699 2463529 2026-07-19T13:57:59Z Hiyuune 50834 /* */ 2463529 wikitext text/x-wiki =={{langname|uk}}== ==={{section|etym}}=== Từ {{af|uk|рефо́рма|-ува́ти}}. So sánh với {{cog|ru|реформи́ровать}}, {{cog|be|рэфармава́ць}}, {{cog|pl|reformować}}. ==={{section|pron}}=== * {{uk-IPA|реформува́ти}} * {{audio|uk|Uk-реформувати.ogg}} ==={{section|v}}=== {{uk-verb|реформува́ти|both}} # {{lb|uk|transitive}} [[cải cách|Cải cách]]. ===={{section|forms}}==== {{uk-conj|реформува́ти<2a.both.tr.ppp>}} ===={{section|drv}}==== {{col2|uk |реформува́ння<g:n> |реформува́тися<g:impf> }} ==={{section|further}}=== * {{R:uk:SUM-11}} * {{R:uk:R2U}} * {{R:uk:E2U}} * {{R:uk:Horokh}} * {{R:uk:Kyiv}} * {{R:uk:Slovnyk}} pk9c83py303kr0jooylamb1kuhuj8m3 реформувать 0 408700 2463530 2026-07-19T14:38:30Z Hiyuune 50834 + uk 2463530 wikitext text/x-wiki =={{langname|uk}}== ==={{section|pron}}=== * {{uk-IPA|реформува́ть}} ==={{section|v}}=== {{head|uk|Biến thể hình thái động từ|head=реформува́ть}} # {{infl of|uk|реформува́ть||inf}} cbudixtw1c29t39vh8uya20uksd8hzu 2463531 2463530 2026-07-19T14:39:24Z Hiyuune 50834 /* Tiếng Ukraina */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463531 wikitext text/x-wiki =={{langname|uk}}== ==={{section|pron}}=== * {{uk-IPA|реформува́ть}} ==={{section|v}}=== {{head|uk|Biến thể hình thái động từ|head=реформува́ть}} # {{infl of|uk|реформува́ти||inf}} rrwstawa06eim4c1dnxx3miszkubwwg Kho từ vựng:提綱 0 408701 2463536 2026-07-19T14:56:49Z Hiyuune 50834 Trang mới: “{{ws header}} =={{langname|zh}}== ==={{section|noun}}=== ===={{ws sense|zh|bản thảo; bản tóm tắt; ý chính; nội dung chính}}==== ====={{section|syn}}===== {{col3|zh|提綱|摘要|概要|提要|撮要<qq:lỗi thời>|概況|綱要|擇要|概略|梗概|綱領|總綱|概貌|鳥瞰|總結|概述|概括|小結|大綱|匯總|大要|事由<qq:tài liệu chính thức>|概說<qq:thường dùng với tiêu đề sách và chương>|要略<qq:thường dùng v…” 2463536 wikitext text/x-wiki {{ws header}} =={{langname|zh}}== ==={{section|noun}}=== ===={{ws sense|zh|bản thảo; bản tóm tắt; ý chính; nội dung chính}}==== ====={{section|syn}}===== {{col3|zh|提綱|摘要|概要|提要|撮要<qq:lỗi thời>|概況|綱要|擇要|概略|梗概|綱領|總綱|概貌|鳥瞰|總結|概述|概括|小結|大綱|匯總|大要|事由<qq:tài liệu chính thức>|概說<qq:thường dùng với tiêu đề sách và chương>|要略<qq:thường dùng với tiêu đề sách và chương>|輪廓|節略}} [[en:Thesaurus:提綱]] 4tiq8u44hupn8yoit1gutx2is2bfu0s Bản mẫu:zho-short 10 408702 2463538 2026-07-19T15:01:56Z Hiyuune 50834 Hiyuune đã đổi [[Bản mẫu:zho-short]] thành [[Bản mẫu:zh-short]] qua đổi hướng 2463538 wikitext text/x-wiki #đổi [[Bản mẫu:zh-short]] rtq8ul4zf9uk80pim5pw3iplemhfwu3 Bản mẫu:zh-abbrev 10 408703 2463539 2026-07-19T15:02:56Z Hiyuune 50834 Đổi hướng đến [[Bản mẫu:zh-short]] 2463539 wikitext text/x-wiki #redirect [[Template:zh-short]] smrp850fth95pbzulhg8rz4ulzai2ye huàgōng 0 408704 2463541 2026-07-19T15:04:01Z Hiyuune 50834 + 2463541 wikitext text/x-wiki {{also|huágōng|huàgòng}} =={{langname|cmn}}== ==={{section|romanization}}=== {{cmn-pinyin}} # {{cmn-pinyin of|化工}} # {{cmn-pinyin of|畫工}} # {{cmn-pinyin of|畫功}} # {{cmn-pinyin of|畫供}} tm041t1e8t0fukqdmiiqru4qkngvnor 木魚 0 408705 2463542 2026-07-19T15:07:54Z Hiyuune 50834 Trang mới: “{{also|木鱼}} =={{langname|zh}}== {{zh-forms|s=木鱼}} {{wp|zh:,yue:木魚 (樂器),vi:cá sấy khô}} [[File:Modern_Templeblocks.jpg|thumb|{{lang|zh|木魚}} (1)]] ==={{section|pron}}=== {{zh-pron |m=mùyú,er=y |c=muk6 jyu4-2 |c-t=muuk5 ngui3 |h=pfs=muk-ǹg;ct=mu2 nge2 |mn=xm,zz,kh,yl,tc:bo̍k-hî/qz:bo̍k-hîr/twt:bo̍k-hû/hc:bo̍k-gîr |w=sh:8moq yu |cat=n,pn }} ==={{section|n}}=== {{head|zh|Danh từ}} # Cái [[mõ]] của nhà sư dùng để [[tụng kinh]]…” 2463542 wikitext text/x-wiki {{also|木鱼}} =={{langname|zh}}== {{zh-forms|s=木鱼}} {{wp|zh:,yue:木魚 (樂器),vi:cá sấy khô}} [[File:Modern_Templeblocks.jpg|thumb|{{lang|zh|木魚}} (1)]] ==={{section|pron}}=== {{zh-pron |m=mùyú,er=y |c=muk6 jyu4-2 |c-t=muuk5 ngui3 |h=pfs=muk-ǹg;ct=mu2 nge2 |mn=xm,zz,kh,yl,tc:bo̍k-hî/qz:bo̍k-hîr/twt:bo̍k-hû/hc:bo̍k-gîr |w=sh:8moq yu |cat=n,pn }} ==={{section|n}}=== {{head|zh|Danh từ}} # Cái [[mõ]] của nhà sư dùng để [[tụng kinh]]; [[mộc ngư]]. # {{zh-alt-name|柴魚|cá sấy khô}} # {{zh-short|木魚歌}} ===={{section|syn}}==== {{syn-saurus|zh|木魚}} {{zh-dial}} ===={{section|drv}}==== {{col3|zh|木魚書|木魚歌|木魚坪}} ===={{section|desc}}==== {{CJKV||も​くぎょ|목어|mộc ngư}} ''Khác'': * {{desc|en|wooden fish|cal=1}} ==={{section|pr-noun}}=== {{head|zh|Danh từ riêng}} # {{zh-div|鎮}} {{place|zh|t=Muyu|thị trấn|forestry district/Shennongjia|p/Hồ Bắc|c/Trung Quốc}} # {{zh-div|村}} {{place|zh|t=Muyu|làng|town/Muyu|forestry district/Shennongjia|p/Hồ Bắc|c/Trung Quốc}} ==={{section|ref}}=== * {{R:zh:cbgycdxdb|32936}} * {{R:hak:Zhou 2023|||414}} {{C|zh|Phật giáo|Nhạc cụ}} 58xutkx5o1hg8gckyxk5595qo5r1src 贊成 0 408706 2463544 2026-07-19T15:11:01Z Hiyuune 50834 Trang mới: “{{also|賛成}} =={{langname|zh}}== {{zh-forms|s=赞成|t2=讚成}} ==={{section|pron}}=== {{zh-pron |m=zànchéng |ma=Zh-zànchéng.ogg |m-s=zan4cen2 |c=zaan3 sing4 |c-t=zan1 sen3 |h=pfs=chan-sṳ̀n |mn=chàn-sêng |mn-t=zang3 sêng5 |cat=v }} ==={{section|v}}=== {{head|zh|Động từ}} # [[tán thành|Tán thành]], [[đồng ý]].” 2463544 wikitext text/x-wiki {{also|賛成}} =={{langname|zh}}== {{zh-forms|s=赞成|t2=讚成}} ==={{section|pron}}=== {{zh-pron |m=zànchéng |ma=Zh-zànchéng.ogg |m-s=zan4cen2 |c=zaan3 sing4 |c-t=zan1 sen3 |h=pfs=chan-sṳ̀n |mn=chàn-sêng |mn-t=zang3 sêng5 |cat=v }} ==={{section|v}}=== {{head|zh|Động từ}} # [[tán thành|Tán thành]], [[đồng ý]]. hl7ikev14lswao4mopylszspa3lwmtp 讚成 0 408707 2463546 2026-07-19T15:11:48Z Hiyuune 50834 + zh 2463546 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|贊成}} q5llq4yv38qjyyig61u0hpt4mfcipsl zaan3 0 408708 2463547 2026-07-19T15:12:33Z Hiyuune 50834 + yue 2463547 wikitext text/x-wiki =={{langname|yue}}== ==={{section|pron}}=== * {{IPA4|yue|/tsaːn˧/}} ==={{section|rom}}=== {{yue-jyut}} # {{yue-jyutping of|囋}} rzswmirlwyp4uhtol98n36zk4556jta 𰉄 0 408709 2463548 2026-07-19T15:13:19Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=30|rad=口|as=16|sn=19|four=|canj=|ids=⿰口赞}} ===={{section|ref}}==== {{Han ref|uh=30244}} {{-}} =={{langname|zh}}== {{zh-see|囋}}” 2463548 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=30|rad=口|as=16|sn=19|four=|canj=|ids=⿰口赞}} ===={{section|ref}}==== {{Han ref|uh=30244}} {{-}} =={{langname|zh}}== {{zh-see|囋}} 59olhzwhre6l96xgjqpedvy922gztmd ᩉᩫ᩠ᨠ 0 408710 2463550 2026-07-19T15:18:46Z Hiyuune 50834 Trang mới: “=={{langname|nod}}== ==={{section|alt}}=== * {{alter|nod|หก}} ==={{section|etym}}=== {{number box|nod}} Từ {{inh|nod|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{inh|nod|tai-pro|*krokᴰ||sáu}}, từ {{der|nod|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|blt|ꪶꪬꪀ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|aho|𑜍𑜤𑜀𑜫}}, {{cog|pcc|ro…” 2463550 wikitext text/x-wiki =={{langname|nod}}== ==={{section|alt}}=== * {{alter|nod|หก}} ==={{section|etym}}=== {{number box|nod}} Từ {{inh|nod|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{inh|nod|tai-pro|*krokᴰ||sáu}}, từ {{der|nod|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|blt|ꪶꪬꪀ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|aho|𑜍𑜤𑜀𑜫}}, {{cog|pcc|rogt}}, {{cog|za|roek}} hoặc {{mention|za|loeg}}, {{cog|zhn|choak}}. ==={{section|num}}=== {{head|nod|Số từ}} # {{cln|nod|Số đếm}} [[sáu|Sáu]]<ref>{{R:nod:MFL|769 [๗๖๙]}}</ref> (chữ số thập phân chữ Lanna: {{l|nod|᪆}}, {{l|mul|᪖}}). ==={{section|ref}}=== <references/> sm76lvakg45zf6xrji1ceipr2j08se6 𑜍𑜤𑜀𑜫 0 408711 2463551 2026-07-19T15:20:28Z Hiyuune 50834 Trang mới: “=={{langname|aho}}== {{cardinalbox|aho|𑜵|𑜶|𑜷|𑜑𑜡|𑜋𑜢𑜄𑜫}} ==={{section|etym}}=== Từ {{inh|aho|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{inh|aho|tai-pro|*krokᴰ||sáu}}, từ {{der|aho|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|blt|ꪶꪬꪀ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|th|หก}}, {{cog|pcc|rogt}}, {{cog|za|…” 2463551 wikitext text/x-wiki =={{langname|aho}}== {{cardinalbox|aho|𑜵|𑜶|𑜷|𑜑𑜡|𑜋𑜢𑜄𑜫}} ==={{section|etym}}=== Từ {{inh|aho|tai-swe-pro|*xrokᴰ¹ˢ||sáu}}, từ {{inh|aho|tai-pro|*krokᴰ||sáu}}, từ {{der|aho|och|-}} {{och-l|六|sáu}}.<ref>{{R:ZH-PSWT}}</ref> Cùng gốc với {{cog|nod|ᩉᩫ᩠ᨠ}}, {{cog|lo|ຫົກ}}, {{cog|khb|ᦷᦠᧅ}}, {{cog|blt|ꪶꪬꪀ}}, {{cog|shn|ႁူၵ်း}}, {{cog|tdd|ᥞᥨᥐᥱ}}, {{cog|th|หก}}, {{cog|pcc|rogt}}, {{cog|za|roek}} hoặc {{mention|za|loeg}}, {{cog|zhn|choak}}. ==={{section|num}}=== {{head|aho|Số từ}} # [[sáu|Sáu]]. ==={{section|ref}}=== <references/> *Morey, Stephen; Hosken, Martin (2012). "Revised Proposal to add the Ahom Script in the SMP of the UCS" 8k5o0jf5hsxk3kgc3yekrzcgvxw3ax1 шәкы 0 408712 2463555 2026-07-19T15:27:51Z Hiyuune 50834 Trang mới: “=={{langname|ab}}== ==={{section|etym}}=== Từ {{inh|ab|cau-abz-pro|*šʷǝ́|t=trăm}}. ==={{section|num}}=== {{head|ab|Số từ}} # [[trăm|Trăm]]. {{cln|ab|Số đếm}}” 2463555 wikitext text/x-wiki =={{langname|ab}}== ==={{section|etym}}=== Từ {{inh|ab|cau-abz-pro|*šʷǝ́|t=trăm}}. ==={{section|num}}=== {{head|ab|Số từ}} # [[trăm|Trăm]]. {{cln|ab|Số đếm}} 2j13k3pv2x8y7xby531pqvs6btdht2x Từ tái tạo:Tiếng Abkhaz-Abaza nguyên thủy/šʷǝ́ 0 408713 2463556 2026-07-19T15:29:22Z Hiyuune 50834 Trang mới: “{{reconstructed}} ==Proto-Abkhaz-Abaza== ==={{section|etym}}=== Từ {{inh|cau-abz-pro|cau-nwc-pro|*š́ʷV|t=trăm}}. Cùng gốc với {{cog|uby|šʷa|t=hundred}}. ==={{section|pron}}=== * {{IPA4|cau-abz-pro|/ˈʂʷə/}} ==={{section|num}}=== {{head|cau-abz-pro|Số từ|head=*šʷǝ́}} # [[trăm|Trăm]]. ===={{section|desc}}==== * {{desc|abq|швкӏы|alt=швкӏы́}} * {{desc|ab|шәкы́}} [[en:Reconstruction:Proto-Abkhaz-Abaza/šʷǝ́]]” 2463556 wikitext text/x-wiki {{reconstructed}} ==Proto-Abkhaz-Abaza== ==={{section|etym}}=== Từ {{inh|cau-abz-pro|cau-nwc-pro|*š́ʷV|t=trăm}}. Cùng gốc với {{cog|uby|šʷa|t=hundred}}. ==={{section|pron}}=== * {{IPA4|cau-abz-pro|/ˈʂʷə/}} ==={{section|num}}=== {{head|cau-abz-pro|Số từ|head=*šʷǝ́}} # [[trăm|Trăm]]. ===={{section|desc}}==== * {{desc|abq|швкӏы|alt=швкӏы́}} * {{desc|ab|шәкы́}} [[en:Reconstruction:Proto-Abkhaz-Abaza/šʷǝ́]] tadq3hfb0z6m1gik9kem6g7ppnbn3xr 2463557 2463556 2026-07-19T15:29:45Z Hiyuune 50834 2463557 wikitext text/x-wiki {{reconstructed}} =={{langname|cau-abz-pro}}== ==={{section|etym}}=== Từ {{inh|cau-abz-pro|cau-nwc-pro|*š́ʷV|t=trăm}}. Cùng gốc với {{cog|uby|šʷa|t=trăm}}. ==={{section|pron}}=== * {{IPA4|cau-abz-pro|/ˈʂʷə/}} ==={{section|num}}=== {{head|cau-abz-pro|Số từ|head=*šʷǝ́}} # [[trăm|Trăm]]. ===={{section|desc}}==== * {{desc|abq|швкӏы|alt=швкӏы́}} * {{desc|ab|шәкы́}} [[en:Reconstruction:Proto-Abkhaz-Abaza/šʷǝ́]] cjaxv5raltn2hp82zedaucaevv661xy ꪙꪳꪉꫀ 0 408716 2463592 2026-07-19T16:16:22Z Hiyuune 50834 Trang mới: “=={{langname|twh}}== {{cardinalbox|twh|0|1|2||ꪎꪮꪉ|ord=}} ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*nɯːŋᴮ}}. ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # [[một|Một]].” 2463592 wikitext text/x-wiki =={{langname|twh}}== {{cardinalbox|twh|0|1|2||ꪎꪮꪉ|ord=}} ==={{section|etym}}=== Từ {{inh|twh|tai-pro|*nɯːŋᴮ}}. ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # [[một|Một]]. lkfqui4cgq5j31dxjy9xd3iubimtv3q 2463626 2463592 2026-07-19T17:31:15Z Higashizakura 36666 /* Tiếng Thái Trắng */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463626 wikitext text/x-wiki =={{langname|twh}}== ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # {{altform|twh|ꪙꪳꪉꫀ}} n286n5th5zy18t71hkvfry0qnr5wedm 2463627 2463626 2026-07-19T17:31:24Z Higashizakura 36666 /* Số từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463627 wikitext text/x-wiki =={{langname|twh}}== ==={{section|num}}=== {{head|twh|Số từ|tr=nưng}} # {{altform|twh|ꪙꪳ꪿ꪉ}} bgrtv6rcr3dqlw3l2hq1akdhbaxwl3y Từ tái tạo:Tiếng Thái nguyên thủy/nɯːŋᴮ 0 408717 2463597 2026-07-19T16:18:09Z Hiyuune 50834 Trang mới: “{{reconstruction}} =={{langname|tai-pro}}== ==={{section|num}}=== {{head|tai-pro|Số từ|head=*nɯːŋᴮ}} # [[một|Một]]. ===={{section|desc}}==== *Nhóm ngôn ngữ Thái Bắc: **{{desc|tyj|nừng}} **{{desc|zzj|nwngq}} *{{desc|tai-swe-pro|*nɯŋᴮ}} **{{desc|th|หนึ่ง}} **{{desc|nod|ᨶᩧ᩠᩵ᨦ}} **{{desc|lo|ໜຶ່ງ}} **{{desc|khb|ᦓᦹᧂᧈ}} **{{desc|blt|ꪙꪳ꪿ꪉ}} **{{desc|twh|ꪙꪳ꪿ꪉ}} **{{desc|shn|ၼိုင်ႈ}} **{{d…” 2463597 wikitext text/x-wiki {{reconstruction}} =={{langname|tai-pro}}== ==={{section|num}}=== {{head|tai-pro|Số từ|head=*nɯːŋᴮ}} # [[một|Một]]. ===={{section|desc}}==== *Nhóm ngôn ngữ Thái Bắc: **{{desc|tyj|nừng}} **{{desc|zzj|nwngq}} *{{desc|tai-swe-pro|*nɯŋᴮ}} **{{desc|th|หนึ่ง}} **{{desc|nod|ᨶᩧ᩠᩵ᨦ}} **{{desc|lo|ໜຶ່ງ}} **{{desc|khb|ᦓᦹᧂᧈ}} **{{desc|blt|ꪙꪳ꪿ꪉ}} **{{desc|twh|ꪙꪳ꪿ꪉ}} **{{desc|shn|ၼိုင်ႈ}} **{{desc|tjl|လိူင်}} **{{desc|aio|လိုင်}} **{{desc|tdd|ᥘᥫᥒ}} **{{desc|aho|𑜎𑜢𑜤𑜂𑜫}} [[en:Reconstruction:Proto-Tai/nɯːŋᴮ]] flv4twx0w0k9dinaxjpadetqedu5oh7 Thể loại:Tên gọi theo ngôn ngữ 14 408718 2463598 2026-07-19T16:18:53Z Kateru Zakuro 34522 Trang mới: “{{auto cat}}” 2463598 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ᥘᥫᥒ 0 408719 2463599 2026-07-19T16:19:15Z Hiyuune 50834 Trang mới: “=={{langname|tdd}}== ==={{section|etym}}=== Từ {{inh|tdd|tai-pro|*nɯːŋᴮ}}. Cùng gốc với {{cog|th|หนึ่ง}}, {{cog|nod|ᨶᩧ᩠᩵ᨦ}}, {{cog|lo|ໜຶ່ງ}} hoặc {{mention|lo|ນຶ່ງ}}, {{cog|khb|ᦓᦹᧂᧈ}}, {{cog|shn|ၼိုင်ႈ}}, {{cog|aio|လိုင်}}, {{cog|aho|𑜎𑜢𑜤𑜂𑜫}}, {{cog|zzj|nwngq}}. ==={{section|num}}=== {{tdd-num}} # [[một|Một]]. ===={{ĐM|see}}==== * {{l|tdd|ᥟᥥᥖᥱ|t=một}}” 2463599 wikitext text/x-wiki =={{langname|tdd}}== ==={{section|etym}}=== Từ {{inh|tdd|tai-pro|*nɯːŋᴮ}}. Cùng gốc với {{cog|th|หนึ่ง}}, {{cog|nod|ᨶᩧ᩠᩵ᨦ}}, {{cog|lo|ໜຶ່ງ}} hoặc {{mention|lo|ນຶ່ງ}}, {{cog|khb|ᦓᦹᧂᧈ}}, {{cog|shn|ၼိုင်ႈ}}, {{cog|aio|လိုင်}}, {{cog|aho|𑜎𑜢𑜤𑜂𑜫}}, {{cog|zzj|nwngq}}. ==={{section|num}}=== {{tdd-num}} # [[một|Một]]. ===={{ĐM|see}}==== * {{l|tdd|ᥟᥥᥖᥱ|t=một}} mtm7f9axzeekilyxh0q5lyb2wrm69a5 直升機 0 408721 2463668 2026-07-20T01:31:01Z Hiyuune 50834 Trang mới: “{{also|直升机|直昇機}} =={{langname|zh}}== {{zh-forms|s=直升机|t2=直昇機|type=21}} {{wp|zh:,yue:}} ==={{section|pron}}=== {{zh-pron |m=zhíshēngjī |c=zik6 sing1 gei1 |c-t=zet5 sen1 gi1 |h=pfs=chhṳ̍t-sṳ̂n-kî;hrs=h:chidˋ shinˋ giˋ;gd=ced6 sen1 gi1 |mn=tw,xm:ti̍t-seng-ki |w=sh:8zeq sen ci |cat=n,c:a }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[máy bay|Máy bay]] [[trực thăng]] {{defdate|từ năm 1930}} {{zh-mw|m,c:架}} ===={{section|syn…” 2463668 wikitext text/x-wiki {{also|直升机|直昇機}} =={{langname|zh}}== {{zh-forms|s=直升机|t2=直昇機|type=21}} {{wp|zh:,yue:}} ==={{section|pron}}=== {{zh-pron |m=zhíshēngjī |c=zik6 sing1 gei1 |c-t=zet5 sen1 gi1 |h=pfs=chhṳ̍t-sṳ̂n-kî;hrs=h:chidˋ shinˋ giˋ;gd=ced6 sen1 gi1 |mn=tw,xm:ti̍t-seng-ki |w=sh:8zeq sen ci |cat=n,c:a }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[máy bay|Máy bay]] [[trực thăng]] {{defdate|từ năm 1930}} {{zh-mw|m,c:架}} ===={{section|syn}}==== {{zh-dial}} ===={{section|drv}}==== {{col3|zh|直升機父母|直升機家長}} ===={{section|desc}}==== {{CJKV|||k=直昇機|직승기}} h4h0fw0v4z684ixa5m90xoz5y5978me 直昇機 0 408722 2463670 2026-07-20T01:31:38Z Hiyuune 50834 Trang mới: “{{also|直升机|直升機}} =={{langname|zh}}== {{zh-see|直升機|v}}” 2463670 wikitext text/x-wiki {{also|直升机|直升機}} =={{langname|zh}}== {{zh-see|直升機|v}} 4nmxsw0tgtcmv8nxasroiez6lum6826 Mô đun:zh/data/dial-syn/直升機 828 408723 2463671 2026-07-20T01:32:32Z Hiyuune 50834 Trang mới: “local export = {} export.list = { ["title"] = "", ["meaning"] = "máy bay trực thăng", ["note"] = "", ["Classical"] = { "" }, ["Formal"] = { "直升機" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "" }, ["Beijing-PG"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "直升…” 2463671 Scribunto text/plain local export = {} export.list = { ["title"] = "", ["meaning"] = "máy bay trực thăng", ["note"] = "", ["Classical"] = { "" }, ["Formal"] = { "直升機" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "" }, ["Beijing-PG"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "直升機" }, ["Tianjin-WQ"] = { "" }, ["Langfang"] = { "" }, ["Chengde"] = { "" }, ["Ulan Hot"] = { "" }, ["Tongliao"] = { "" }, ["Chifeng"] = { "" }, ["Hailar"] = { "" }, ["Heihe"] = { "" }, ["Nenjiang"] = { "" }, ["Mohe"] = { "" }, ["Qiqihar"] = { "" }, ["Tailai"] = { "" }, ["Jixian-HLJ"] = { "" }, ["Lanxi-M"] = { "" }, ["Boli"] = { "" }, ["Jiayin"] = { "" }, ["Muling"] = { "" }, ["Dongning"] = { "" }, ["Ning'an"] = { "" }, ["Linkou"] = { "" }, ["Zhaozhou"] = { "" }, ["Zhaodong"] = { "" }, ["Jixi-M"] = { "" }, ["Mishan"] = { "" }, ["Harbin"] = { "" }, ["Shangzhi"] = { "" }, ["Yingchengzi"] = { "" }, ["Jiamusi"] = { "" }, ["Tongjiang-M"] = { "" }, ["Baicheng"] = { "" }, ["Da'an"] = { "" }, ["Songyuan"] = { "" }, ["Changchun"] = { "" }, ["Yushu"] = { "" }, ["Jilin"] = { "" }, ["Siping"] = { "" }, ["Liaoyuan"] = { "" }, ["Dunhua"] = { "" }, ["Hunchun"] = { "" }, ["Baishan"] = { "" }, ["Tonghua"] = { "" }, ["Shenyang"] = { "" }, ["Anshan"] = { "" }, ["Tieling"] = { "" }, ["Jinzhou"] = { "" }, ["Jingzhou-SS"] = { "" }, ["Malaysia-M"] = { "" }, ["Singapore-M"] = { "直升機" }, ["Taz"] = { "" }, ["Tianjin"] = { "" }, ["Tianjin-JZ"] = { "" }, ["Tianjin-BD"] = { "" }, ["Tianjin-NH"] = { "" }, ["Tianjin-HG"] = { "" }, ["Tianjin-TG"] = { "" }, ["Tianjin-DG"] = { "" }, ["Tianjin-JN"] = { "" }, ["Tianjin-DL"] = { "" }, ["Tianjin-JH"] = { "" }, ["Tianjin-XQ"] = { "" }, ["Tianjin-BC"] = { "" }, ["Tangshan"] = { "" }, ["Qinhuangdao"] = { "" }, ["Cangzhou"] = { "" }, ["Xianxian"] = { "" }, ["Xianxian-XY"] = { "" }, ["Baoding"] = { "" }, ["Dingxing"] = { "" }, ["Xiong'an"] = { "" }, ["Shijiazhuang"] = { "" }, ["Xingtai"] = { "" }, ["Hengshui"] = { "" }, ["Lijin"] = { "" }, ["Binzhou"] = { "" }, ["Wudi"] = { "" }, ["Weicheng"] = { "" }, ["Fangzi"] = { "" }, ["Changle-WF"] = { "" }, ["Shouguang"] = { "" }, ["Rizhao"] = { "" }, ["Wulian"] = { "" }, ["Jinan"] = { "" }, ["Zhangqiu"] = { "" }, ["Liaocheng"] = { "" }, ["Dezhou"] = { "" }, ["Tai'an"] = { "" }, ["Xintai"] = { "" }, ["Zibo"] = { "" }, ["Zichuan"] = { "" }, ["Boshan"] = { "" }, ["Yinan"] = { "" }, ["Dalian"] = { "" }, ["Dandong"] = { "" }, ["Yantai"] = { "" }, ["Muping"] = { "" }, ["Laizhou"] = { "" }, ["Weihai"] = { "" }, ["Rongcheng"] = { "" }, ["Qingdao"] = { "" }, ["Chengyang"] = { "" }, ["Jimo"] = { "" }, ["Laixi"] = { "" }, ["Pingdu"] = { "" }, ["Jiaozhou"] = { "" }, ["Jiaonan"] = { "" }, ["Hanting"] = { "" }, ["Changyi"] = { "" }, ["Gaomi"] = { "" }, ["Zhucheng"] = { "" }, ["Anqiu"] = { "" }, ["Linqu"] = { "" }, ["Qingzhou"] = { "" }, ["Yishui"] = { "" }, ["Hulin-XL"] = { "" }, ["Linjiang"] = { "" }, ["Ji'an-M"] = { "" }, ["Luoyang"] = { "" }, ["Luoning"] = { "" }, ["Sanmenxia"] = { "" }, ["Lingbao"] = { "" }, ["Luohe"] = { "" }, ["Zhumadian"] = { "" }, ["Biyang"] = { "" }, ["Zhoukou"] = { "" }, ["Dancheng"] = { "" }, ["Xuchang"] = { "" }, ["Changge"] = { "" }, ["Pingdingshan"] = { "" }, ["Lushan-M"] = { "" }, ["Nanyang"] = { "" }, ["Xixia"] = { "" }, ["Dengzhou"] = { "" }, ["Zaozhuang"] = { "" }, ["Ningyang"] = { "" }, ["Jining-M"] = { "" }, ["Linyi"] = { "" }, ["Heze"] = { "" }, ["Daming"] = { "" }, ["Yuncheng"] = { "" }, ["Wenxi"] = { "" }, ["Longxing"] = { "" }, ["Yongji"] = { "" }, ["Wanrong"] = { "" }, ["Ronghe"] = { "" }, ["Linfen"] = { "" }, ["Jixian"] = { "" }, ["Huozhou"] = { "" }, ["Hongtong"] = { "" }, ["Shangqiu"] = { "" }, ["Yongcheng"] = { "" }, ["Yuanyang"] = { "" }, ["Zhengzhou"] = { "" }, ["Kaifeng"] = { "" }, ["Lankao"] = { "" }, ["Changyuan"] = { "" }, ["Xunxian"] = { "" }, ["Puyang"] = { "" }, ["Fanxian"] = { "" }, ["Xinyang"] = { "" }, ["Gushi"] = { "" }, ["Shangluo"] = { "" }, ["Luonan"] = { "" }, ["Danfeng"] = { "" }, ["Shangnan"] = { "" }, ["Shanyang"] = { "" }, ["Zhen'an"] = { "" }, ["Hanbin"] = { "" }, ["Hanbin-XH"] = { "" }, ["Baihe"] = { "" }, ["Baihe-MP"] = { "" }, ["Pingli"] = { "" }, ["Xunyang"] = { "" }, ["Lueyang"] = { "" }, ["Mianxian"] = { "" }, ["Yangxian"] = { "" }, ["Xi'an"] = { "" }, ["Weiyang"] = { "" }, ["Baqiao"] = { "" }, ["Yanliang"] = { "" }, ["Lintong"] = { "" }, ["Chang'an"] = { "" }, ["Huyi"] = { "" }, ["Gaoling"] = { "" }, ["Zhouzhi"] = { "" }, ["Lantian"] = { "" }, ["Xianyang"] = { "" }, ["Xingping"] = { "" }, ["Wugong"] = { "" }, ["Qianxian"] = { "" }, ["Liquan"] = { "" }, ["Jingyang"] = { "" }, ["Sanyuan-M"] = { "" }, ["Yongshou"] = { "" }, ["Changwu"] = { "" }, ["Tongchuan"] = { "" }, ["Yaozhou"] = { "" }, ["Yijun"] = { "" }, ["Weinan"] = { "" }, ["Weinan-HZ"] = { "" }, ["Hancheng"] = { "" }, ["Huayin"] = { "" }, ["Tongguan"] = { "" }, ["Dali-SX"] = { "" }, ["Heyang"] = { "" }, ["Chengcheng"] = { "" }, ["Baishui"] = { "" }, ["Pucheng-M"] = { "" }, ["Fuping"] = { "" }, ["Huanglong"] = { "" }, ["Yichuan"] = { "" }, ["Huangling"] = { "" }, ["Luochuan"] = { "" }, ["Fuxian"] = { "" }, ["Dingbian"] = { "" }, ["Baoji"] = { "" }, ["Baoji-CC"] = { "" }, ["Fengxiang"] = { "" }, ["Qishan"] = { "" }, ["Fufeng"] = { "" }, ["Meixian-M"] = { "" }, ["Taibai"] = { "" }, ["Fengxian-SX"] = { "" }, ["Qianyang"] = { "" }, ["Longxian"] = { "" }, ["Linyou"] = { "" }, ["Tongxin"] = { "" }, ["Yanchi"] = { "" }, ["Guyuan"] = { "" }, ["Xiji"] = { "" }, ["Longde"] = { "" }, ["Jingyuan"] = { "" }, ["Tianshui"] = { "" }, ["Xining"] = { "" }, ["Menyuan"] = { "" }, ["Yanqi"] = { "" }, ["Xuzhou"] = { "" }, ["Xuzhou-JW"] = { "" }, ["Pizhou"] = { "" }, ["Suining"] = { "" }, ["Peixian"] = { "" }, ["Xinyi-M"] = { "" }, ["Fengxian-M"] = { "" }, ["Suqian"] = { "" }, ["Ganyu"] = { "" }, ["Donghai"] = { "" }, ["Fuyang"] = { "" }, ["Bengbu"] = { "" }, ["Suzhou-M"] = { "" }, ["Huaibei"] = { "" }, ["Bozhou"] = { "" }, ["Guangde-QC"] = { "" }, ["Qimen-AL-Jun"] = { "" }, ["Anji-HN"] = { "" }, ["Gansu-DG"] = { "" }, ["Shaanxi-DG"] = { "" }, ["Yinchuan"] = { "" }, ["Wuzhong"] = { "" }, ["Zhongwei"] = { "" }, ["Bayanhot"] = { "" }, ["Lanzhou"] = { "" }, ["Jiuquan"] = { "" }, ["Dunhuang"] = { "" }, ["Shandan"] = { "" }, ["Tianzhu"] = { "" }, ["Hami"] = { "" }, ["Changji"] = { "" }, ["Ürümqi"] = { "" }, ["Dabancheng-XG"] = { "" }, ["Midong-CSZ"] = { "" }, ["Ürümqi-BFG"] = { "" }, ["Jimsar"] = { "" }, ["Chengdu"] = { "" }, ["Xindu"] = { "" }, ["Xindu-XF"] = { "" }, ["Huayang"] = { "" }, ["Pidu"] = { "" }, ["Wenjiang"] = { "" }, ["Shuangliu"] = { "" }, ["Xinjin"] = { "" }, ["Jintang"] = { "" }, ["Pengzhou"] = { "" }, ["Dujiangyan"] = { "" }, ["Chongzhou"] = { "" }, ["Dayi"] = { "" }, ["Pujiang-M"] = { "" }, ["Qionglai"] = { "" }, ["Jianyang-M"] = { "" }, ["Xiaojin"] = { "" }, ["Jinchuan"] = { "" }, ["Songpan"] = { "" }, ["Maoxian"] = { "" }, ["Lixian"] = { "" }, ["Wenchuan"] = { "" }, ["Deyang"] = { "" }, ["Luojiang"] = { "" }, ["Mianzhu"] = { "" }, ["Shifang"] = { "" }, ["Guanghan"] = { "" }, ["Zhongjiang"] = { "" }, ["Ziyang-SC"] = { "" }, ["Anyue"] = { "" }, ["Lezhi"] = { "" }, ["Mianyang"] = { "" }, ["Anzhou"] = { "" }, ["Zitong"] = { "" }, ["Jiangyou"] = { "" }, ["Jiangyou-ZM"] = { "" }, ["Pingwu"] = { "" }, ["Beichuan"] = { "" }, ["Yanting"] = { "" }, ["Santai"] = { "" }, ["Guangyuan"] = { "" }, ["Zhaohua"] = { "" }, ["Cangxi"] = { "" }, ["Jiange"] = { "" }, ["Meishan"] = { "" }, ["Pengshan"] = { "" }, ["Danling"] = { "" }, ["Hongya"] = { "" }, ["Qingshen"] = { "" }, ["Renshou"] = { "" }, ["Luzhou"] = { "" }, ["Naxi"] = { "" }, ["Luxian"] = { "" }, ["Xuyong"] = { "" }, ["Gulin"] = { "" }, ["Hejiang"] = { "" }, ["Yibin"] = { "" }, ["Nanxi"] = { "" }, ["Pingshan-M"] = { "" }, ["Gaoxian"] = { "" }, ["Changning-M"] = { "" }, ["Gongxian"] = { "" }, ["Xingwen-GS"] = { "" }, ["Xingwen-BWS"] = { "" }, ["Jiang'an"] = { "" }, ["Junlian"] = { "" }, ["Leshan"] = { "" }, ["Jiajiang"] = { "" }, ["Emeishan"] = { "" }, ["Ebian"] = { "" }, ["Qianwei"] = { "" }, ["Mabian"] = { "" }, ["Jingyan"] = { "" }, ["Neijiang"] = { "" }, ["Zizhong"] = { "" }, ["Weiyuan"] = { "" }, ["Longchang"] = { "" }, ["Suining-SC"] = { "" }, ["Pengxi"] = { "" }, ["Shehong"] = { "" }, ["Guang'an"] = { "" }, ["Yuechi"] = { "" }, ["Wusheng"] = { "" }, ["Linshui"] = { "" }, ["Nanchong"] = { "" }, ["Nanbu"] = { "" }, ["Langzhong"] = { "" }, ["Yilong"] = { "" }, ["Yingshan"] = { "" }, ["Peng'an"] = { "" }, ["Dazhou"] = { "" }, ["Dazhu"] = { "" }, ["Kaijiang"] = { "" }, ["Wanyuan"] = { "" }, ["Xuanhan"] = { "" }, ["Bazhong"] = { "" }, ["Tongjiang"] = { "" }, ["Nanjiang"] = { "" }, ["Hanyuan"] = { "" }, ["Xichang"] = { "" }, ["Zigong"] = { "" }, ["Fushun"] = { "" }, ["Rongxian-M"] = { "" }, ["Muli"] = { "" }, ["Leibo"] = { "" }, ["Chongqing"] = { "" }, ["Chongqing-JB"] = { "" }, ["Chongqing-JLP"] = { "" }, ["Chongqing-DDK"] = { "" }, ["Chongqing-SPB"] = { "" }, ["Chongqing-BN"] = { "" }, ["Chongqing-NA"] = { "" }, ["Chongqing-QIJ"] = { "" }, ["Chongqing-QJ-WS"] = { "" }, ["Chongqing-YB"] = { "" }, ["Chongqing-BB"] = { "" }, ["Chongqing-NC"] = { "" }, ["Chongqing-WL"] = { "" }, ["Chongqing-DZ"] = { "" }, ["Chongqing-RC"] = { "" }, ["Chongqing-YC"] = { "" }, ["Chongqing-BS"] = { "" }, ["Chongqing-TL"] = { "" }, ["Chongqing-TN"] = { "" }, ["Chongqing-HC"] = { "" }, ["Chongqing-CS"] = { "" }, ["Chongqing-FL"] = { "" }, ["Chongqing-JJ"] = { "" }, ["Chongqing-WZ"] = { "" }, ["Chongqing-SZ"] = { "" }, ["Chongqing-KZ"] = { "" }, ["Chongqing-CK"] = { "" }, ["Chongqing-DJ"] = { "" }, ["Chongqing-LP"] = { "" }, ["Chongqing-FD"] = { "" }, ["Chongqing-ZX"] = { "" }, ["Chongqing-QJ"] = { "" }, ["Chongqing-PS"] = { "" }, ["Chongqing-YY"] = { "" }, ["Chongqing-XS"] = { "" }, ["Chongqing-YNY"] = { "" }, ["Chongqing-WX"] = { "" }, ["Chongqing-FJ"] = { "" }, ["Chongqing-WS"] = { "" }, ["Wuhan"] = { "" }, ["Jiangxia"] = { "" }, ["Caidian"] = { "" }, ["Xinzhou-HB"] = { "" }, ["Huangpi"] = { "" }, ["Hanchuan"] = { "" }, ["Suizhou"] = { "" }, ["Suixian"] = { "" }, ["Yichang"] = { "" }, ["Dangyang"] = { "" }, ["Zhijiang"] = { "" }, ["Yidu"] = { "" }, ["Changyang"] = { "" }, ["Xingshan"] = { "" }, ["Zigui"] = { "" }, ["Wufeng"] = { "" }, ["Enshi"] = { "" }, ["Hefeng"] = { "" }, ["Badong"] = { "" }, ["Xuan'en"] = { "" }, ["Laifeng"] = { "" }, ["Lichuan-M"] = { "" }, ["Jianshi"] = { "" }, ["Xianfeng"] = { "" }, ["Xiangyang"] = { "" }, ["Laohekou"] = { "" }, ["Baokang"] = { "" }, ["Nanzhang"] = { "" }, ["Zaoyang"] = { "" }, ["Yicheng"] = { "" }, ["Gucheng"] = { "" }, ["Jingzhou"] = { "" }, ["Jiangling"] = { "" }, ["Shishou"] = { "" }, ["Gong'an"] = { "" }, ["Songzi"] = { "" }, ["Jingmen"] = { "" }, ["Zhongxiang"] = { "" }, ["Jingshan"] = { "" }, ["Tianmen"] = { "" }, ["Xiantao"] = { "" }, ["Qianjiang"] = { "" }, ["Shennongjia"] = { "" }, ["Shiyan"] = { "" }, ["Zhuxi"] = { "" }, ["Zhushan"] = { "" }, ["Yunxi"] = { "" }, ["Yunyang"] = { "" }, ["Danjiangkou"] = { "" }, ["Fangxian"] = { "" }, ["Lhasa"] = { "" }, ["Guiyang"] = { "" }, ["Huaxi"] = { "" }, ["Zunyi"] = { "" }, ["Tongzi"] = { "" }, ["Renhuai"] = { "" }, ["Bijie"] = { "" }, ["Jinsha-M"] = { "" }, ["Dafang"] = { "" }, ["Weining"] = { "" }, ["Liupanshui"] = { "" }, ["Liuzhi"] = { "" }, ["Xingyi"] = { "" }, ["Anshun"] = { "" }, ["Duyun"] = { "" }, ["Pingtang"] = { "" }, ["Fuquan"] = { "" }, ["Weng'an"] = { "" }, ["Kaili"] = { "" }, ["Liping-GZ"] = { "" }, ["Zhenyuan"] = { "" }, ["Tongren"] = { "" }, ["Sinan"] = { "" }, ["Yuping"] = { "" }, ["Liping"] = { "" }, ["Zhaotong"] = { "" }, ["Baoshan-M"] = { "" }, ["Dali"] = { "" }, ["Kunming"] = { "" }, ["Qujing"] = { "" }, ["Wenshan"] = { "" }, ["Mengzi"] = { "" }, ["Lancang"] = { "" }, ["Weixi"] = { "" }, ["Pu'er"] = { "" }, ["Lincang"] = { "" }, ["Guilin"] = { "" }, ["Lingui"] = { "" }, ["Guanyang"] = { "" }, ["Lipu"] = { "" }, ["Pingle"] = { "" }, ["Yangshuo"] = { "" }, ["Liuzhou"] = { "" }, ["Liuzhou-LR"] = { "" }, ["Luzhai"] = { "" }, ["Sanjiang-DZ"] = { "" }, ["Nanning-M"] = { "" }, ["Yongning-FJ"] = { "" }, ["Wuming"] = { "" }, ["Wuming-FC"] = { "" }, ["Binyang-M"] = { "" }, ["Shanglin"] = { "" }, ["Yizhou"] = { "" }, ["Jinchengjiang"] = { "" }, ["Luocheng"] = { "" }, ["Fengshan"] = { "" }, ["Tianlin-LP"] = { "" }, ["Tianlin-PT"] = { "" }, ["Leye"] = { "" }, ["Lingyun"] = { "" }, ["Longlin"] = { "" }, ["Xilin"] = { "" }, ["Xiangzhou-NL"] = { "" }, ["Jishou"] = { "" }, ["Changde"] = { "" }, ["Zhangjiajie"] = { "" }, ["Yongzhou"] = { "" }, ["Chenzhou"] = { "" }, ["Huaihua"] = { "" }, ["Huitong"] = { "" }, ["Xiangtan-JN"] = { "" }, ["Ganzhou-M"] = { "" }, ["Shiquan"] = { "" }, ["Ziyang"] = { "" }, ["Ningshan"] = { "" }, ["Langao"] = { "" }, ["Zhenping"] = { "" }, ["Hanzhong"] = { "" }, ["Nanzheng"] = { "" }, ["Ningqiang"] = { "" }, ["Liuba"] = { "" }, ["Chenggu"] = { "" }, ["Foping"] = { "" }, ["Xixiang"] = { "" }, ["Zhenba"] = { "" }, ["Anji-HB"] = { "" }, ["Kokang"] = { "" }, ["Dagudi"] = { "" }, ["Reshuitang"] = { "" }, ["Mae Salong"] = { "" }, ["Mae Sai"] = { "" }, ["Oudomxay"] = { "" }, ["Siantar"] = { "" }, ["Nanjing"] = { "" }, ["Pukou"] = { "" }, ["Luhe-M"] = { "" }, ["Lishui-M"] = { "" }, ["Yangzhou"] = { "" }, ["Jiangdu"] = { "" }, ["Baoying"] = { "" }, ["Gaoyou"] = { "" }, ["Yizheng"] = { "" }, ["Taizhou-M"] = { "" }, ["Taixing"] = { "" }, ["Jiangyan"] = { "" }, ["Jingjiang-DX"] = { "" }, ["Zhenjiang"] = { "" }, ["Jurong"] = { "" }, ["Yangzhong"] = { "" }, ["Lianyungang"] = { "" }, ["Haizhou"] = { "" }, ["Guanyun"] = { "" }, ["Guannan"] = { "" }, ["Huai'an"] = { "" }, ["Huai'an-HA"] = { "" }, ["Huaiyin"] = { "" }, ["Hongze"] = { "" }, ["Lianshui"] = { "" }, ["Xuyi"] = { "" }, ["Jinhu"] = { "" }, ["Xinghua"] = { "" }, ["Nantong"] = { "" }, ["Rugao"] = { "" }, ["Rudong"] = { "" }, ["Hai'an"] = { "" }, ["Yancheng"] = { "" }, ["Dongtai"] = { "" }, ["Binhai"] = { "" }, ["Sheyang"] = { "" }, ["Dafeng"] = { "" }, ["Funing"] = { "" }, ["Jianhu"] = { "" }, ["Xiangshui"] = { "" }, ["Shuyang"] = { "" }, ["Sihong"] = { "" }, ["Siyang"] = { "" }, ["Anqing"] = { "" }, ["Tongcheng"] = { "" }, ["Zongyang"] = { "" }, ["Chizhou"] = { "" }, ["Qingyang"] = { "" }, ["Wuhu"] = { "" }, ["Wuhu-QS"] = { "" }, ["Wanzhi"] = { "" }, ["Jinghu"] = { "" }, ["Fanchang"] = { "" }, ["Wuwei"] = { "" }, ["Hanshan"] = { "" }, ["Hexian"] = { "" }, ["Ma'anshan"] = { "" }, ["Dangtu"] = { "" }, ["Xuancheng"] = { "" }, ["Tongling"] = { "" }, ["Hefei"] = { "" }, ["Feidong"] = { "" }, ["Feixi"] = { "" }, ["Chaohu"] = { "" }, ["Lujiang"] = { "" }, ["Changfeng"] = { "" }, ["Huainan"] = { "" }, ["Lu'an"] = { "" }, ["Jin'an-QSH"] = { "" }, ["Shucheng"] = { "" }, ["Huoshan"] = { "" }, ["Chuzhou"] = { "" }, ["Lai'an"] = { "" }, ["Quanjiao"] = { "" }, ["Mingguang"] = { "" }, ["Tianchang"] = { "" }, ["Echeng"] = { "" }, ["Huangshi"] = { "" }, ["Huanggang"] = { "" }, ["Hong'an"] = { "" }, ["Macheng"] = { "" }, ["Luotian"] = { "" }, ["Yingshan-HB"] = { "" }, ["Xishui"] = { "" }, ["Huangmei"] = { "" }, ["Wuxue"] = { "" }, ["Qichun"] = { "" }, ["Xiaogan"] = { "" }, ["Anlu"] = { "" }, ["Yingcheng"] = { "" }, ["Yunmeng"] = { "" }, ["Dawu"] = { "" }, ["Guangshui"] = { "" }, ["Zhashui"] = { "" }, ["Jiujiang"] = { "" }, ["Ruichang"] = { "" }, ["Anji-AQ"] = { "" }, ["Najiahu"] = { "" }, ["Dianbai-Jun"] = { "" }, ["Qinzhou-M"] = { "" }, ["Pinghai-Jun"] = { "" }, ["Ningguo-GK"] = { "" }, ["Langxi"] = { "" }, ["Changle-QJ"] = { "" }, ["Yanping"] = { "" }, ["Jiangshan-M-NBD"] = { "" }, ["Kaihua-M-HB"] = { "" }, ["Yushan-M-HY"] = { "" }, ["Juexi"] = { "" }, ["Taiyuan"] = { "" }, ["Jiancaoping"] = { "" }, ["Jinyuan"] = { "" }, ["Qingxu"] = { "" }, ["Loufan"] = { "" }, ["Taigu"] = { "" }, ["Pingyao"] = { "" }, ["Heshun"] = { "" }, ["Qixian"] = { "" }, ["Yangyuan"] = { "" }, ["Datong"] = { "" }, ["Yunzhou"] = { "" }, ["Yunzhou-XCT"] = { "" }, ["Tianzhen"] = { "" }, ["Guangling"] = { "" }, ["Shuozhou"] = { "" }, ["Shanyin"] = { "" }, ["Pinglu"] = { "" }, ["Pingding"] = { "" }, ["Xinzhou"] = { "" }, ["Wutai"] = { "" }, ["Daixian"] = { "" }, ["Wuzhai"] = { "" }, ["Lishi"] = { "" }, ["Shilou"] = { "" }, ["Fenyang"] = { "" }, ["Lanxian"] = { "" }, ["Linxian"] = { "" }, ["Wenshui"] = { "" }, ["Xiaoyi"] = { "" }, ["Fenxi"] = { "" }, ["Xixian"] = { "" }, ["Changzhi"] = { "" }, ["Tunliu"] = { "" }, ["Baochang"] = { "" }, ["Linhe"] = { "" }, ["Pingshun"] = { "" }, ["Zhangzi"] = { "" }, ["Qinxian"] = { "" }, ["Jincheng"] = { "" }, ["Lingchuan"] = { "" }, ["Yangcheng"] = { "" }, ["Gaoping"] = { "" }, ["Jining"] = { "" }, ["Liangcheng"] = { "" }, ["Hohhot"] = { "" }, ["Baotou"] = { "" }, ["Dongsheng"] = { "" }, ["Haibowan"] = { "" }, ["Erenhot"] = { "" }, ["Pingshan"] = { "" }, ["Zhangjiakou"] = { "" }, ["Chongli"] = { "" }, ["Handan"] = { "" }, ["Linzhang"] = { "" }, ["Anyang"] = { "" }, ["Linzhou"] = { "" }, ["Hebi"] = { "" }, ["Xinxiang"] = { "" }, ["Jiaozuo"] = { "" }, ["Qinyang"] = { "" }, ["Wenxian"] = { "" }, ["Wuzhi"] = { "" }, ["Jiyuan"] = { "" }, ["Suide"] = { "" }, ["Zizhou"] = { "" }, ["Mizhi"] = { "" }, ["Jiaxian"] = { "" }, ["Wubu"] = { "" }, ["Shenmu"] = { "" }, ["Fugu"] = { "" }, ["Yulin-J"] = { "" }, ["Hengshan-J"] = { "" }, ["Jingbian"] = { "" }, ["Yan'an"] = { "" }, ["Ansai"] = { "" }, ["Ganquan"] = { "" }, ["Zhidan"] = { "" }, ["Wuqi-J"] = { "" }, ["Qingjian"] = { "" }, ["Zichang"] = { "" }, ["Yanchuan"] = { "" }, ["Yanchang"] = { "" }, ["Shanghai"] = { "直升飛機" }, ["Yangpu"] = { "" }, ["Xinzhuang"] = { "" }, ["Zhenru"] = { "" }, ["Songjiang"] = { "" }, ["Chuansha"] = { "" }, ["Nanhui"] = { "" }, ["Zhoupu"] = { "" }, ["Huinan"] = { "" }, ["Fengxian"] = { "" }, ["Jinshan"] = { "" }, ["Qingpu"] = { "" }, ["Jiading"] = { "" }, ["Baoshan-SCD"] = { "" }, ["Baoshan-LD"] = { "" }, ["Baoshan-YP"] = { "" }, ["Chongming"] = { "" }, ["Suzhou"] = { "" }, ["Shengpu"] = { "" }, ["Xishan"] = { "" }, ["Wujiang-SL"] = { "" }, ["Wujiang-LL"] = { "" }, ["Wujiang-SZ"] = { "" }, ["Wuxi"] = { "" }, ["Changshu"] = { "" }, ["Kunshan"] = { "" }, ["Taicang"] = { "" }, ["Zhangjiagang"] = { "" }, ["Tongzhou"] = { "" }, ["Qidong"] = { "" }, ["Qidong-LS"] = { "" }, ["Haimen"] = { "" }, ["Haimen-SJ"] = { "" }, ["Rudong-W"] = { "" }, ["Jiaxing"] = { "" }, ["Jiashan"] = { "" }, ["Pinghu"] = { "" }, ["Haining-YG"] = { "" }, ["Haining-XS"] = { "" }, ["Tongxiang"] = { "" }, ["Haiyan"] = { "" }, ["Changzhou"] = { "" }, ["Liyang"] = { "" }, ["Jintan"] = { "" }, ["Yixing"] = { "" }, ["Danyang"] = { "" }, ["Danyang-TJQ"] = { "" }, ["Jingjiang"] = { "" }, ["Jiangyin"] = { "" }, ["Gaochun"] = { "" }, ["Gaochun-ZB"] = { "" }, ["Huzhou"] = { "" }, ["Huzhou-SL"] = { "" }, ["Changxing"] = { "" }, ["Anji"] = { "" }, ["Anji-XF"] = { "" }, ["Deqing-W"] = { "" }, ["Deqing-GT"] = { "" }, ["Hangzhou"] = { "" }, ["Yuhang"] = { "" }, ["Lin'an"] = { "" }, ["Lin'an-CH"] = { "" }, ["Lin'an-YQ"] = { "" }, ["Fuyang-W"] = { "" }, ["Fuyang-XD"] = { "" }, ["Xiaoshan"] = { "" }, ["Tonglu"] = { "" }, ["Fenshui-WS"] = { "" }, ["Shaoxing"] = { "" }, ["Shaoxing-KQ"] = { "" }, ["Shangyu"] = { "" }, ["Zhuji"] = { "" }, ["Zhuji-WJJ"] = { "" }, ["Shengzhou"] = { "" }, ["Shengzhou-CR"] = { "" }, ["Shengzhou-TP"] = { "" }, ["Xinchang"] = { "" }, ["Ningbo"] = { "" }, ["Zhenhai"] = { "" }, ["Fenghua"] = { "" }, ["Beilun"] = { "" }, ["Yinzhou"] = { "" }, ["Yuyao"] = { "" }, ["Cixi"] = { "" }, ["Xiangshan"] = { "" }, ["Ninghai"] = { "" }, ["Zhoushan"] = { "" }, ["Dinghai"] = { "" }, ["Daishan"] = { "" }, ["Shengsi"] = { "" }, ["Jiaojiang"] = { "" }, ["Huangyan"] = { "" }, ["Tiantai"] = { "" }, ["Xianju"] = { "" }, ["Sanmen"] = { "" }, ["Linhai"] = { "" }, ["Wenling"] = { "" }, ["Yuhuan"] = { "" }, ["Yuhuan-DMY"] = { "" }, ["Yuhuan-CM"] = { "" }, ["Wenzhou"] = { "" }, ["Yueqing"] = { "" }, ["Yongjia"] = { "" }, ["Yongjia-FL"] = { "" }, ["Rui'an"] = { "" }, ["Longgang"] = { "" }, ["Dongtou"] = { "" }, ["Cangnan-JX"] = { "" }, ["Pingyang"] = { "" }, ["Taishun"] = { "" }, ["Wencheng"] = { "" }, ["Lishui"] = { "" }, ["Qingtian"] = { "" }, ["Jinyun"] = { "" }, ["Xuanping"] = { "" }, ["Songyang-XP"] = { "" }, ["Songyang-GS"] = { "" }, ["Yunhe"] = { "" }, ["Jingning"] = { "" }, ["Qingyuan-W"] = { "" }, ["Longquan"] = { "" }, ["Quzhou"] = { "" }, ["Qujiang-DZ"] = { "" }, ["Suichang"] = { "" }, ["Jiangshan"] = { "" }, ["Changshan"] = { "" }, ["Kaihua"] = { "" }, ["Longyou"] = { "" }, ["Jinhua"] = { "" }, ["Tangxi"] = { "" }, ["Yiwu"] = { "" }, ["Yongkang"] = { "" }, ["Pujiang"] = { "" }, ["Dongyang"] = { "" }, ["Pan'an"] = { "" }, ["Wuyi"] = { "" }, ["Lanxi"] = { "" }, ["Shangrao"] = { "" }, ["Shangrao-Rail"] = { "" }, ["Guangfeng"] = { "" }, ["Yushan"] = { "" }, ["Xuancheng-YC"] = { "" }, ["Xuancheng-JP"] = { "" }, ["Wuhu-LL"] = { "" }, ["Tongling-W"] = { "" }, ["Nanling"] = { "" }, ["Yi'an-WS"] = { "" }, ["Huangshan"] = { "" }, ["Jingxian"] = { "" }, ["Jingxian-ZJ"] = { "" }, ["Shitai-JZ"] = { "" }, ["Pucheng"] = { "" }, ["Changsha"] = { "" }, ["Yiyang-X"] = { "" }, ["Liuyang-YA"] = { "" }, ["Xiangtan"] = { "" }, ["Xiangtan-CES"] = { "" }, ["Miluo-CL"] = { "" }, ["Xiangxiang"] = { "" }, ["Xiangxiang-MQ"] = { "" }, ["Loudi"] = { "" }, ["Shuangfeng"] = { "" }, ["Xinhua"] = { "" }, ["Lianyuan"] = { "" }, ["Shaoyang"] = { "" }, ["Lengshuitan"] = { "" }, ["Zhuzhou"] = { "" }, ["Longhui"] = { "" }, ["Suining-X"] = { "" }, ["Dongkou-HQ"] = { "" }, ["Wugang"] = { "" }, ["Hengyang"] = { "" }, ["Hengshan"] = { "" }, ["Hengshan-BG"] = { "" }, ["Qiyang"] = { "" }, ["Quanzhou-X"] = { "" }, ["Guanyang-X"] = { "" }, ["Qinglong-CL"] = { "" }, ["Nanchong-CL"] = { "" }, ["Nanchang"] = { "" }, ["Xinjian-WC"] = { "" }, ["Nanchang-TC"] = { "" }, ["Anyi"] = { "" }, ["Hukou"] = { "" }, ["Lushan"] = { "" }, ["Yongxiu"] = { "" }, ["Gongqingcheng-JY"] = { "" }, ["Xiushui"] = { "" }, ["Pengze"] = { "" }, ["Duchang"] = { "" }, ["Duchang-TT"] = { "" }, ["Duchang-YF"] = { "" }, ["Wuning-QK"] = { "" }, ["Poyang"] = { "" }, ["Poyang-MT"] = { "" }, ["Yugan"] = { "" }, ["Wannian"] = { "" }, ["Yiyang"] = { "" }, ["Hengfeng"] = { "" }, ["Yanshan-HK"] = { "" }, ["Yanshan-YP"] = { "" }, ["Shangrao-SX"] = { "" }, ["Shangrao-HM"] = { "" }, ["Jingdezhen"] = { "" }, ["Leping"] = { "" }, ["Yichun"] = { "" }, ["Yifeng"] = { "" }, ["Gao'an"] = { "" }, ["Fengxin"] = { "" }, ["Shanggao"] = { "" }, ["Wanzai"] = { "" }, ["Fengcheng"] = { "" }, ["Fengcheng-ST"] = { "" }, ["Xinyu"] = { "" }, ["Fuzhou-G"] = { "" }, ["Linchuan-SDD"] = { "" }, ["Dongxiang"] = { "" }, ["Nancheng"] = { "" }, ["Nanfeng"] = { "" }, ["Yihuang"] = { "" }, ["Lichuan"] = { "" }, ["Chongren"] = { "" }, ["Pingxiang"] = { "" }, ["Lianhua"] = { "" }, ["Luxi"] = { "" }, ["Ji'an"] = { "" }, ["Jishui-LT"] = { "" }, ["Yongfeng"] = { "" }, ["Taihe"] = { "" }, ["Xiajiang"] = { "" }, ["Yongxin"] = { "" }, ["Yingtan"] = { "" }, ["Yujiang"] = { "" }, ["Guixi"] = { "" }, ["Susong"] = { "" }, ["Susong-HT"] = { "" }, ["Susong-GL"] = { "" }, ["Wangjiang"] = { "" }, ["Qianshan"] = { "" }, ["Huaining"] = { "" }, ["Huaining-SP"] = { "" }, ["Yuexi"] = { "" }, ["Taihu"] = { "" }, ["Dongzhi"] = { "" }, ["Shitai"] = { "" }, ["Yangxin"] = { "" }, ["Yangxin-GH"] = { "" }, ["Daye"] = { "" }, ["Xianning"] = { "" }, ["Xianning-MQ"] = { "" }, ["Jiayu"] = { "" }, ["Chongyang"] = { "" }, ["Chibi"] = { "" }, ["Tongshan"] = { "" }, ["Tongcheng-G"] = { "" }, ["Jianli"] = { "" }, ["Yueyang"] = { "" }, ["Yueyang-BX"] = { "" }, ["Linxiang"] = { "" }, ["Pingjiang-XJ"] = { "" }, ["Pingjiang-NJ"] = { "" }, ["Liuyang"] = { "" }, ["Liuyang-DY"] = { "" }, ["Liuyang-FY"] = { "" }, ["Liling-BTT"] = { "" }, ["Liling-BS"] = { "" }, ["Youxian"] = { "" }, ["Chaling"] = { "" }, ["Changning"] = { "" }, ["Changning-TS"] = { "" }, ["Leiyang"] = { "" }, ["Anren"] = { "" }, ["Zixing-XN"] = { "" }, ["Longhui-LDZ"] = { "" }, ["Dongkou"] = { "" }, ["Dongkou-SJ"] = { "" }, ["Jianning"] = { "" }, ["Taining"] = { "" }, ["Hanbin-NT"] = { "" }, ["Jinxian"] = { "" }, ["Jinxi"] = { "" }, ["Le'an"] = { "" }, ["Guangchang"] = { "" }, ["Anfu"] = { "" }, ["Suichuan"] = { "" }, ["Wan'an"] = { "" }, ["Jing'an"] = { "" }, ["Zhangshu"] = { "" }, ["Xingan"] = { "" }, ["Fenyi"] = { "" }, ["Meixian"] = { "" }, ["Xingning"] = { "" }, ["Dabu"] = { "" }, ["Dabu-XH"] = { "" }, ["Dabu-TY"] = { "" }, ["Dabu-GB"] = { "" }, ["Fengshun-TK"] = { "" }, ["Fengshun-LH"] = { "" }, ["Fengshun-HJ"] = { "" }, ["Fengshun-FL"] = { "" }, ["Fengshun-PT"] = { "" }, ["Huizhou"] = { "" }, ["Huizhou-SK"] = { "" }, ["Huizhou-HL"] = { "" }, ["Huiyang"] = { "" }, ["Huidong-PS"] = { "" }, ["Huidong-DL"] = { "" }, ["Dongguan-H"] = { "" }, ["Longmen-PL"] = { "" }, ["Longmen-LX"] = { "" }, ["Boluo"] = { "" }, ["Shenzhen-H"] = { "" }, ["Shenzhen-H-LH"] = { "" }, ["Shenzhen-HG"] = { "" }, ["Zengcheng-ZG"] = { "" }, ["Zhongshan-WGS"] = { "" }, ["Zhongshan-NLHS"] = { "" }, ["Wuhua-SZ"] = { "" }, ["Wuhua-HC"] = { "" }, ["Wuhua-CB"] = { "" }, ["Wuhua-MY"] = { "" }, ["Wuhua-ML"] = { "" }, ["Heyuan"] = { "" }, ["Zijin"] = { "" }, ["Zijin-GZ"] = { "" }, ["Longchuan-TC"] = { "" }, ["Longchuan-SD"] = { "" }, ["Heping-LZ"] = { "" }, ["Lianping"] = { "" }, ["Lianping-ZX"] = { "" }, ["Lianping-LJ"] = { "" }, ["Wengyuan"] = { "" }, ["Nanxiong-ZJ"] = { "" }, ["Qujiang"] = { "" }, ["Lechang-MH"] = { "" }, ["Xinfeng-MT"] = { "" }, ["Xinfeng-DX"] = { "" }, ["Xiaosanjiang"] = { "" }, ["Liannan"] = { "" }, ["Conghua-H"] = { "" }, ["Jiexi"] = { "" }, ["Jiexi-HZ"] = { "" }, ["Luhe"] = { "" }, ["Raoping-XF"] = { "" }, ["Xiuzhuan"] = { "" }, ["Pinghe-JF"] = { "" }, ["Nanjing-ML"] = { "" }, ["Nanjing-BL"] = { "" }, ["Changting"] = { "" }, ["Shanghang"] = { "" }, ["Yongding"] = { "" }, ["Yongding-XY"] = { "" }, ["Yongding-GB"] = { "" }, ["Yongding-HK"] = { "" }, ["Wuping"] = { "" }, ["Wuping-ZS"] = { "" }, ["Wuping-Y"] = { "" }, ["Wuping-WD"] = { "" }, ["Pingyu"] = { "" }, ["Liancheng"] = { "" }, ["Liancheng-PT"] = { "" }, ["Liancheng-JX"] = { "" }, ["Liancheng-ZB"] = { "" }, ["Liancheng-LY"] = { "" }, ["Ninghua"] = { "" }, ["Qingliu"] = { "" }, ["Yudu"] = { "" }, ["Ningdu"] = { "" }, ["Ruijin"] = { "" }, ["Shicheng"] = { "" }, ["Shangyou"] = { "" }, ["Sandu"] = { "" }, ["Ganzhou-PL"] = { "" }, ["Nankang"] = { "" }, ["Dayu"] = { "" }, ["Quannan"] = { "" }, ["Dingnan"] = { "" }, ["Longnan"] = { "" }, ["Xunwu"] = { "" }, ["Anyuan"] = { "" }, ["Huichang"] = { "" }, ["Chongyi"] = { "" }, ["Xingguo"] = { "" }, ["Yunhe-JST"] = { "" }, ["Tonggu"] = { "" }, ["Fengxin-ZX"] = { "" }, ["Taoyuan"] = { "" }, ["Miaoli"] = { "直升機" }, ["Zaoqiao"] = { "" }, ["Touwu"] = { "" }, ["Nanzhuang"] = { "" }, ["Shitan"] = { "" }, ["Sanwan"] = { "" }, ["Toufen"] = { "" }, ["Gongguan"] = { "直升機" }, ["Zhuolan-SX"] = { "直升機" }, ["Liudui"] = { "直升機" }, ["Wuluo"] = { "直升機" }, ["Meinong"] = { "直升機" }, ["Shanlin"] = { "直升機" }, ["Hsinchu"] = { "直升機" }, ["Dongshi"] = { "直升機" }, ["Raoping"] = { "直升機" }, ["Zhuolan-RP"] = { "直升機" }, ["Yunlin"] = { "直升機" }, ["Guoxing"] = { "" }, ["Hong Kong-H"] = { "" }, ["Tangkou"] = { "" }, ["Sanjia"] = { "" }, ["Sihe"] = { "" }, ["Qianpai"] = { "" }, ["Xindong"] = { "" }, ["Shalang"] = { "" }, ["Xin'an"] = { "" }, ["Shijiao"] = { "" }, ["Qingping"] = { "" }, ["Xihe"] = { "" }, ["Fumian-XS"] = { "" }, ["Luchuan-LC"] = { "" }, ["Luchuan-DQ"] = { "" }, ["Luchuan-SH"] = { "" }, ["Bobai-SH"] = { "" }, ["Bobai-LT"] = { "" }, ["Bobai-LP"] = { "" }, ["Bobai-LJ"] = { "" }, ["Bobai-CT"] = { "" }, ["Tang'an"] = { "" }, ["Beiliu-GH"] = { "" }, ["Beiliu-MM"] = { "" }, ["Xingye-GF"] = { "" }, ["Rongxian-XD"] = { "" }, ["Mashan-PL"] = { "" }, ["Binyang-WL"] = { "" }, ["Hengxian-XY"] = { "" }, ["Lingui-H-XJ"] = { "" }, ["Lipu-SDT"] = { "" }, ["Lipu-DSG"] = { "" }, ["Pingle-H"] = { "" }, ["Yangshuo-JB"] = { "" }, ["Tianlin-GL"] = { "" }, ["Qinzhou-H"] = { "" }, ["Guidong"] = { "" }, ["Rongchang-PL"] = { "" }, ["Chengdu-H-LT"] = { "" }, ["Longquanyi-H-SL"] = { "" }, ["Qingbaijiang-H-LW"] = { "" }, ["Xindu-H-SBT"] = { "" }, ["Xindu-H-HXC"] = { "" }, ["Xindu-H-XD"] = { "" }, ["Weiyuan-H"] = { "" }, ["Yilong-H"] = { "" }, ["Xichang-H"] = { "" }, ["Sabah-B"] = { "" }, ["Sabah-L"] = { "" }, ["Sabah-HY"] = { "" }, ["Sabah-HP"] = { "" }, ["Kuala Lumpur-H-HY"] = { "" }, ["Kuala Lumpur-H"] = { "" }, ["Senai"] = { "" }, ["Senai-JX"] = { "" }, ["Kuching"] = { "" }, ["Sungai Tapang"] = { "" }, ["Singkawang"] = { "" }, ["Pontianak-MX"] = { "" }, ["Mempawah"] = { "" }, ["Metal"] = { "" }, ["Singapore-MX"] = { "" }, ["Singapore-DB"] = { "" }, ["Belait-H"] = { "" }, ["Bangkok-MX"] = { "" }, ["Bangkok-FS"] = { "" }, ["Bangkok-JX"] = { "" }, ["Yangon-H"] = { "" }, ["Ho Chi Minh City-H"] = { "" }, ["Jixi"] = { "" }, ["Shexian"] = { "" }, ["Shexian-XG"] = { "" }, ["Shexian-DGY"] = { "" }, ["Tunxi"] = { "" }, ["Huizhou-HZ"] = { "" }, ["Xiuning"] = { "" }, ["Yixian"] = { "" }, ["Qimen"] = { "" }, ["Qimen-AL-Min"] = { "" }, ["Wuyuan"] = { "" }, ["Fuliang"] = { "" }, ["Dexing"] = { "" }, ["Jingde"] = { "" }, ["Zhanda"] = { "" }, ["Chun'an"] = { "" }, ["Sui'an"] = { "" }, ["Jiande"] = { "" }, ["Shouchang"] = { "" }, ["Guangzhou"] = { "" }, ["Hong Kong"] = { "直升機", "伏伏伏" }, ["HK Weitou"] = { "" }, ["Kam Tin"] = { "" }, ["Shek Pik"] = { "" }, ["Ting Kok"] = { "" }, ["Tung Ping Chau"] = { "" }, ["Macau"] = { "" }, ["Macau-Tanka"] = { "" }, ["Guangzhou-XJ"] = { "" }, ["Guangzhou-LX"] = { "" }, ["Guangzhou-HP"] = { "" }, ["Guangzhou-XS"] = { "" }, ["Guangzhou-SJ"] = { "" }, ["Guangzhou-JC"] = { "" }, ["Guangzhou-LG"] = { "" }, ["Guangzhou-RH"] = { "" }, ["Guangzhou-ZL"] = { "" }, ["Guangzhou-ZLT"] = { "" }, ["Guangzhou-JF"] = { "" }, ["Panyu"] = { "" }, ["Huadu"] = { "" }, ["Conghua"] = { "" }, ["Zengcheng"] = { "" }, ["Foshan"] = { "" }, ["Nanhai"] = { "" }, ["Shunde"] = { "" }, ["Sanshui"] = { "" }, ["Gaoming"] = { "" }, ["Zhongshan"] = { "" }, ["Zhongshan-HC"] = { "" }, ["Zhongshan-NL"] = { "" }, ["Zhongshan-CKM"] = { "" }, ["Zhongshan-XL"] = { "" }, ["Zhongshan-DS"] = { "" }, ["Zhongshan-TB"] = { "" }, ["Zhongshan-HL"] = { "" }, ["Zhongshan-DF"] = { "" }, ["Zhongshan-NT"] = { "" }, ["Zhongshan-FS"] = { "" }, ["Zhongshan-SL"] = { "" }, ["Zhongshan-GK"] = { "" }, ["Zhongshan-HP"] = { "" }, ["Zhongshan-SJ"] = { "" }, ["Zhongshan-LW"] = { "" }, ["Zhongshan-MZ"] = { "" }, ["Zhongshan-GZ"] = { "" }, ["Zhongshan-BF"] = { "" }, ["Zhongshan-TZ"] = { "" }, ["Zhongshan-TG"] = { "" }, ["Zhuhai"] = { "" }, ["Zhuhai-TJW"] = { "" }, ["Doumen-T"] = { "" }, ["Doumen-S"] = { "" }, ["Jiangmen"] = { "" }, ["Xinhui"] = { "" }, ["Taishan"] = { "直升機", "直升飛機" }, ["Taishan-GH"] = { "" }, ["Kaiping"] = { "" }, ["Enping"] = { "" }, ["Heshan"] = { "" }, ["Heshan-SP"] = { "" }, ["Malan"] = { "" }, ["Malan-BTQ"] = { "" }, ["Malan-MHD"] = { "" }, ["Malan-SZP"] = { "" }, ["Malan-BLH"] = { "" }, ["Dongguan"] = { "" }, ["Shenzhen-C-LH"] = { "" }, ["Shenzhen-NT"] = { "" }, ["Shenzhen-XX"] = { "" }, ["Bao'an"] = { "" }, ["Yantian"] = { "" }, ["Dapeng"] = { "" }, ["Shenzhen-PD"] = { "" }, ["Pingshan-ZM"] = { "" }, ["Ebu-ZM"] = { "" }, ["Longmen"] = { "" }, ["Qingyuan"] = { "" }, ["Fogang"] = { "" }, ["Yingde"] = { "" }, ["Yangshan"] = { "" }, ["Lianshan"] = { "" }, ["Lianshan-YH"] = { "" }, ["Lianzhou"] = { "" }, ["Shaoguan"] = { "" }, ["Qujiang-C"] = { "" }, ["Renhua"] = { "" }, ["Lechang"] = { "" }, ["Gaoyao"] = { "" }, ["Sihui"] = { "" }, ["Guangning"] = { "" }, ["Deqing"] = { "" }, ["Huaiji"] = { "" }, ["Huaiji-LC"] = { "" }, ["Fengkai"] = { "" }, ["Fengkai-LD"] = { "" }, ["Yunfu"] = { "" }, ["Xinxing"] = { "" }, ["Luoding"] = { "" }, ["Luoding-SL"] = { "" }, ["Yunan"] = { "" }, ["Yangjiang"] = { "" }, ["Yangdong"] = { "" }, ["Yangdong-YS"] = { "" }, ["Yangchun"] = { "" }, ["Yangxi"] = { "" }, ["Xinyi"] = { "" }, ["Maoming"] = { "" }, ["Maoming-YJ"] = { "" }, ["Gaozhou"] = { "" }, ["Huazhou"] = { "" }, ["Huazhou-CQ"] = { "" }, ["Zhanjiang"] = { "" }, ["Lianjiang"] = { "" }, ["Lianjiang-CB"] = { "" }, ["Wuchuan"] = { "" }, ["Wuchuan-ML"] = { "" }, ["Nanning"] = { "" }, ["Nanning-Tanka"] = { "" }, ["Wuzhou"] = { "" }, ["Wuzhou-LX"] = { "" }, ["Cangwu-LB"] = { "" }, ["Yulin"] = { "" }, ["Rongxian"] = { "" }, ["Hepu"] = { "" }, ["Hepu-ST"] = { "" }, ["Guiping"] = { "" }, ["Guiping-JT"] = { "" }, ["Guiping-JK"] = { "" }, ["Guiping-MD"] = { "" }, ["Guiping-ML"] = { "" }, ["Pingnan-PN"] = { "" }, ["Pingnan-DZ"] = { "" }, ["Mengshan"] = { "" }, ["Mengshan-XX"] = { "" }, ["Mengshan-CT"] = { "" }, ["Guigang-GC"] = { "" }, ["Guigang-NJ"] = { "" }, ["Guigang-PD"] = { "" }, ["Beiliu"] = { "" }, ["Beiliu-TL"] = { "" }, ["Beiliu-XC"] = { "" }, ["Baise"] = { "" }, ["Tiandong"] = { "" }, ["Tiandong-LF"] = { "" }, ["Tianyang"] = { "" }, ["Pingguo"] = { "" }, ["Pingguo-SX"] = { "" }, ["Bobai"] = { "" }, ["Lingshan"] = { "" }, ["Pubei"] = { "" }, ["Qinzhou"] = { "" }, ["Qinzhou-XD"] = { "" }, ["Qinzhou-CT"] = { "" }, ["Qinzhou-NS"] = { "" }, ["Qinzhou-XNJ"] = { "" }, ["Beihai"] = { "" }, ["Beihai-NK"] = { "" }, ["Beihai-YP"] = { "" }, ["Beihai-QG"] = { "" }, ["Beihai-QG-CB"] = { "" }, ["Ningming"] = { "" }, ["Hengxian"] = { "" }, ["Pumen"] = { "" }, ["Fangchenggang-FC"] = { "" }, ["Dongxing"] = { "" }, ["Chongzuo-LT"] = { "" }, ["Fusui-QJ"] = { "" }, ["Lingchuan-C-YJ"] = { "" }, ["Pingle-C-MJ"] = { "" }, ["Pingle-C-SS"] = { "" }, ["Lipu-ZC"] = { "" }, ["Danzhou"] = { "" }, ["Sanya-YL"] = { "" }, ["Kuala Lumpur"] = { "" }, ["Penang-C"] = { "" }, ["Ipoh"] = { "" }, ["Sarikei-C"] = { "" }, ["Singapore-C"] = { "" }, ["Jakarta-C"] = { "" }, ["Ho Chi Minh City"] = { "" }, ["Mong Cai"] = { "" }, ["Phnom Penh-C"] = { "" }, ["Yangon-C"] = { "" }, ["Mandalay-C"] = { "" }, ["Bangkok-C"] = { "" }, ["Betong"] = { "" }, ["Manila-C"] = { "" }, ["Nanning-P"] = { "" }, ["Nanning-P-SJ"] = { "" }, ["Nanning-P-GJY"] = { "" }, ["Nanning-P-ZGL"] = { "" }, ["Nanning-P-XXJD"] = { "" }, ["Nanning-P-SL"] = { "" }, ["Nanning-P-XX"] = { "" }, ["Nanning-P-SC"] = { "" }, ["Binyang"] = { "" }, ["Binyang-XQ"] = { "" }, ["Hengxian-P"] = { "" }, ["Wuxuan-JJ"] = { "" }, ["Chongzuo-P"] = { "" }, ["Liucheng-P"] = { "" }, ["Liucheng-P-GZ"] = { "" }, ["Yizhou-P-DS"] = { "" }, ["Luocheng-P"] = { "" }, ["Guilin-P"] = { "" }, ["Guilin-P-CY"] = { "" }, ["Guilin-P-DBZ"] = { "" }, ["Guilin-P-ZY"] = { "" }, ["Guilin-P-DB"] = { "" }, ["Guilin-P-YJ"] = { "" }, ["Guilin-P-QJ"] = { "" }, ["Lingui-P-WT"] = { "" }, ["Lingui-P-HS"] = { "" }, ["Lingui-P-LJ"] = { "" }, ["Lingui-P-LT"] = { "" }, ["Lingchuan-P"] = { "" }, ["Lingchuan-P-GQ"] = { "" }, ["Lingchuan-P-GD"] = { "" }, ["Lingchuan-P-TX"] = { "" }, ["Lingchuan-P-SZ"] = { "" }, ["Lingchuan-P-GP"] = { "" }, ["Lingchuan-P-LT"] = { "" }, ["Guanyang-P"] = { "" }, ["Quanzhou-P"] = { "" }, ["Pingle-P"] = { "" }, ["Pingle-P-XTM"] = { "" }, ["Yangshuo-P"] = { "" }, ["Yangshuo-P-PT"] = { "" }, ["Yongfu-P-JX"] = { "" }, ["Yongfu-P-CS"] = { "" }, ["Zhongshan-GA"] = { "" }, ["Xiamen"] = { "直升飛機" }, ["Xiamen-HS"] = { "" }, ["Tong'an"] = { "" }, ["Quanzhou"] = { "" }, ["Jinjiang"] = { "" }, ["Nan'an"] = { "" }, ["Shishi"] = { "" }, ["Hui'an"] = { "" }, ["Anxi"] = { "" }, ["Yongchun"] = { "" }, ["Dehua"] = { "" }, ["Zhangzhou"] = { "" }, ["Longhai"] = { "" }, ["Changtai"] = { "" }, ["Hua'an"] = { "" }, ["Nanjing-MN"] = { "" }, ["Pinghe"] = { "" }, ["Zhangpu"] = { "" }, ["Yunxiao"] = { "" }, ["Zhao'an"] = { "直升飛機" }, ["Zhao'an-SD"] = { "" }, ["Zhao'an-TY"] = { "" }, ["Zhao'an-WS"] = { "" }, ["Dongshan"] = { "" }, ["Taipei"] = { "" }, ["Wanhua"] = { "" }, ["Tamsui"] = { "直升機", "𧌄嬰仔機" }, --嬰 written as 蠳 ["Sanxia"] = { "" }, ["Pingxi"] = { "phu-ló͘-phiat-lá" }, ["Kaohsiung"] = { "直升機" }, ["Cijin"] = { "直升機" }, ["Hongmaogang"] = { "" }, ["Dalinpu"] = { "直升機" }, ["Tianliao"] = { "" }, ["Yilan"] = { "" }, ["Luodong"] = { "phi-ló͘-phiat-lá" }, ["Toucheng"] = { "直升機" }, ["Lukang"] = { "" }, ["Yongjing-MN"] = { "直升機" }, ["Taichung"] = { "" }, ["Wuqi"] = { "" }, ["Tainan"] = { "" }, ["Anping"] = { "直升機" }, ["Shanhua"] = { "" }, ["Taitung"] = { "" }, ["Green Island"] = { "" }, ["Hsinchu-MN"] = { "" }, ["Miaoli-MN"] = { "" }, ["Mailiao"] = { "" }, ["Chiayi"] = { "" }, ["Chiayi-DS"] = { "" }, ["Baoli"] = { "直升機", "pu-ló͘-phiat-lá" }, ["Liuqiu"] = { "" }, ["Kinmen"] = { "" }, ["Jinsha"] = { "" }, ["Magong"] = { "" }, ["Pengnan"] = { "" }, ["Xiyu"] = { "直升機" }, ["Huxi"] = { "" }, ["Wangan"] = { "" }, ["Cimei"] = { "" }, ["Huayu"] = { "" }, ["Zhongtun"] = { "" }, ["Houliao"] = { "" }, ["Tongliang"] = { "" }, ["Jibei"] = { "" }, ["Malaysia-MN"] = { "" }, ["Melaka"] = { "" }, ["Labuan"] = { "" }, ["Singapore-MN"] = { "" }, ["Philippine-MN"] = { "" }, ["Medan"] = { "" }, ["Seri Begawan"] = { "" }, ["Ho Chi Minh City-MN"] = { "" }, ["Yangon-MN"] = { "" }, ["Longyan"] = { "" }, ["Zhangping"] = { "" }, ["Yongfu"] = { "" }, ["Datian"] = { "" }, ["Datian-GP"] = { "" }, ["Youxi-JM"] = { "" }, ["Youxi-XQ"] = { "" }, ["Shunchang-PS"] = { "" }, ["Pingnan"] = { "" }, ["Pingnan-PT"] = { "" }, ["Pingnan-SJ"] = { "" }, ["Guiping-XW"] = { "" }, ["Guiping-DS"] = { "" }, ["Guilin-MN-BYG"] = { "" }, ["Pingle-MN"] = { "" }, ["Qinzhou-MN"] = { "" }, ["Lechang-TT"] = { "" }, ["Renhua-CSB"] = { "" }, ["Yingde-YZ"] = { "" }, ["Yunan-LT"] = { "" }, ["Hangzhou-PF"] = { "" }, ["Cangnan-MN"] = { "" }, ["Yuhuan-KM"] = { "" }, ["Wenling-RS"] = { "" }, ["Yixing-SB"] = { "" }, ["Langxi-FL"] = { "" }, ["Chaozhou"] = { "" }, ["Raoping-MN-T"] = { "" }, ["Shantou"] = { "" }, ["Chenghai"] = { "" }, ["Chenghai-DX"] = { "" }, ["Chaoyang"] = { "" }, ["Nan'ao-HZ"] = { "" }, ["Nan'ao-YA"] = { "" }, ["Jieyang"] = { "" }, ["Puning"] = { "" }, ["Lufeng"] = { "" }, ["Haifeng"] = { "" }, ["Fengshun-MN-LH"] = { "" }, ["Fengshun-MN-HJ"] = { "" }, ["Yuen Chau Tsai-MN"] = { "" }, ["Sha Tau Kok-MN"] = { "" }, ["Thailand-MN-T"] = { "" }, ["Chiang Mai-MN-T"] = { "" }, ["Hat Yai-MN-T"] = { "" }, ["Cambodia-MN-T"] = { "" }, ["Ho Chi Minh City-MN-T"] = { "" }, ["Vientiane-MN-T"] = { "" }, ["Johor Bahru"] = { "" }, ["Penang-MN-T"] = { "" }, ["Singapore-MN-T"] = { "" }, ["Batam-MN-T"] = { "" }, ["Pontianak-MN-T"] = { "" }, ["Leizhou"] = { "" }, ["Dianbai-XD"] = { "" }, ["Wenchang"] = { "" }, ["Haikou"] = { "" }, ["Chengmai"] = { "" }, ["Qionghai"] = { "" }, ["Wanning"] = { "" }, ["Tunchang"] = { "" }, ["Singapore-MN-H"] = { "" }, ["Belait-MN-H"] = { "" }, ["Putian"] = { "" }, ["Putian-DH"] = { "" }, ["Putian-JK"] = { "" }, ["Putian-NR"] = { "" }, ["Xianyou"] = { "" }, ["Xianyou-FT"] = { "" }, ["Xianyou-YY"] = { "" }, ["Fuding-AY"] = { "" }, ["Shaxi"] = { "" }, ["Sanxiang"] = { "" }, ["Nanlang"] = { "" }, ["Fuzhou"] = { "" }, ["Changle"] = { "" }, ["Lianjiang-MD"] = { "" }, ["Fuqing"] = { "" }, ["Pingtan"] = { "" }, ["Yongtai"] = { "" }, ["Minqing"] = { "" }, ["Gutian"] = { "" }, ["Pingnan-MD"] = { "" }, ["Luoyuan"] = { "" }, ["Fu'an"] = { "" }, ["Ningde"] = { "" }, ["Xiapu"] = { "" }, ["Zherong"] = { "" }, ["Shouning"] = { "" }, ["Zhouning"] = { "" }, ["Fuding"] = { "" }, ["Youxi"] = { "" }, ["Youxi-XY"] = { "" }, ["Youxi-YZ"] = { "" }, ["Youxi-TC"] = { "" }, ["Youxi-ZX"] = { "" }, ["Matsu"] = { "" }, ["Taishun-MD"] = { "" }, ["Cangnan-MD"] = { "" }, ["Guanhaiwei"] = { "" }, ["Singapore-MD-FQ"] = { "" }, ["Sitiawan-MD-GT"] = { "" }, ["Sibu-MD-MQ"] = { "" }, ["Jian'ou"] = { "" }, ["Dikou"] = { "" }, ["Yanping-XY"] = { "" }, ["Songxi"] = { "" }, ["Zhenghe"] = { "" }, ["Zhenqian"] = { "" }, ["Shunchang-YD"] = { "" }, ["Jianyang"] = { "" }, ["Huangkeng"] = { "" }, ["Wuyishan"] = { "" }, ["Shibei"] = { "" }, ["Yong'an"] = { "" }, ["Sanyuan"] = { "" }, ["Shaxian"] = { "" }, ["Yanping-WT"] = { "" }, ["Shaowu"] = { "" }, ["Guangze"] = { "" }, ["Jiangle"] = { "" }, ["Mingxi"] = { "" }, ["Shunchang"] = { "" }, ["Ningde-She"] = { "" }, ["Fu'an-She"] = { "" }, ["Fuding-She"] = { "" }, ["Zhouning-She"] = { "" }, ["Xiapu-She"] = { "" }, ["Shouning-She"] = { "" }, ["Gutian-She"] = { "" }, ["Luoyuan-She"] = { "" }, ["Sanming-She"] = { "" }, ["Shunchang-She"] = { "" }, ["Hua'an-She"] = { "" }, ["Guixi-She"] = { "" }, ["Yanshan-She"] = { "" }, ["Cangnan-She"] = { "" }, ["Jingning-She"] = { "" }, ["Jingning-ZK-She"] = { "" }, ["Lishui-She"] = { "" }, ["Longyou-She"] = { "" }, ["Lin'an-She"] = { "" }, ["Jiande-She"] = { "" }, ["Ningguo-She"] = { "" }, ["Chaozhou-She"] = { "" }, ["Fengshun-She"] = { "" }, ["Guzhang-WX"] = { "" }, ["Yuanling-WX"] = { "" }, ["Luxi-WX"] = { "" }, ["Luxi-WX-LJT"] = { "" }, ["Luxi-WX-LJT-2"] = { "" }, ["Chengbu-WX"] = { "" }, ["Jiande-JXYM"] = { "" }, ["Jinhua-JXYM"] = { "" }, ["Lanxi-JXYM"] = { "" }, ["Tunxi-JXYM"] = { "" }, ["Jiangyong"] = { "" }, ["Dong'an"] = { "" }, ["Qujiang-DC"] = { "" }, ["Wujiang-XY"] = { "" }, ["Zhenjiang-SB"] = { "" }, ["Renhua-ZT"] = { "" }, ["Renhua-ST"] = { "" }, ["Ruyuan-GT"] = { "" }, ["Lechang-CL"] = { "" }, ["Lechang-BX"] = { "" }, ["Lechang-HP"] = { "" }, ["Lechang-GT"] = { "" }, ["Lechang-SX"] = { "" }, ["Lianzhou-XZ"] = { "" }, ["Lianzhou-BA"] = { "" }, ["Lianzhou-YC"] = { "" }, ["Lianzhou-XA"] = { "" }, ["Lianzhou-FY"] = { "" }, } return export 320turn0bvdkd7iogr3j9prnqlrt0cp 伏伏伏 0 408724 2463672 2026-07-20T01:33:55Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-forms}} ==={{section|etym}}=== {{onom|yue}}. ==={{section|pron}}=== {{zh-pron |c=fuk6 fuk6 fuk6 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # {{lb|zh|HKC|neologism}} [[máy bay|Máy bay]] [[trực thăng]]. ===={{section|syn}}==== {{zh-dial|直升機}}” 2463672 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{section|etym}}=== {{onom|yue}}. ==={{section|pron}}=== {{zh-pron |c=fuk6 fuk6 fuk6 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # {{lb|zh|HKC|neologism}} [[máy bay|Máy bay]] [[trực thăng]]. ===={{section|syn}}==== {{zh-dial|直升機}} a5139zdord0dhtpi2sm5swunsp4xixn 直升飛機 0 408725 2463673 2026-07-20T01:35:02Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-forms|s=直升飞机|t2=直昇飛機|type=22}} {{wp|zh:}} ==={{section|pron}}=== {{zh-pron |m=zhíshēng fēijī |c=zik6 sing1 fei1 gei1 |c-t=zet5 sen1 fei1 gei1 |mn=xm:ti̍t-seng hui-ki |w=sh:8zeq sen1 fi1 ci1 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[máy bay|Máy bay]] [[trực thăng]] {{defdate|từ thập niên 1920}} ===={{section|syn}}==== {{zh-dial|直升機}}” 2463673 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|s=直升飞机|t2=直昇飛機|type=22}} {{wp|zh:}} ==={{section|pron}}=== {{zh-pron |m=zhíshēng fēijī |c=zik6 sing1 fei1 gei1 |c-t=zet5 sen1 fei1 gei1 |mn=xm:ti̍t-seng hui-ki |w=sh:8zeq sen1 fi1 ci1 |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[máy bay|Máy bay]] [[trực thăng]] {{defdate|từ thập niên 1920}} ===={{section|syn}}==== {{zh-dial|直升機}} d2rzz16r65k1a9bbgdnqqqh1sb8svxy 直升飞机 0 408726 2463674 2026-07-20T01:35:24Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-see|直升飛機}}” 2463674 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|直升飛機}} r4z63o8e7h1gbyw97as55g7uyoolqvb 直昇飛機 0 408727 2463675 2026-07-20T01:35:46Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-see|直升飛機}}” 2463675 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|直升飛機}} r4z63o8e7h1gbyw97as55g7uyoolqvb тікұшақ 0 408728 2463676 2026-07-20T01:37:20Z Hiyuune 50834 + kk 2463676 wikitext text/x-wiki =={{langname|kk}}== {{kk-regional|тікұшақ|تىكۇشاق}} {{wp|kk:}} ==={{section|etym}}=== {{compound|kk|тік|ұшақ}}. ==={{section|n}}=== {{kk-noun}} # [[máy bay|Máy bay]] [[trực thăng]]. ===={{section|decl}}==== {{kk-noun-c|а|қ}} ih1l266mpa8v2u9f0v1fy5mzpk1fw2v héileacaptar 0 408729 2463677 2026-07-20T01:38:36Z Hiyuune 50834 + ga 2463677 wikitext text/x-wiki =={{langname|ga}}== ==={{section|etym}}=== Từ {{borrowed|ga|en|helicopter}}, từ {{der|ga|fr|hélicoptère}}, từ {{der|ga|el|-}} {{af|grc|ἕλιξ|πτερόν|nocat=1}} ==={{section|pron}}=== * {{IPA4|ga|/ˈheːlʲəkəpˠt̪ˠəɾˠ/}} ==={{section|noun}}=== {{ga-noun|m|héileacaptair|héileacaptair}} # [[máy bay|Máy bay]] [[trực thăng]]. ===={{section|decl}}==== {{ga-decl-m1|h|éileacaptar|éileacaptair}} ==={{section|mut}}=== {{ga-mut}} ==={{section|further}}=== * {{R:ga:Ó Dónaill}} * {{R:ga:EID}} * {{R:ga:NEID}} hmmde6stv6fvm86vdyvmnnuvppi9v9b чархбол 0 408730 2463678 2026-07-20T01:39:40Z Hiyuune 50834 + tg 2463678 wikitext text/x-wiki =={{langname|tg}}== ==={{section|etym}}=== Từ {{af|tg|чарх|бол}}. {{calque|tg|fr|hélicoptère}}. ==={{section|n}}=== {{tg-noun|fa=چرخ‌بال}} # [[máy bay|Máy bay]] [[trực thăng]]. ===={{section|decl}}==== {{tg-infl-noun}} nt5lj789t2wxoqq1jz1u97ytl6n6wzc þyrla 0 408731 2463679 2026-07-20T01:44:52Z Hiyuune 50834 Trang mới: “=={{langname|is}}== {{wp|is:}} ==={{section|pron}}=== * {{is-IPA}} *: {{rhymes|is|ɪrtla|s=2}} ==={{section|etym}} 1=== Từ {{inh|is|gem-pro|*þwerilōną}}, từ {{mention|gem-pro|*þwerilaz}} (từ đây có tiếng Iceland {{mention|is|þyrill}}). ===={{section|v}}==== {{is-verb-weak|þyrlaði|þyrlað}} # [[cuộn|Cuộn]], [[xoáy]]; [[cuốn]] [[đi]], [[xoáy]] [[đi]]. ====={{section|forms}}===== {{is-conj-w4|þ|y|rl}} ==={{section|etym}} 2=== Từ {{mentio…” 2463679 wikitext text/x-wiki =={{langname|is}}== {{wp|is:}} ==={{section|pron}}=== * {{is-IPA}} *: {{rhymes|is|ɪrtla|s=2}} ==={{section|etym}} 1=== Từ {{inh|is|gem-pro|*þwerilōną}}, từ {{mention|gem-pro|*þwerilaz}} (từ đây có tiếng Iceland {{mention|is|þyrill}}). ===={{section|v}}==== {{is-verb-weak|þyrlaði|þyrlað}} # [[cuộn|Cuộn]], [[xoáy]]; [[cuốn]] [[đi]], [[xoáy]] [[đi]]. ====={{section|forms}}===== {{is-conj-w4|þ|y|rl}} ==={{section|etym}} 2=== Từ {{mention|is|þyrill}} (so sánh với {{mention|is|þyrilvængja||máy bay trực thăng}}), có thể do sự ảnh hưởng thêm động từ {{mention|is|þyrla}}. ===={{section|n}}==== {{is-noun|@@}} # [[máy bay|Máy bay]] [[trực thăng]]. #: {{syn|is|þyrilvængja|kofti}} ====={{section|decl}}===== {{is-ndecl|f.genplna:a}} ====={{section|drv}}===== * {{l|is|þyrlupallur}} * {{l|is|þyrluvöllur}} to7kgfvr3z9bggxjoevj3db2exx8cb0 þyrlar 0 408732 2463680 2026-07-20T01:46:22Z Hiyuune 50834 + is 2463680 wikitext text/x-wiki =={{langname|is}}== ==={{ĐM|v}}=== {{head|is|Biến thể hình thái động từ}} # {{infl of|is|þyrla||ind|pres|act|ở|2//3|s}} gm5wh8lma61776bbldb6pwewb0uy2tp þyrlum 0 408733 2463681 2026-07-20T01:49:15Z Hiyuune 50834 + is 2463681 wikitext text/x-wiki =={{langname|is}}== ==={{ĐM|v}}=== {{head|is|Biến thể hình thái động từ}} # {{infl of|is|þyrla||ind//sub|pres|act|ở|1|p}} ==={{ĐM|n}}=== {{head|is|Biến thể hình thái danh từ}} # {{infl of|is|þyrla||dat|indef|p}} hqpfh10cc3xitogs00wimaqske7jt52 煙霞 0 408734 2463682 2026-07-20T01:50:59Z Hiyuune 50834 + zh 2463682 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|s=烟霞}} ==={{ĐM|pron}}=== {{zh-pron |m=yānxiá |c=jin1 haa4 |mn=qz,xm:ian-hâ/zz:ian-hêe |cat=n }} ==={{ĐM|n}}=== {{head|zh|Danh từ}} # [[sương mù|Sương mù]], [[mù mịt]]. ===={{ĐM|drv}}==== {{col3|zh|堅臥煙霞|煙霞痼疾|煙霞癖|煙霞外人}} mg1r8njalbzj8sfdqqtrnyqfscpyryu 孤兒 0 408735 2463684 2026-07-20T01:53:51Z Hiyuune 50834 + zh 2463684 wikitext text/x-wiki {{also|孤儿|孤児}} =={{langname|zh}}== {{zh-forms|s=孤儿}} ==={{ĐM|pron}}=== {{zh-pron |m=gū'ér |m-s=gu1er2 |c=gu1 ji4 |g=gu1 eo4 |h=pfs=kû-yì;hrs=h:guˋ rhi |j=gu1 er1 |mn=kh,zz:ko͘-jî/tp,xm,qz:ko͘-lî |mn-t=gou1 ri5/gu1 ri5 |mn-t_note=gu1 ri5 - Chiang Mai, Hat Yai |x=gu1 e2 |mc=y,1 |oc=y;1,2 |cat=n }} ==={{ĐM|n}}=== {{head|zh|Danh từ}} # [[mồ côi|Mồ côi]], [[cô nhi]]. ===={{ĐM|syn}}==== {{zh-dial}} ===={{ĐM|drv}}==== {{col3|zh|孤兒院|孤兒仔|孤兒作品|事實孤兒|孤兒藥}} ===={{ĐM|desc}}==== {{CJKV||j=孤%児|こ%じ|고아|cô nhi}} 64m4qfns1mix9u2mb64oifteunl4qqi Mô đun:zh/data/och-pron-ZS/孤 828 408736 2463686 2026-07-20T01:54:57Z Hiyuune 50834 Trang mới: “return { { "4347", "瓜", "魚", "0", "孤", "kʷaː", "" }, }” 2463686 Scribunto text/plain return { { "4347", "瓜", "魚", "0", "孤", "kʷaː", "" }, } mondz8wpby7cl3pq8jflg1rfsmxgy50 Mô đun:zh/data/och-pron-ZS/兒 828 408737 2463687 2026-07-20T01:55:47Z Hiyuune 50834 Trang mới: “return { { "2748", "兒", "支", "0", "倪", "ŋeː", "" }, { "2757", "兒", "支", "0", "兒", "ŋje", "" }, }” 2463687 Scribunto text/plain return { { "2748", "兒", "支", "0", "倪", "ŋeː", "" }, { "2757", "兒", "支", "0", "兒", "ŋje", "" }, } tp2b3u4ice6g6l90slc3eyo4mwxbpv5 Mô đun:zh/data/ltc-pron/孤 828 408738 2463688 2026-07-20T01:56:53Z Hiyuune 50834 Trang mới: “return { "見模一開 平古胡" }” 2463688 Scribunto text/plain return { "見模一開 平古胡" } qxni2j22b7hm0wvp2egs632bp3k6jrj Mô đun:zh/data/ltc-pron/兒 828 408739 2463689 2026-07-20T01:57:34Z Hiyuune 50834 Trang mới: “return { "日支三開 平汝移", "疑齊四開 平五稽" }” 2463689 Scribunto text/plain return { "日支三開 平汝移", "疑齊四開 平五稽" } j8kvd0l5hygh0d4nzoam9ye9amx59vh 0 408740 2463694 2026-07-20T02:09:39Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[một|Một]] phần [[năm]]. ===={{section|rel}}==== {{list:phân số/mul}}” 2463694 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[một|Một]] phần [[năm]]. ===={{section|rel}}==== {{list:phân số/mul}} 5ldvm134xs7p3u0uu2x45rv5p2ep60f 0 408741 2463696 2026-07-20T02:10:50Z Hiyuune 50834 + mul 2463696 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[hai|Hai]] phần [[năm]]. ===={{section|rel}}==== {{list:phân số/mul}} b1iz0f066har2c1lrlnpv60lc1fdonl 0 408742 2463697 2026-07-20T02:14:07Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # [[một|Một]] phần [[mười]]. ===={{section|rel}}==== {{list:phân số/mul}}” 2463697 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # [[một|Một]] phần [[mười]]. ===={{section|rel}}==== {{list:phân số/mul}} 86499oiubwl686o9j2qsxzajyxu3vgm 0 408743 2463699 2026-07-20T02:17:05Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[ba|Ba]] phần [[năm]]. ===={{section|rel}}==== {{list:phân số/mul}}” 2463699 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|num}}=== {{head|mul|Ký tự số}} # {{lb|mul|mathematics}} [[ba|Ba]] phần [[năm]]. ===={{section|rel}}==== {{list:phân số/mul}} 5pjl6djovhfqvvexr4ed96xv9u8yq30 míliki 0 408744 2463703 2026-07-20T03:05:09Z Kelly zhrm 58416 Trang mới: “{{also|miliki}} =={{langname|ln}}== ==={{ĐM|etym}}=== Xem tiếng Lingala [[miliki]]. ==={{ĐM|n}}=== {{ln-noun|4}} # [[sữa|Sữa]]. #: {{syn|ln|mabɛ́lɛ}} {{C|ln|Sữa}}” 2463703 wikitext text/x-wiki {{also|miliki}} =={{langname|ln}}== ==={{ĐM|etym}}=== Xem tiếng Lingala [[miliki]]. ==={{ĐM|n}}=== {{ln-noun|4}} # [[sữa|Sữa]]. #: {{syn|ln|mabɛ́lɛ}} {{C|ln|Sữa}} smjy3xstj7yotlg41ye0fso765bfewz Bản mẫu:ln-noun 10 408745 2463704 2026-07-20T03:05:49Z Kelly zhrm 58416 Trang mới: “<includeonly>{{#invoke:ln-headword|noun}}</includeonly><noinclude>{{documentation}}</noinclude>” 2463704 wikitext text/x-wiki <includeonly>{{#invoke:ln-headword|noun}}</includeonly><noinclude>{{documentation}}</noinclude> mpzf21rvzjsnxc84czy8z6qh9j2crk5 Thể loại:Danh từ tiếng Lingala 14 408746 2463705 2026-07-20T03:06:38Z Kelly zhrm 58416 Trang mới: “{{auto cat}}” 2463705 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx gwagwa 0 408747 2463706 2026-07-20T03:09:50Z Kelly zhrm 58416 Trang mới: “=={{langname|ln}}== [[File:Territoire de Beni, Nord Kivu, RD Congo, 14 avril 2014 - Patrouille des Casques bleus après la reprise du pont de Similiki. (16260338811).jpg|thumb|Gwagwa]] ==={{ĐM|alt}}=== * {{alt|ln|gbagba}} ==={{ĐM|pron}}=== * {{IPA4|ln|/ɡwàɡwà/}} ==={{ĐM|n}}=== {{ln-noun|9}} # [[cầu|Cầu]]. ==={{ĐM|ref}}=== * {{R:ln:Dictionnaire lingala français|page=82}} {{C|ln|Cầu}}” 2463706 wikitext text/x-wiki =={{langname|ln}}== [[File:Territoire de Beni, Nord Kivu, RD Congo, 14 avril 2014 - Patrouille des Casques bleus après la reprise du pont de Similiki. (16260338811).jpg|thumb|Gwagwa]] ==={{ĐM|alt}}=== * {{alt|ln|gbagba}} ==={{ĐM|pron}}=== * {{IPA4|ln|/ɡwàɡwà/}} ==={{ĐM|n}}=== {{ln-noun|9}} # [[cầu|Cầu]]. ==={{ĐM|ref}}=== * {{R:ln:Dictionnaire lingala français|page=82}} {{C|ln|Cầu}} phufiu30chtyw0nv210w9mkicje4no7 Bản mẫu:R:ln:Dictionnaire lingala français 10 408748 2463707 2026-07-20T03:11:11Z Kelly zhrm 58416 Trang mới: “{{#invoke:quote|call_template |template=cite-book |fr |title=Dictionnaire lingala-falansé et français-lingala |author=Ashem Tem Kawata |authorlink=ln:Ashem Tem Kawata |year=2004 |publisher=w:Éditions Karthala |isbn=9782811112103 |pageparam=page }}<noinclude>{{reference template cat|ln}}</noinclude>” 2463707 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |fr |title=Dictionnaire lingala-falansé et français-lingala |author=Ashem Tem Kawata |authorlink=ln:Ashem Tem Kawata |year=2004 |publisher=w:Éditions Karthala |isbn=9782811112103 |pageparam=page }}<noinclude>{{reference template cat|ln}}</noinclude> kur4w2jz0jca2bjb10txbdemvmtpyzu likútu 0 408749 2463708 2026-07-20T03:19:20Z Kelly zhrm 58416 Trang mới: “{{also|likutu}} =={{langname|ln}}== ==={{ĐM|etym}}=== {{bor+|ln|kg|kútu}}. ==={{ĐM|n}}=== {{ln-noun|5}} # [[tai|Tai]]. #: {{syn|ln|litói}} {{C|ln|Bộ phận cơ thể}}” 2463708 wikitext text/x-wiki {{also|likutu}} =={{langname|ln}}== ==={{ĐM|etym}}=== {{bor+|ln|kg|kútu}}. ==={{ĐM|n}}=== {{ln-noun|5}} # [[tai|Tai]]. #: {{syn|ln|litói}} {{C|ln|Bộ phận cơ thể}} dcgcfpt1lpotmub7hs0z4rbikc0apmk သိပ်း 0 408750 2463711 2026-07-20T03:25:48Z Hiyuune 50834 Trang mới: “=={{langname|shn}}== {{cardinalbox|shn|႙|႑႐|႑႑|ၵဝ်ႈ|သိပ်းဢဵတ်း|ord=တီႈသိပ်း}} ==={{section|etym}}=== Từ {{der|shn|ltc|-}} {{ltc-l|十|[[mười]]}}. Cùng gốc với {{cog|th|สิบ}}, {{cog|nod|ᩈᩥ᩠ᨷ}}, {{cog|lo|ສິບ}}, {{cog|khb|ᦉᦲᧇ}}, {{cog|blt|ꪎꪲꪚ}}, {{cog|tdd|ᥔᥤᥙᥴ}}, {{cog|aho|𑜏𑜢𑜆𑜫}}, {{cog|pcc|xib}}, {{cog|za|cib}}, {{cog|skb|ซิ̄บ}}. ==={{section|pron}}==…” 2463711 wikitext text/x-wiki =={{langname|shn}}== {{cardinalbox|shn|႙|႑႐|႑႑|ၵဝ်ႈ|သိပ်းဢဵတ်း|ord=တီႈသိပ်း}} ==={{section|etym}}=== Từ {{der|shn|ltc|-}} {{ltc-l|十|[[mười]]}}. Cùng gốc với {{cog|th|สิบ}}, {{cog|nod|ᩈᩥ᩠ᨷ}}, {{cog|lo|ສິບ}}, {{cog|khb|ᦉᦲᧇ}}, {{cog|blt|ꪎꪲꪚ}}, {{cog|tdd|ᥔᥤᥙᥴ}}, {{cog|aho|𑜏𑜢𑜆𑜫}}, {{cog|pcc|xib}}, {{cog|za|cib}}, {{cog|skb|ซิ̄บ}}. ==={{section|pron}}=== {{shn-pron|audio=shn-{{PAGENAME}}.wav}} ==={{section|num}}=== {{head|shn|Số từ}} # {{cln|shn|Số đếm}} [[mười|Mười]]. okyoih48cgkbq3xqc7h7x5vv4pp1l8r cib 0 408751 2463712 2026-07-20T03:37:41Z Hiyuune 50834 Trang mới: “{{also|CIB|cíb}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:[['''Ci''']] [[G'''b'''e]]}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|3}} =={{langname|za}}== {{cardinalbox|za|9|10|11|gouj|cib it|ord=}} ==={{section|etym}}=== Từ {{der|za|ltc|-}} {{ltc-l|十|[[mười]]}}. Cùng gốc với {{cog|th|สิบ}}, {{cog|nod|ᩈᩥ᩠ᨷ}}, {{cog|lo|ສິບ}}, {{cog|khb|ᦉᦲᧇ}}, {{cog|blt|ꪎꪲꪚ}}, {{cog|shn|သိပ်း}}, {{cog|td…” 2463712 wikitext text/x-wiki {{also|CIB|cíb}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:[['''Ci''']] [[G'''b'''e]]}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|3}} =={{langname|za}}== {{cardinalbox|za|9|10|11|gouj|cib it|ord=}} ==={{section|etym}}=== Từ {{der|za|ltc|-}} {{ltc-l|十|[[mười]]}}. Cùng gốc với {{cog|th|สิบ}}, {{cog|nod|ᩈᩥ᩠ᨷ}}, {{cog|lo|ສິບ}}, {{cog|khb|ᦉᦲᧇ}}, {{cog|blt|ꪎꪲꪚ}}, {{cog|shn|သိပ်း}}, {{cog|tdd|ᥔᥤᥙᥴ}}, {{cog|aho|𑜏𑜢𑜆𑜫}}, {{cog|pcc|xib}}, {{cog|skb|ซิ̄บ}}. ==={{section|pron}}=== * {{za-pron}} ==={{section|num}}=== {{za-head|numeral|十}} # [[mười|Mười]]. k88r24oqemtvxuaewq61eyqr98e25f2 Thể loại:Yêu cầu chuyển tự mục từ tiếng Korku 14 408752 2463713 2026-07-20T04:33:25Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463713 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Yêu cầu liên quan đến tiếng Korku 14 408753 2463714 2026-07-20T04:37:24Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463714 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Bảo trì mục từ tiếng Korku 14 408754 2463715 2026-07-20T04:38:09Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2463715 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx masaki 0 408755 2463716 2026-07-20T04:49:13Z WhoAlone 40420 Trang mới: “{{also|Masaki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|まさき}}” 2463716 wikitext text/x-wiki {{also|Masaki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|まさき}} lcc4s7xiih293gzuxv2r3a1b0royadm Masaki 0 408756 2463717 2026-07-20T04:49:41Z WhoAlone 40420 Trang mới: “{{also|masaki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|まさき}}” 2463717 wikitext text/x-wiki {{also|masaki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|まさき}} 82arkfctv7j9nrbnyj6lc5c7dmgm6sj 正木 0 408757 2463718 2026-07-20T04:53:39Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|まさ|き|yomi=k|alt=柾}} ==={{ĐM|noun}}=== {{ja-noun|まさき|マサキ}} # Japanese spindletree {{taxlink|Euonymus japonicus|species}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{surname|ja|sort=まさき}} ==={{ĐM|ref}}=== * {{R:Kanjipedia Kotoba|0003832700}}” 2463718 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|まさ|き|yomi=k|alt=柾}} ==={{ĐM|noun}}=== {{ja-noun|まさき|マサキ}} # Japanese spindletree {{taxlink|Euonymus japonicus|species}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{surname|ja|sort=まさき}} ==={{ĐM|ref}}=== * {{R:Kanjipedia Kotoba|0003832700}} hik45pvkloh1cqsdtr5ziz9k11rft5m 2463720 2463718 2026-07-20T04:58:25Z WhoAlone 40420 2463720 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|まさ|き|yomi=k|alt=柾}} ==={{ĐM|noun}}=== {{ja-noun|まさき|マサキ}} # {{taxlink|Euonymus japonicus|species}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{surname|ja|sort=まさき}} ==={{ĐM|ref}}=== * {{R:Kanjipedia Kotoba|0003832700}} hzf19rtorqu5eahdb30u1cpnpyxm71f マサキ 0 408758 2463719 2026-07-20T04:58:09Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|柾|正木}}” 2463719 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|柾|正木}} 2spin83lqjrzksklmbaban1zzhe0itz 真崎 0 408759 2463721 2026-07-20T05:03:14Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|ま|さき|k2=ざき|yomi=k|r=y}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{surname|ja|sort=まさき}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まざき}} # {{surname|ja|sort=まざき}}” 2463721 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|ま|さき|k2=ざき|yomi=k|r=y}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{surname|ja|sort=まさき}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まざき}} # {{surname|ja|sort=まざき}} 7hpsxirlqtdh23qnv7vmf8wbucvrzyy まざき 0 408760 2463722 2026-07-20T05:03:29Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|真崎}}” 2463722 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|真崎}} 6tpx4qxwujlhdbhlkx8slzphisktygw 眞崎 0 408761 2463723 2026-07-20T05:04:01Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|真崎}}” 2463723 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|真崎}} 6tpx4qxwujlhdbhlkx8slzphisktygw 正喜 0 408762 2463724 2026-07-20T05:05:37Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}}” 2463724 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}} 6dl1a9oboif0og5tbrd7ztp94di5zx5 昌輝 0 408763 2463725 2026-07-20T05:08:00Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}}” 2463725 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}} 6dl1a9oboif0og5tbrd7ztp94di5zx5 овьца 0 408764 2463727 2026-07-20T08:13:26Z Kelly zhrm 58416 Trang mới: “{{also|овъца}} =={{langname|cu}}== ==={{ĐM|alt}}=== * Glagolitic: {{l|cu|ⱁⰲⱐⱌⰰ}} ==={{ĐM|etym}}=== {{dercat|cu|ine-bsl-pro|ine-pro|inh=1}} Từ {{inh|cu|sla-pro|*ovьca}}, từ {{inh|cu|ine-bsl-pro|*áwis}}, từ {{inh|cu|ine-pro|*h₂ówis}}. ==={{ĐM|n}}=== {{cu-noun|f}} # [[cừừ|Cừu]]. ===={{ĐM|decl}}==== {{cu-decl-noun-a|овь|ц}} {{C|cu|Cừu}}” 2463727 wikitext text/x-wiki {{also|овъца}} =={{langname|cu}}== ==={{ĐM|alt}}=== * Glagolitic: {{l|cu|ⱁⰲⱐⱌⰰ}} ==={{ĐM|etym}}=== {{dercat|cu|ine-bsl-pro|ine-pro|inh=1}} Từ {{inh|cu|sla-pro|*ovьca}}, từ {{inh|cu|ine-bsl-pro|*áwis}}, từ {{inh|cu|ine-pro|*h₂ówis}}. ==={{ĐM|n}}=== {{cu-noun|f}} # [[cừừ|Cừu]]. ===={{ĐM|decl}}==== {{cu-decl-noun-a|овь|ц}} {{C|cu|Cừu}} e7cy98hergtud3todib1tj19qk3q5s9 2463730 2463727 2026-07-20T08:15:30Z Kelly zhrm 58416 2463730 wikitext text/x-wiki {{also|овъца}} =={{langname|cu}}== ==={{ĐM|alt}}=== * Glagolitic: {{l|cu|ⱁⰲⱐⱌⰰ}} ==={{ĐM|etym}}=== {{dercat|cu|ine-bsl-pro|ine-pro|inh=1}} Từ {{inh|cu|sla-pro|*ovьca}}, từ {{inh|cu|ine-bsl-pro|*áwis}}, từ {{inh|cu|ine-pro|*h₂ówis}}. ==={{ĐM|n}}=== {{cu-noun|f}} # [[cừu|Cừu]]. ===={{ĐM|decl}}==== {{cu-decl-noun-a|овь|ц}} {{C|cu|Cừu}} oy3t0k8bufwe705cucym0hiqx7mdhil 0 408765 2463732 2026-07-20T08:17:07Z Lcsnes 40261 Trang mới: “{{minitoc}} {{-Cans-}} {{character info}} ==={{ĐM|syllable}}=== {{mul-letter}} #[[chữ cái|Chữ cái]] [[âm tiết]] ''pi'' [[trong]] [[bảng]] chữ cái Âm tiết Canada. =={{langname|scs}}== ==={{ĐM|pron}}=== *{{IPA4|scs|[pi]}} ==={{ĐM|syllable}}=== {{head|scs|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Bắc Slavey. ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Bắc Slavey|list={{l-self|scs|ᐊ|tr=-}}, {{l-self|scs|ᐁ|tr=-}…” 2463732 wikitext text/x-wiki {{minitoc}} {{-Cans-}} {{character info}} ==={{ĐM|syllable}}=== {{mul-letter}} #[[chữ cái|Chữ cái]] [[âm tiết]] ''pi'' [[trong]] [[bảng]] chữ cái Âm tiết Canada. =={{langname|scs}}== ==={{ĐM|pron}}=== *{{IPA4|scs|[pi]}} ==={{ĐM|syllable}}=== {{head|scs|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Bắc Slavey. ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Bắc Slavey|list={{l-self|scs|ᐊ|tr=-}}, {{l-self|scs|ᐁ|tr=-}}, {{l-self|scs|ᐃ|tr=-}}, {{l-self|scs|ᐅ|tr=-}}, {{l-self|scs|ᐊˋ|tr=-}}, {{l-self|scs|ᐁˋ|tr=-}}, {{l-self|scs|ᐃˋ|tr=-}}, {{l-self|scs|ᐅˋ|tr=-}}, {{l-self|scs|ᐊˈ|tr=-}}, {{l-self|scs|ᐁˈ|tr=-}}, {{l-self|scs|ᐃˈ|tr=-}}, {{l-self|scs|ᐅˈ|tr=-}}, {{l-self|scs|ᑋᐊ|tr=-}}, {{l-self|scs|ᑋᐁ|tr=-}}, {{l-self|scs|ᑋᐃ|tr=-}}, {{l-self|scs|ᑋᐅ|tr=-}}, {{l-self|scs|ᐊᑋ|tr=-}}, {{l-self|scs|ᑦᐊ|tr=-}}, {{l-self|scs|ᑦᐁ|tr=-}}, {{l-self|scs|ᑦᐃ|tr=-}}, {{l-self|scs|ᑦᐅ|tr=-}}, {{l-self|scs|ᐥᐊ|tr=-}}, {{l-self|scs|ᐥᐁ|tr=-}}, {{l-self|scs|ᐥᐃ|tr=-}}, {{l-self|scs|ᐥᐅ|tr=-}}, {{l-self|scs|ᐊᐧ|tr=-}}, {{l-self|scs|ᐁᐧ|tr=-}}, {{l-self|scs|ᐃᐧ|tr=-}}, {{l-self|scs|ᐅᐧ|tr=-}}, {{l-self|scs|ᐊᐤ|tr=-}}, {{l-self|scs|ᐸ|tr=-}}, {{l-self|scs|ᐯ|tr=-}}, {{l-self|scs|ᐱ|tr=-}}, {{l-self|scs|ᐳ|tr=-}}, {{l-self|scs|ᐊˈ|tr=-}}, {{l-self|scs|ᑕ|tr=-}}, {{l-self|scs|ᑌ|tr=-}}, {{l-self|scs|ᑎ|tr=-}}, {{l-self|scs|ᑐ|tr=-}}, {{l-self|scs|ᐊᐟ|tr=-}}, {{l-self|scs|ᑪ|tr=-}}, {{l-self|scs|ᑧ|tr=-}}, {{l-self|scs|ᑨ|tr=-}}, {{l-self|scs|ᑩ|tr=-}}, {{l-self|scs|ᑲ|tr=-}}, {{l-self|scs|ᑫ|tr=-}}, {{l-self|scs|ᑭ|tr=-}}, {{l-self|scs|ᑯ|tr=-}}, {{l-self|scs|ᐊˋ|tr=-}}, {{l-self|scs|ᑦᑲ|tr=-}}, {{l-self|scs|ᑦᑫ|tr=-}}, {{l-self|scs|ᑦᑭ|tr=-}}, {{l-self|scs|ᑦᑯ|tr=-}}, {{l-self|scs|ᒈ|tr=-}}, {{l-self|scs|ᒅ|tr=-}}, {{l-self|scs|ᒆ|tr=-}}, {{l-self|scs|ᒇ|tr=-}}, {{l-self|scs|ᕍ|tr=-}}, {{l-self|scs|ᕃ|tr=-}}, {{l-self|scs|ᕄ|tr=-}}, {{l-self|scs|ᕊ|tr=-}}, {{l-self|scs|ᐊᔆ|tr=-}}, {{l-self|scs|ᑦᕍ|tr=-}}, {{l-self|scs|ᑦᕃ|tr=-}}, {{l-self|scs|ᑦᕄ|tr=-}}, {{l-self|scs|ᑦᕊ|tr=-}}, {{l-self|scs|ᐟᕍ|tr=-}}, {{l-self|scs|ᐟᕃ|tr=-}}, {{l-self|scs|ᐟᕄ|tr=-}}, {{l-self|scs|ᐟᕊ|tr=-}}, {{l-self|scs|ᒪ|tr=-}}, {{l-self|scs|ᒣ|tr=-}}, {{l-self|scs|ᒥ|tr=-}}, {{l-self|scs|ᒧ|tr=-}}, {{l-self|scs|ᐊᑦ|tr=-}}, {{l-self|scs|ᓇ|tr=-}}, {{l-self|scs|ᓀ|tr=-}}, {{l-self|scs|ᓂ|tr=-}}, {{l-self|scs|ᓄ|tr=-}}, {{l-self|scs|ᐊᐣ|tr=-}}, {{l-self|scs|ᖍ|tr=-}}, {{l-self|scs|ᖊ|tr=-}}, {{l-self|scs|ᖋ|tr=-}}, {{l-self|scs|ᖌ|tr=-}}, {{l-self|scs|ᐊᙆ|tr=-}}, {{l-self|scs|ᓴ|tr=-}}, {{l-self|scs|ᓭ|tr=-}}, {{l-self|scs|ᓯ|tr=-}}, {{l-self|scs|ᓱ|tr=-}}, {{l-self|scs|ᐊᐢ|tr=-}}, {{l-self|scs|ᐟᓴ|tr=-}}, {{l-self|scs|ᐟᓭ|tr=-}}, {{l-self|scs|ᐟᓯ|tr=-}}, {{l-self|scs|ᐟᓱ|tr=-}}, {{l-self|scs|ᔭ|tr=-}}, {{l-self|scs|ᔦ|tr=-}}, {{l-self|scs|ᔨ|tr=-}}, {{l-self|scs|ᔪ|tr=-}}, {{l-self|scs|ᐊᕀ|tr=-}}, {{l-self|scs|ᘔ|tr=-}}, {{l-self|scs|ᘚ|tr=-}}, {{l-self|scs|ᘛ|tr=-}}, {{l-self|scs|ᘕ|tr=-}}, {{l-self|scs|ᐟᘔ|tr=-}}, {{l-self|scs|ᐟᘚ|tr=-}}, {{l-self|scs|ᐟᘛ|tr=-}}, {{l-self|scs|ᐟᘕ|tr=-}}, {{l-self|scs|ᗴ|tr=-}}, {{l-self|scs|ᗯ|tr=-}}, {{l-self|scs|ᗰ|tr=-}}, {{l-self|scs|ᗱ|tr=-}}, {{l-self|scs|ᐟᗴ|tr=-}}, {{l-self|scs|ᐟᗯ|tr=-}}, {{l-self|scs|ᐟᗰ|tr=-}}, {{l-self|scs|ᐟᗱ|tr=-}}, {{l-self|scs|ᒐ|tr=-}}, {{l-self|scs|ᒉ|tr=-}}, {{l-self|scs|ᒋ|tr=-}}, {{l-self|scs|ᒍ|tr=-}}, {{l-self|scs|ᐊF|tr=-}}, {{l-self|scs|ᐊV|tr=-}}, {{l-self|scs|ᐟᒐ|tr=-}}, {{l-self|scs|ᐟᒉ|tr=-}}, {{l-self|scs|ᐟᒋ|tr=-}}, {{l-self|scs|ᐟᒍ|tr=-}}, {{l-self|scs|ᕮ|tr=-}}, {{l-self|scs|ᕫ|tr=-}}, {{l-self|scs|ᕬ|tr=-}}, {{l-self|scs|ᕭ|tr=-}}, {{l-self|scs|ᕳ|tr=-}}, {{l-self|scs|ᕰ|tr=-}}, {{l-self|scs|ᕱ|tr=-}}, {{l-self|scs|ᕲ|tr=-}}}} =={{langname|crx}}== ==={{ĐM|pron}}=== *{{IPA4|crx|[ho]}} ==={{ĐM|syllable}}=== {{head|crx|Chữ cái|tr=ho}} #Chữ cái âm tiết ''ho'' trong tiếng Carrier. ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Carrier|list={{l-self|crx|ᐁ|tr=-}}, {{l-self|crx|ᐃ|tr=-}}, {{l-self|crx|ᐅ|tr=-}}, {{l-self|crx|ᐈ|tr=-}}, {{l-self|crx|ᐉ|tr=-}}, {{l-self|crx|ᐊ|tr=-}}, {{l-self|crx|ᐧᐁ|tr=-}}, {{l-self|crx|ᐧᐃ|tr=-}}, {{l-self|crx|ᐧᐅ|tr=-}}, {{l-self|crx|ᐧᐈ|tr=-}}, {{l-self|crx|ᐧᐉ|tr=-}}, {{l-self|crx|ᐧᐊ|tr=-}}, {{l-self|crx|ᐧ|tr=-}}, {{l-self|crx|ᐯ|tr=-}}, {{l-self|crx|ᐱ|tr=-}}, {{l-self|crx|ᐳ|tr=-}}, {{l-self|crx|ᐶ|tr=-}}, {{l-self|crx|ᐷ|tr=-}}, {{l-self|crx|ᐸ|tr=-}}, {{l-self|crx|ᑋ|tr=-}}, {{l-self|crx|ᗨ|tr=-}}, {{l-self|crx|ᗩ|tr=-}}, {{l-self|crx|ᗪ|tr=-}}, {{l-self|crx|ᗫ|tr=-}}, {{l-self|crx|ᗬ|tr=-}}, {{l-self|crx|ᗭ|tr=-}}, {{l-self|crx|ᗮ|tr=-}}, {{l-self|crx|ᗄ|tr=-}}, {{l-self|crx|ᗅ|tr=-}}, {{l-self|crx|ᗆ|tr=-}}, {{l-self|crx|ᗇ|tr=-}}, {{l-self|crx|ᗈ|tr=-}}, {{l-self|crx|ᗉ|tr=-}}, {{l-self|crx|ᐥ|tr=-}}, {{l-self|crx|ᗊ|tr=-}}, {{l-self|crx|ᗋ|tr=-}}, {{l-self|crx|ᗌ|tr=-}}, {{l-self|crx|ᗍ|tr=-}}, {{l-self|crx|ᗎ|tr=-}}, {{l-self|crx|ᗏ|tr=-}}, {{l-self|crx|ᐦ|tr=-}}, {{l-self|crx|ᗐ|tr=-}}, {{l-self|crx|ᗑ|tr=-}}, {{l-self|crx|ᗒ|tr=-}}, {{l-self|crx|ᗓ|tr=-}}, {{l-self|crx|ᗔ|tr=-}}, {{l-self|crx|ᗕ|tr=-}}, {{l-self|crx|ᗖ|tr=-}}, {{l-self|crx|ᗗ|tr=-}}, {{l-self|crx|ᗘ|tr=-}}, {{l-self|crx|ᗙ|tr=-}}, {{l-self|crx|ᗚ|tr=-}}, {{l-self|crx|ᗛ|tr=-}}, {{l-self|crx|ᑌ|tr=-}}, {{l-self|crx|ᑎ|tr=-}}, {{l-self|crx|ᑐ|tr=-}}, {{l-self|crx|ᑓ|tr=-}}, {{l-self|crx|ᑔ|tr=-}}, {{l-self|crx|ᑕ|tr=-}}, {{l-self|crx|ᐪ|tr=-}}, {{l-self|crx|ᗜ|tr=-}}, {{l-self|crx|ᗝ|tr=-}}, {{l-self|crx|ᗞ|tr=-}}, {{l-self|crx|ᗟ|tr=-}}, {{l-self|crx|ᗠ|tr=-}}, {{l-self|crx|ᗡ|tr=-}}, {{l-self|crx|ᗢ|tr=-}}, {{l-self|crx|ᗣ|tr=-}}, {{l-self|crx|ᗤ|tr=-}}, {{l-self|crx|ᗥ|tr=-}}, {{l-self|crx|ᗦ|tr=-}}, {{l-self|crx|ᗧ|tr=-}}, {{l-self|crx|ᗯ|tr=-}}, {{l-self|crx|ᗰ|tr=-}}, {{l-self|crx|ᗱ|tr=-}}, {{l-self|crx|ᗲ|tr=-}}, {{l-self|crx|ᗳ|tr=-}}, {{l-self|crx|ᗴ|tr=-}}, {{l-self|crx|ᐟ|tr=-}}, {{l-self|crx|ᗵ|tr=-}}, {{l-self|crx|ᗶ|tr=-}}, {{l-self|crx|ᗷ|tr=-}}, {{l-self|crx|ᗸ|tr=-}}, {{l-self|crx|ᗹ|tr=-}}, {{l-self|crx|ᗺ|tr=-}}, {{l-self|crx|ᐠ|tr=-}}, {{l-self|crx|ᗻ|tr=-}}, {{l-self|crx|ᗼ|tr=-}}, {{l-self|crx|ᗽ|tr=-}}, {{l-self|crx|ᗾ|tr=-}}, {{l-self|crx|ᗿ|tr=-}}, {{l-self|crx|ᘀ|tr=-}}, {{l-self|crx|ᘁ|tr=-}}, {{l-self|crx|ᘂ|tr=-}}, {{l-self|crx|ᘃ|tr=-}}, {{l-self|crx|ᘄ|tr=-}}, {{l-self|crx|ᘅ|tr=-}}, {{l-self|crx|ᘆ|tr=-}}, {{l-self|crx|ᘇ|tr=-}}, {{l-self|crx|ᐣ|tr=-}}, {{l-self|crx|ᐡ|tr=-}}, {{l-self|crx|ᘈ|tr=-}}, {{l-self|crx|ᘉ|tr=-}}, {{l-self|crx|ᘊ|tr=-}}, {{l-self|crx|ᘋ|tr=-}}, {{l-self|crx|ᘌ|tr=-}}, {{l-self|crx|ᘍ|tr=-}}, {{l-self|crx|ᑦ|tr=-}}, {{l-self|crx|ᘎ|tr=-}}, {{l-self|crx|ᘏ|tr=-}}, {{l-self|crx|ᘐ|tr=-}}, {{l-self|crx|ᘑ|tr=-}}, {{l-self|crx|ᘒ|tr=-}}, {{l-self|crx|ᘓ|tr=-}}, {{l-self|crx|ᘔ|tr=-}}, {{l-self|crx|ᘖ|tr=-}}, {{l-self|crx|ᘗ|tr=-}}, {{l-self|crx|ᘘ|tr=-}}, {{l-self|crx|ᘙ|tr=-}}, {{l-self|crx|ᘛ|tr=-}}, {{l-self|crx|ᘜ|tr=-}}, {{l-self|crx|ᘝ|tr=-}}, {{l-self|crx|ᘞ|tr=-}}, {{l-self|crx|ᘟ|tr=-}}, {{l-self|crx|ᘠ|tr=-}}, {{l-self|crx|ᘡ|tr=-}}, {{l-self|crx|ᘢ|tr=-}}, {{l-self|crx|ᘣ|tr=-}}, {{l-self|crx|ᘤ|tr=-}}, {{l-self|crx|ᘥ|tr=-}}, {{l-self|crx|ᘦ|tr=-}}, {{l-self|crx|ᘧ|tr=-}}, {{l-self|crx|ᑊ|tr=-}}, {{l-self|crx|ᘨ|tr=-}}, {{l-self|crx|ᘩ|tr=-}}, {{l-self|crx|ᘪ|tr=-}}, {{l-self|crx|ᘫ|tr=-}}, {{l-self|crx|ᘬ|tr=-}}, {{l-self|crx|ᘭ|tr=-}}, {{l-self|crx|ᘮ|tr=-}}, {{l-self|crx|ᘯ|tr=-}}, {{l-self|crx|ᘰ|tr=-}}, {{l-self|crx|ᘱ|tr=-}}, {{l-self|crx|ᘲ|tr=-}}, {{l-self|crx|ᘳ|tr=-}}, {{l-self|crx|ᒡ|tr=-}}, {{l-self|crx|ᘴ|tr=-}}, {{l-self|crx|ᘵ|tr=-}}, {{l-self|crx|ᘶ|tr=-}}, {{l-self|crx|ᘷ|tr=-}}, {{l-self|crx|ᘸ|tr=-}}, {{l-self|crx|ᘹ|tr=-}}, {{l-self|crx|ᘺ|tr=-}}, {{l-self|crx|ᘻ|tr=-}}, {{l-self|crx|ᘼ|tr=-}}, {{l-self|crx|ᘽ|tr=-}}, {{l-self|crx|ᘾ|tr=-}}, {{l-self|crx|ᘿ|tr=-}}, {{l-self|crx|ᙀ|tr=-}}, {{l-self|crx|ᙁ|tr=-}}, {{l-self|crx|ᙂ|tr=-}}, {{l-self|crx|ᙃ|tr=-}}, {{l-self|crx|ᙄ|tr=-}}, {{l-self|crx|ᙅ|tr=-}}, {{l-self|crx|ᙆ|tr=-}}, {{l-self|crx|ᙇ|tr=-}}, {{l-self|crx|ᙈ|tr=-}}, {{l-self|crx|ᙉ|tr=-}}, {{l-self|crx|ᙊ|tr=-}}, {{l-self|crx|ᙋ|tr=-}}, {{l-self|crx|ᙌ|tr=-}}, {{l-self|crx|ᙍ|tr=-}}, {{l-self|crx|ᙎ|tr=-}}, {{l-self|crx|ᙏ|tr=-}}, {{l-self|crx|ᙐ|tr=-}}, {{l-self|crx|ᙑ|tr=-}}, {{l-self|crx|ᙒ|tr=-}}, {{l-self|crx|ᙓ|tr=-}}, {{l-self|crx|ᔆ|tr=-}}, {{l-self|crx|ᣵ|tr=-}}, {{l-self|crx|ᙔ|tr=-}}, {{l-self|crx|ᙕ|tr=-}}, {{l-self|crx|ᙖ|tr=-}}, {{l-self|crx|ᙗ|tr=-}}, {{l-self|crx|ᙘ|tr=-}}, {{l-self|crx|ᙙ|tr=-}}, {{l-self|crx|ᙚ|tr=-}}, {{l-self|crx|ᙛ|tr=-}}, {{l-self|crx|ᙜ|tr=-}}, {{l-self|crx|ᙝ|tr=-}}, {{l-self|crx|ᙞ|tr=-}}, {{l-self|crx|ᙟ|tr=-}}, {{l-self|crx|ᙠ|tr=-}}, {{l-self|crx|ᙡ|tr=-}}, {{l-self|crx|ᙢ|tr=-}}, {{l-self|crx|ᙣ|tr=-}}, {{l-self|crx|ᙤ|tr=-}}, {{l-self|crx|ᙥ|tr=-}}, {{l-self|crx|ᙦ|tr=-}}, {{l-self|crx|ᙧ|tr=-}}, {{l-self|crx|ᙨ|tr=-}}, {{l-self|crx|ᙩ|tr=-}}, {{l-self|crx|ᙪ|tr=-}}, {{l-self|crx|ᙫ|tr=-}}, {{l-self|crx|ᙬ|tr=-}}, {{l-self|crx|ᐟᗐ|tr=-}}, {{l-self|crx|ᐟᗑ|tr=-}}, {{l-self|crx|ᐟᗒ|tr=-}}, {{l-self|crx|ᐟᗓ|tr=-}}, {{l-self|crx|ᐟᗔ|tr=-}}, {{l-self|crx|ᐟᗕ|tr=-}}, {{l-self|crx|ᐠᗐ|tr=-}}, {{l-self|crx|ᐠᗑ|tr=-}}, {{l-self|crx|ᐠᗒ|tr=-}}, {{l-self|crx|ᐠᗓ|tr=-}}, {{l-self|crx|ᐠᗔ|tr=-}}, {{l-self|crx|ᐠᗕ|tr=-}}, {{l-self|crx|ᘁᗐ|tr=-}}, {{l-self|crx|ᘁᗑ|tr=-}}, {{l-self|crx|ᘁᗒ|tr=-}}, {{l-self|crx|ᘁᗓ|tr=-}}, {{l-self|crx|ᘁᗔ|tr=-}}, {{l-self|crx|ᘁᗕ|tr=-}}, {{l-self|crx|ᐪz|tr=-}}, {{l-self|crx|ᐪs|tr=-}}, {{l-self|crx|rᐁ|tr=-}}, {{l-self|crx|rᐃ|tr=-}}, {{l-self|crx|rᐅ|tr=-}}, {{l-self|crx|rᐈ|tr=-}}, {{l-self|crx|rᐉ|tr=-}}, {{l-self|crx|rᐊ|tr=-}}, {{l-self|crx|ᘁᗨ|tr=-}}, {{l-self|crx|ᘁᗩ|tr=-}}, {{l-self|crx|ᘁᗪ|tr=-}}, {{l-self|crx|ᘁᗫ|tr=-}}, {{l-self|crx|ᘁᗬ|tr=-}}, {{l-self|crx|ᘁᗭ|tr=-}}, {{l-self|crx|ᘁᗮ}}}} =={{langname|caf}}== ==={{ĐM|pron}}=== *{{IPA4|caf|[ho]}} ==={{ĐM|syllable}}=== {{head|caf|Chữ cái|tr=ho}} #Chữ cái âm tiết ''ho'' trong tiếng Carrier Nam. #:{{ux|caf|'''ᐱ'''ᗞᙒ|tr='''ho'''tusi|[[có lẽ]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Carrier|list={{l-self|caf|ᐁ|tr=-}}, {{l-self|caf|ᐃ|tr=-}}, {{l-self|caf|ᐅ|tr=-}}, {{l-self|caf|ᐈ|tr=-}}, {{l-self|caf|ᐉ|tr=-}}, {{l-self|caf|ᐊ|tr=-}}, {{l-self|caf|ᐧᐁ|tr=-}}, {{l-self|caf|ᐧᐃ|tr=-}}, {{l-self|caf|ᐧᐅ|tr=-}}, {{l-self|caf|ᐧᐈ|tr=-}}, {{l-self|caf|ᐧᐉ|tr=-}}, {{l-self|caf|ᐧᐊ|tr=-}}, {{l-self|caf|ᐧ|tr=-}}, {{l-self|caf|ᐯ|tr=-}}, {{l-self|caf|ᐱ|tr=-}}, {{l-self|caf|ᐳ|tr=-}}, {{l-self|caf|ᐶ|tr=-}}, {{l-self|caf|ᐷ|tr=-}}, {{l-self|caf|ᐸ|tr=-}}, {{l-self|caf|ᑋ|tr=-}}, {{l-self|caf|ᗨ|tr=-}}, {{l-self|caf|ᗩ|tr=-}}, {{l-self|caf|ᗪ|tr=-}}, {{l-self|caf|ᗫ|tr=-}}, {{l-self|caf|ᗬ|tr=-}}, {{l-self|caf|ᗭ|tr=-}}, {{l-self|caf|ᗮ|tr=-}}, {{l-self|caf|ᗄ|tr=-}}, {{l-self|caf|ᗅ|tr=-}}, {{l-self|caf|ᗆ|tr=-}}, {{l-self|caf|ᗇ|tr=-}}, {{l-self|caf|ᗈ|tr=-}}, {{l-self|caf|ᗉ|tr=-}}, {{l-self|caf|ᐥ|tr=-}}, {{l-self|caf|ᗊ|tr=-}}, {{l-self|caf|ᗋ|tr=-}}, {{l-self|caf|ᗌ|tr=-}}, {{l-self|caf|ᗍ|tr=-}}, {{l-self|caf|ᗎ|tr=-}}, {{l-self|caf|ᗏ|tr=-}}, {{l-self|caf|ᐦ|tr=-}}, {{l-self|caf|ᗐ|tr=-}}, {{l-self|caf|ᗑ|tr=-}}, {{l-self|caf|ᗒ|tr=-}}, {{l-self|caf|ᗓ|tr=-}}, {{l-self|caf|ᗔ|tr=-}}, {{l-self|caf|ᗕ|tr=-}}, {{l-self|caf|ᗖ|tr=-}}, {{l-self|caf|ᗗ|tr=-}}, {{l-self|caf|ᗘ|tr=-}}, {{l-self|caf|ᗙ|tr=-}}, {{l-self|caf|ᗚ|tr=-}}, {{l-self|caf|ᗛ|tr=-}}, {{l-self|caf|ᑌ|tr=-}}, {{l-self|caf|ᑎ|tr=-}}, {{l-self|caf|ᑐ|tr=-}}, {{l-self|caf|ᑓ|tr=-}}, {{l-self|caf|ᑔ|tr=-}}, {{l-self|caf|ᑕ|tr=-}}, {{l-self|caf|ᐪ|tr=-}}, {{l-self|caf|ᗜ|tr=-}}, {{l-self|caf|ᗝ|tr=-}}, {{l-self|caf|ᗞ|tr=-}}, {{l-self|caf|ᗟ|tr=-}}, {{l-self|caf|ᗠ|tr=-}}, {{l-self|caf|ᗡ|tr=-}}, {{l-self|caf|ᗢ|tr=-}}, {{l-self|caf|ᗣ|tr=-}}, {{l-self|caf|ᗤ|tr=-}}, {{l-self|caf|ᗥ|tr=-}}, {{l-self|caf|ᗦ|tr=-}}, {{l-self|caf|ᗧ|tr=-}}, {{l-self|caf|ᗯ|tr=-}}, {{l-self|caf|ᗰ|tr=-}}, {{l-self|caf|ᗱ|tr=-}}, {{l-self|caf|ᗲ|tr=-}}, {{l-self|caf|ᗳ|tr=-}}, {{l-self|caf|ᗴ|tr=-}}, {{l-self|caf|ᐟ|tr=-}}, {{l-self|caf|ᗵ|tr=-}}, {{l-self|caf|ᗶ|tr=-}}, {{l-self|caf|ᗷ|tr=-}}, {{l-self|caf|ᗸ|tr=-}}, {{l-self|caf|ᗹ|tr=-}}, {{l-self|caf|ᗺ|tr=-}}, {{l-self|caf|ᐠ|tr=-}}, {{l-self|caf|ᗻ|tr=-}}, {{l-self|caf|ᗼ|tr=-}}, {{l-self|caf|ᗽ|tr=-}}, {{l-self|caf|ᗾ|tr=-}}, {{l-self|caf|ᗿ|tr=-}}, {{l-self|caf|ᘀ|tr=-}}, {{l-self|caf|ᘁ|tr=-}}, {{l-self|caf|ᘂ|tr=-}}, {{l-self|caf|ᘃ|tr=-}}, {{l-self|caf|ᘄ|tr=-}}, {{l-self|caf|ᘅ|tr=-}}, {{l-self|caf|ᘆ|tr=-}}, {{l-self|caf|ᘇ|tr=-}}, {{l-self|caf|ᐣ|tr=-}}, {{l-self|caf|ᐡ|tr=-}}, {{l-self|caf|ᘈ|tr=-}}, {{l-self|caf|ᘉ|tr=-}}, {{l-self|caf|ᘊ|tr=-}}, {{l-self|caf|ᘋ|tr=-}}, {{l-self|caf|ᘌ|tr=-}}, {{l-self|caf|ᘍ|tr=-}}, {{l-self|caf|ᑦ|tr=-}}, {{l-self|caf|ᘎ|tr=-}}, {{l-self|caf|ᘏ|tr=-}}, {{l-self|caf|ᘐ|tr=-}}, {{l-self|caf|ᘑ|tr=-}}, {{l-self|caf|ᘒ|tr=-}}, {{l-self|caf|ᘓ|tr=-}}, {{l-self|caf|ᘔ|tr=-}}, {{l-self|caf|ᘖ|tr=-}}, {{l-self|caf|ᘗ|tr=-}}, {{l-self|caf|ᘘ|tr=-}}, {{l-self|caf|ᘙ|tr=-}}, {{l-self|caf|ᘛ|tr=-}}, {{l-self|caf|ᘜ|tr=-}}, {{l-self|caf|ᘝ|tr=-}}, {{l-self|caf|ᘞ|tr=-}}, {{l-self|caf|ᘟ|tr=-}}, {{l-self|caf|ᘠ|tr=-}}, {{l-self|caf|ᘡ|tr=-}}, {{l-self|caf|ᘢ|tr=-}}, {{l-self|caf|ᘣ|tr=-}}, {{l-self|caf|ᘤ|tr=-}}, {{l-self|caf|ᘥ|tr=-}}, {{l-self|caf|ᘦ|tr=-}}, {{l-self|caf|ᘧ|tr=-}}, {{l-self|caf|ᑊ|tr=-}}, {{l-self|caf|ᘨ|tr=-}}, {{l-self|caf|ᘩ|tr=-}}, {{l-self|caf|ᘪ|tr=-}}, {{l-self|caf|ᘫ|tr=-}}, {{l-self|caf|ᘬ|tr=-}}, {{l-self|caf|ᘭ|tr=-}}, {{l-self|caf|ᘮ|tr=-}}, {{l-self|caf|ᘯ|tr=-}}, {{l-self|caf|ᘰ|tr=-}}, {{l-self|caf|ᘱ|tr=-}}, {{l-self|caf|ᘲ|tr=-}}, {{l-self|caf|ᘳ|tr=-}}, {{l-self|caf|ᒡ|tr=-}}, {{l-self|caf|ᘴ|tr=-}}, {{l-self|caf|ᘵ|tr=-}}, {{l-self|caf|ᘶ|tr=-}}, {{l-self|caf|ᘷ|tr=-}}, {{l-self|caf|ᘸ|tr=-}}, {{l-self|caf|ᘹ|tr=-}}, {{l-self|caf|ᘺ|tr=-}}, {{l-self|caf|ᘻ|tr=-}}, {{l-self|caf|ᘼ|tr=-}}, {{l-self|caf|ᘽ|tr=-}}, {{l-self|caf|ᘾ|tr=-}}, {{l-self|caf|ᘿ|tr=-}}, {{l-self|caf|ᙀ|tr=-}}, {{l-self|caf|ᙁ|tr=-}}, {{l-self|caf|ᙂ|tr=-}}, {{l-self|caf|ᙃ|tr=-}}, {{l-self|caf|ᙄ|tr=-}}, {{l-self|caf|ᙅ|tr=-}}, {{l-self|caf|ᙆ|tr=-}}, {{l-self|caf|ᙇ|tr=-}}, {{l-self|caf|ᙈ|tr=-}}, {{l-self|caf|ᙉ|tr=-}}, {{l-self|caf|ᙊ|tr=-}}, {{l-self|caf|ᙋ|tr=-}}, {{l-self|caf|ᙌ|tr=-}}, {{l-self|caf|ᙍ|tr=-}}, {{l-self|caf|ᙎ|tr=-}}, {{l-self|caf|ᙏ|tr=-}}, {{l-self|caf|ᙐ|tr=-}}, {{l-self|caf|ᙑ|tr=-}}, {{l-self|caf|ᙒ|tr=-}}, {{l-self|caf|ᙓ|tr=-}}, {{l-self|caf|ᔆ|tr=-}}, {{l-self|caf|ᣵ|tr=-}}, {{l-self|caf|ᙔ|tr=-}}, {{l-self|caf|ᙕ|tr=-}}, {{l-self|caf|ᙖ|tr=-}}, {{l-self|caf|ᙗ|tr=-}}, {{l-self|caf|ᙘ|tr=-}}, {{l-self|caf|ᙙ|tr=-}}, {{l-self|caf|ᙚ|tr=-}}, {{l-self|caf|ᙛ|tr=-}}, {{l-self|caf|ᙜ|tr=-}}, {{l-self|caf|ᙝ|tr=-}}, {{l-self|caf|ᙞ|tr=-}}, {{l-self|caf|ᙟ|tr=-}}, {{l-self|caf|ᙠ|tr=-}}, {{l-self|caf|ᙡ|tr=-}}, {{l-self|caf|ᙢ|tr=-}}, {{l-self|caf|ᙣ|tr=-}}, {{l-self|caf|ᙤ|tr=-}}, {{l-self|caf|ᙥ|tr=-}}, {{l-self|caf|ᙦ|tr=-}}, {{l-self|caf|ᙧ|tr=-}}, {{l-self|caf|ᙨ|tr=-}}, {{l-self|caf|ᙩ|tr=-}}, {{l-self|caf|ᙪ|tr=-}}, {{l-self|caf|ᙫ|tr=-}}, {{l-self|caf|ᙬ|tr=-}}, {{l-self|caf|ᐟᗐ|tr=-}}, {{l-self|caf|ᐟᗑ|tr=-}}, {{l-self|caf|ᐟᗒ|tr=-}}, {{l-self|caf|ᐟᗓ|tr=-}}, {{l-self|caf|ᐟᗔ|tr=-}}, {{l-self|caf|ᐟᗕ|tr=-}}, {{l-self|caf|ᐠᗐ|tr=-}}, {{l-self|caf|ᐠᗑ|tr=-}}, {{l-self|caf|ᐠᗒ|tr=-}}, {{l-self|caf|ᐠᗓ|tr=-}}, {{l-self|caf|ᐠᗔ|tr=-}}, {{l-self|caf|ᐠᗕ|tr=-}}, {{l-self|caf|ᘁᗐ|tr=-}}, {{l-self|caf|ᘁᗑ|tr=-}}, {{l-self|caf|ᘁᗒ|tr=-}}, {{l-self|caf|ᘁᗓ|tr=-}}, {{l-self|caf|ᘁᗔ|tr=-}}, {{l-self|caf|ᘁᗕ|tr=-}}, {{l-self|caf|ᐪz|tr=-}}, {{l-self|caf|ᐪs|tr=-}}, {{l-self|caf|rᐁ|tr=-}}, {{l-self|caf|rᐃ|tr=-}}, {{l-self|caf|rᐅ|tr=-}}, {{l-self|caf|rᐈ|tr=-}}, {{l-self|caf|rᐉ|tr=-}}, {{l-self|caf|rᐊ|tr=-}}, {{l-self|caf|ᘁᗨ|tr=-}}, {{l-self|caf|ᘁᗩ|tr=-}}, {{l-self|caf|ᘁᗪ|tr=-}}, {{l-self|caf|ᘁᗫ|tr=-}}, {{l-self|caf|ᘁᗬ|tr=-}}, {{l-self|caf|ᘁᗭ|tr=-}}, {{l-self|caf|ᘁᗮ}}}} ==={{ĐM|intj}}=== {{head|caf|Thán từ|tr=ho}} #Thừa nhận người nói/chỉ ra nghi vấn. ==={{ĐM|ref}}=== *{{Chú thích web|en|author=First Voices|entryurl=https://www.firstvoices.com/dakelh-southern-carrier/alphabet/startsWith?char=h&types=word|entry=h|work=Dakelh / Southern Carrier|year=2025}} =={{langname|cr}}== ==={{ĐM|pron}}=== *{{IPA4|cr|[pi]}} ==={{ĐM|syllable}}=== {{head|cr|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Cree. #:{{ux|cr|'''ᐱ'''ᔔ|[[linh miêu]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=cr|sc=Cans|qual=Chữ âm tiết tiếng Cree|ᐁ|ᐃ|ᐅ|ᐊ|ᐯ|ᐱ|ᐳ|ᐸ|ᑊ|ᑌ|ᑎ|ᑐ|ᑕ|ᐟ|ᑫ|ᑭ|ᑯ|ᑲ|ᐠ|ᒉ|ᒋ|ᒍ|ᒐ|ᐨ|ᒣ|ᒥ|ᒧ|ᒪ|ᒼ|ᓀ|ᓂ|ᓄ|ᓇ|ᐣ|ᓭ|ᓯ|ᓱ|ᓴ|ᐢ|ᔦ|ᔨ|ᔪ|ᔭ|ᐧ|𑪼|𑪽|𑪾|𑪿|ᐤ|ᐦ|ᕽ|ᓫ|ᕑ}} =={{langname|crl}}== ==={{ĐM|pron}}=== *{{IPA4|crl|/pi/}} ==={{ĐM|syllable}}=== {{head|crl|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Cree Đông Bắc. #:{{ux|crl|'''ᐱ'''ᐦᒋᔑᒨ|[[đặt]], [[để]]|inline=1}} =={{langname|crj}}== ==={{ĐM|pron}}=== *{{IPA4|crj|/pi/}} ==={{ĐM|syllable}}=== {{head|crj|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Cree Đông Nam. #:{{ux|crj|'''ᐱ'''ᓕ'''ᐱ'''ᔭᓐ|[[s:Phi-líp|Phi-líp]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|crj|author=Wycliffe Bible Translators, Inc.|work=ᒋᔐᒪᓂᑑ ᐅᑕᔨᒳᐃᓐ ᑳ ᐅᔅᑳᒡ ᑌᔅᑎᒥᓐᑦ|year=2001|entry=ᐱᓕᐱᔭᓐ 1|entryurl=https://www.bible.com/bible/1947/PHP.1.JBCNT}} =={{langname|crk}}== ==={{ĐM|pron}}=== *{{IPA4|crk|/pi/}} ==={{ĐM|syllable}}=== {{head|crk|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Cree đồng bằng. #:{{ux|crk|ᓂ'''ᐱ'''ᕀ|tr={{l|crk|ni'''pi'''y}}|[[nước]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Cree Tây|list={{l-self|crk|ᐁ|tr=-}}, {{l-self|crk|ᐃ|tr=-}}, {{l-self|crk|ᐅ|tr=-}}, {{l-self|crk|ᐊ|tr=-}}, {{l-self|crk|ᐄ|tr=-}}, {{l-self|crk|ᐆ|tr=-}}, {{l-self|crk|ᐋ|tr=-}}, {{l-self|crk|ᐯ|tr=-}}, {{l-self|crk|ᐱ|tr=-}}, {{l-self|crk|ᐳ|tr=-}}, {{l-self|crk|ᐸ|tr=-}}, {{l-self|crk|ᐲ|tr=-}}, {{l-self|crk|ᐴ|tr=-}}, {{l-self|crk|ᐹ|tr=-}}, {{l-self|crk|ᑊ|tr=-}}, {{l-self|crk|ᑌ|tr=-}}, {{l-self|crk|ᑎ|tr=-}}, {{l-self|crk|ᑐ|tr=-}}, {{l-self|crk|ᑕ|tr=-}}, {{l-self|crk|ᑏ|tr=-}}, {{l-self|crk|ᑑ|tr=-}}, {{l-self|crk|ᑖ|tr=-}}, {{l-self|crk|ᐟ|tr=-}}, {{l-self|crk|ᑫ|tr=-}}, {{l-self|crk|ᑭ|tr=-}}, {{l-self|crk|ᑯ|tr=-}}, {{l-self|crk|ᑲ|tr=-}}, {{l-self|crk|ᑮ|tr=-}}, {{l-self|crk|ᑰ|tr=-}}, {{l-self|crk|ᑳ|tr=-}}, {{l-self|crk|ᐠ|tr=-}}, {{l-self|crk|ᒉ|tr=-}}, {{l-self|crk|ᒋ|tr=-}}, {{l-self|crk|ᒍ|tr=-}}, {{l-self|crk|ᒐ|tr=-}}, {{l-self|crk|ᒌ|tr=-}}, {{l-self|crk|ᒎ|tr=-}}, {{l-self|crk|ᒑ|tr=-}}, {{l-self|crk|ᐨ|tr=-}}, {{l-self|crk|ᒣ|tr=-}}, {{l-self|crk|ᒥ|tr=-}}, {{l-self|crk|ᒧ|tr=-}}, {{l-self|crk|ᒪ|tr=-}}, {{l-self|crk|ᒦ|tr=-}}, {{l-self|crk|ᒨ|tr=-}}, {{l-self|crk|ᒫ|tr=-}}, {{l-self|crk|ᒼ|tr=-}}, {{l-self|crk|ᓀ|tr=-}}, {{l-self|crk|ᓂ|tr=-}}, {{l-self|crk|ᓄ|tr=-}}, {{l-self|crk|ᓇ|tr=-}}, {{l-self|crk|ᓃ|tr=-}}, {{l-self|crk|ᓅ|tr=-}}, {{l-self|crk|ᓈ|tr=-}}, {{l-self|crk|ᐣ|tr=-}}, {{l-self|crk|ᓭ|tr=-}}, {{l-self|crk|ᓯ|tr=-}}, {{l-self|crk|ᓱ|tr=-}}, {{l-self|crk|ᓴ|tr=-}}, {{l-self|crk|ᓰ|tr=-}}, {{l-self|crk|ᓲ|tr=-}}, {{l-self|crk|ᓵ|tr=-}}, {{l-self|crk|ᐢ|tr=-}}, {{l-self|crk|ᔦ|tr=-}}, {{l-self|crk|ᔨ|tr=-}}, {{l-self|crk|ᔪ|tr=-}}, {{l-self|crk|ᔭ|tr=-}}, {{l-self|crk|ᔩ|tr=-}}, {{l-self|crk|ᔫ|tr=-}}, {{l-self|crk|ᔮ|tr=-}}, {{l-self|crk|ᕀ|tr=-}} ({{l-self|crk|ᐝ|tr=-}}), {{l-self|crk|ᖧ|tr=-}}, {{l-self|crk|ᖨ|tr=-}}, {{l-self|crk|ᖪ|tr=-}}, {{l-self|crk|ᖬ|tr=-}}, {{l-self|crk|ᖩ|tr=-}}, {{l-self|crk|ᖫ|tr=-}}, {{l-self|crk|ᖭ|tr=-}}, {{l-self|crk|ᙾ|tr=-}}, {{l-self|crk|ᐍ|tr=-}}, {{l-self|crk|ᐏ|tr=-}}, {{l-self|crk|ᐓ|tr=-}}, {{l-self|crk|ᐘ|tr=-}}, {{l-self|crk|ᐑ|tr=-}}, {{l-self|crk|ᐕ|tr=-}}, {{l-self|crk|ᐚ|tr=-}}, {{l-self|crk|ᐤ|tr=-}}, {{l-self|crk|ᐦᐁ|tr=-}}, {{l-self|crk|ᐦᐃ|tr=-}}, {{l-self|crk|ᐦᐅ|tr=-}}, {{l-self|crk|ᐦᐊ|tr=-}}, {{l-self|crk|ᐦᐄ|tr=-}}, {{l-self|crk|ᐦᐆ|tr=-}}, {{l-self|crk|ᐦᐋ|tr=-}}, {{l-self|crk|ᐦ|tr=-}}, {{l-self|crk|ᕽ|tr=-}}, {{l-self|crk|ᓬ|tr=-}}, {{l-self|crk|ᕒ}}}} =={{langname|crm}}== ==={{ĐM|pron}}=== *{{IPA4|crm|/pi/}} ==={{ĐM|syllable}}=== {{head|crm|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Cree Moose. #:{{quote|crm|ᐃ'''ᐱ'''ᓯᔭᓇ|[[s:Ê-phê-sô|Ê-phê-sô]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Cree Đông|list={{l-self|crm|ᐁ|tr=-}}, {{l-self|crm|ᐃ|tr=-}}, {{l-self|crm|ᐅ|tr=-}}, {{l-self|crm|ᐊ|tr=-}}, {{l-self|crm|ᐄ|tr=-}}, {{l-self|crm|ᐆ|tr=-}}, {{l-self|crm|ᐋ|tr=-}}, {{l-self|crm|ᐯ|tr=-}}, {{l-self|crm|ᐱ|tr=-}}, {{l-self|crm|ᐳ|tr=-}}, {{l-self|crm|ᐸ|tr=-}}, {{l-self|crm|ᐲ|tr=-}}, {{l-self|crm|ᐴ|tr=-}}, {{l-self|crm|ᐹ|tr=-}}, {{l-self|crm|ᑉ|tr=-}}, {{l-self|crm|ᑌ|tr=-}}, {{l-self|crm|ᑎ|tr=-}}, {{l-self|crm|ᑐ|tr=-}}, {{l-self|crm|ᑕ|tr=-}}, {{l-self|crm|ᑏ|tr=-}}, {{l-self|crm|ᑑ|tr=-}}, {{l-self|crm|ᑖ|tr=-}}, {{l-self|crm|ᑦ|tr=-}}, {{l-self|crm|ᑫ|tr=-}}, {{l-self|crm|ᑭ|tr=-}}, {{l-self|crm|ᑯ|tr=-}}, {{l-self|crm|ᑲ|tr=-}}, {{l-self|crm|ᑮ|tr=-}}, {{l-self|crm|ᑰ|tr=-}}, {{l-self|crm|ᑳ|tr=-}}, {{l-self|crm|ᒃ|tr=-}}, {{l-self|crm|ᒉ|tr=-}}, {{l-self|crm|ᒋ|tr=-}}, {{l-self|crm|ᒍ|tr=-}}, {{l-self|crm|ᒐ|tr=-}}, {{l-self|crm|ᒌ|tr=-}}, {{l-self|crm|ᒎ|tr=-}}, {{l-self|crm|ᒑ|tr=-}}, {{l-self|crm|ᒡ|tr=-}}, {{l-self|crm|ᒣ|tr=-}}, {{l-self|crm|ᒥ|tr=-}}, {{l-self|crm|ᒧ|tr=-}}, {{l-self|crm|ᒪ|tr=-}}, {{l-self|crm|ᒦ|tr=-}}, {{l-self|crm|ᒨ|tr=-}}, {{l-self|crm|ᒫ|tr=-}}, {{l-self|crm|ᒻ|tr=-}}, {{l-self|crm|ᓀ|tr=-}}, {{l-self|crm|ᓂ|tr=-}}, {{l-self|crm|ᓄ|tr=-}}, {{l-self|crm|ᓇ|tr=-}}, {{l-self|crm|ᓃ|tr=-}}, {{l-self|crm|ᓅ|tr=-}}, {{l-self|crm|ᓈ|tr=-}}, {{l-self|crm|ᓐ|tr=-}}, {{l-self|crm|ᓭ|tr=-}}, {{l-self|crm|ᓯ|tr=-}}, {{l-self|crm|ᓱ|tr=-}}, {{l-self|crm|ᓴ|tr=-}}, {{l-self|crm|ᓰ|tr=-}}, {{l-self|crm|ᓲ|tr=-}}, {{l-self|crm|ᓵ|tr=-}}, {{l-self|crm|ᔅ|tr=-}}, {{l-self|crm|ᔐ|tr=-}}, {{l-self|crm|ᔑ|tr=-}}, {{l-self|crm|ᔓ|tr=-}}, {{l-self|crm|ᔕ|tr=-}}, {{l-self|crm|ᔒ|tr=-}}, {{l-self|crm|ᔔ|tr=-}}, {{l-self|crm|ᔖ|tr=-}}, {{l-self|crm|ᔥ|tr=-}}, {{l-self|crm|ᔦ|tr=-}}, {{l-self|crm|ᔨ|tr=-}}, {{l-self|crm|ᔪ|tr=-}}, {{l-self|crm|ᔭ|tr=-}}, {{l-self|crm|ᔩ|tr=-}}, {{l-self|crm|ᔫ|tr=-}}, {{l-self|crm|ᔮ|tr=-}}, {{l-self|crm|ᔾ|tr=-}} ({{l-self|crm|ᐤ|tr=-}}), {{l-self|crm|ᕃ|tr=-}}, {{l-self|crm|ᕆ|tr=-}}, {{l-self|crm|ᕈ|tr=-}}, {{l-self|crm|ᕋ|tr=-}}, {{l-self|crm|ᕇ|tr=-}}, {{l-self|crm|ᕉ|tr=-}}, {{l-self|crm|ᕌ|tr=-}}, {{l-self|crm|ᕐ|tr=-}}, {{l-self|crm|ᓓ|tr=-}}, {{l-self|crm|ᓕ|tr=-}}, {{l-self|crm|ᓗ|tr=-}}, {{l-self|crm|ᓚ|tr=-}}, {{l-self|crm|ᓖ|tr=-}}, {{l-self|crm|ᓘ|tr=-}}, {{l-self|crm|ᓛ|tr=-}}, {{l-self|crm|ᓪ|tr=-}}, {{l-self|crm|ᕓ|tr=-}}, {{l-self|crm|ᕕ|tr=-}}, {{l-self|crm|ᕗ|tr=-}}, {{l-self|crm|ᕙ|tr=-}}, {{l-self|crm|ᕖ|tr=-}}, {{l-self|crm|ᕘ|tr=-}}, {{l-self|crm|ᕚ|tr=-}}, {{l-self|crm|ᕝ|tr=-}}, {{l-self|crm|ᕞ|tr=-}}, {{l-self|crm|ᕠ|tr=-}}, {{l-self|crm|ᕤ|tr=-}}, {{l-self|crm|ᕦ|tr=-}}, {{l-self|crm|ᕢ|tr=-}}, {{l-self|crm|ᕥ|tr=-}}, {{l-self|crm|ᕧ|tr=-}}, {{l-self|crm|ᕪ|tr=-}}, {{l-self|crm|ᐌ|tr=-}}, {{l-self|crm|ᐎ|tr=-}}, {{l-self|crm|ᐒ|tr=-}}, {{l-self|crm|ᐗ|tr=-}}, {{l-self|crm|ᐐ|tr=-}}, {{l-self|crm|ᐔ|tr=-}}, {{l-self|crm|ᐙ|tr=-}}, {{l-self|crm|ᐤ|tr=-}}, {{l-self|crm|ᐦᐁ|tr=-}}, {{l-self|crm|ᐦᐃ|tr=-}}, {{l-self|crm|ᐦᐅ|tr=-}}, {{l-self|crm|ᐦᐊ|tr=-}}, {{l-self|crm|ᐦᐄ|tr=-}}, {{l-self|crm|ᐦᐆ|tr=-}}, {{l-self|crm|ᐦᐋ|tr=-}}, {{l-self|crm|ᐦ|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|crm|author=Canadian Bible Society|work=ᐅᔅᑭ ᑎᔅᑌᒥᓐᑦ|year=1876|entry=ᐃᐱᓯᔭᓇ 1|entryurl=https://www.bible.com/bible/483/EPH.1.MCNT91}} =={{langname|cwd}}== ==={{ĐM|pron}}=== *{{IPA4|cwd|/pi/}} ==={{ĐM|syllable}}=== {{head|cwd|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Cree rừng. #:{{quote|cwd|'''ᐱ'''ᐳᐣ|mùa lạnh nhất trong 6 mùa Cree, tương đương với [[mùa đông]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Cree rừng|list={{l-self|cwd|ᐁ|tr=-}}, {{l-self|cwd|ᐃ|tr=-}}, {{l-self|cwd|ᐅ|tr=-}}, {{l-self|cwd|ᐆ|tr=-}}, {{l-self|cwd|ᐊ|tr=-}}, {{l-self|cwd|ᐋ|tr=-}}, {{l-self|cwd|ᐍ|tr=-}}, {{l-self|cwd|ᐏ|tr=-}}, {{l-self|cwd|ᐓ|tr=-}}, {{l-self|cwd|ᐕ|tr=-}}, {{l-self|cwd|ᐘ|tr=-}}, {{l-self|cwd|ᐚ|tr=-}}, {{l-self|cwd|ᐤ|tr=-}}, {{l-self|cwd|ᐯ|tr=-}}, {{l-self|cwd|ᐱ|tr=-}}, {{l-self|cwd|ᐳ|tr=-}}, {{l-self|cwd|ᐴ|tr=-}}, {{l-self|cwd|ᐸ|tr=-}}, {{l-self|cwd|ᐹ|tr=-}}, {{l-self|cwd|ᑊ|tr=-}}, {{l-self|cwd|ᑌ|tr=-}}, {{l-self|cwd|ᑎ|tr=-}}, {{l-self|cwd|ᑐ|tr=-}}, {{l-self|cwd|ᑑ|tr=-}}, {{l-self|cwd|ᑕ|tr=-}}, {{l-self|cwd|ᑖ|tr=-}}, {{l-self|cwd|ᐟ|tr=-}}, {{l-self|cwd|ᑫ|tr=-}}, {{l-self|cwd|ᑭ|tr=-}}, {{l-self|cwd|ᑯ|tr=-}}, {{l-self|cwd|ᑰ|tr=-}}, {{l-self|cwd|ᑲ|tr=-}}, {{l-self|cwd|ᑳ|tr=-}}, {{l-self|cwd|ᐠ|tr=-}}, {{l-self|cwd|ᒉ|tr=-}}, {{l-self|cwd|ᒋ|tr=-}}, {{l-self|cwd|ᒍ|tr=-}}, {{l-self|cwd|ᒎ|tr=-}}, {{l-self|cwd|ᒐ|tr=-}}, {{l-self|cwd|ᒑ|tr=-}}, {{l-self|cwd|ᐨ|tr=-}}, {{l-self|cwd|ᒣ|tr=-}}, {{l-self|cwd|ᒥ |tr=-}}, {{l-self|cwd|ᒧ |tr=-}}, {{l-self|cwd|ᒫ |tr=-}}, {{l-self|cwd|ᒪ |tr=-}}, {{l-self|cwd|ᒦ |tr=-}}, {{l-self|cwd|ᒼ |tr=-}}, {{l-self|cwd|ᓀ|tr=-}}, {{l-self|cwd|ᓂ|tr=-}}, {{l-self|cwd|ᓄ|tr=-}}, {{l-self|cwd|ᓅ|tr=-}}, {{l-self|cwd|ᓇ|tr=-}}, {{l-self|cwd|ᓈ|tr=-}}, {{l-self|cwd|ᐣ|tr=-}}, {{l-self|cwd|ᓭ|tr=-}}, {{l-self|cwd|ᓯ|tr=-}}, {{l-self|cwd|ᓱ|tr=-}}, {{l-self|cwd|ᓲ|tr=-}}, {{l-self|cwd|ᓴ|tr=-}}, {{l-self|cwd|ᓵ|tr=-}}, {{l-self|cwd|ᐢ|tr=-}}, {{l-self|cwd|ᔦ|tr=-}}, {{l-self|cwd|ᔨ|tr=-}}, {{l-self|cwd|ᔪ|tr=-}}, {{l-self|cwd|ᔫ|tr=-}}, {{l-self|cwd|ᔭ|tr=-}}, {{l-self|cwd|ᔮ|tr=-}}, {{l-self|cwd|ᐩ|tr=-}}, {{l-self|cwd|ᖧ|tr=-}}, {{l-self|cwd|ᖨ|tr=-}}, {{l-self|cwd|ᖪ|tr=-}}, {{l-self|cwd|ᖫ|tr=-}}, {{l-self|cwd|ᖬ|tr=-}}, {{l-self|cwd|ᖭ|tr=-}}, {{l-self|cwd||tr=-}}, {{l-self|cwd|ᓬ|tr=-}}, {{l-self|cwd|ᕒ|tr=-}}, {{l-self|cwd|ᐦ|tr=-}}, {{l-self|cwd|ᕁ|tr=-}}, {{l-self|cwd|ᐧ|tr=-}}, {{l-self|cwd|ᑵ|tr=-}}}} =={{langname|chp}}== ==={{ĐM|pron}}=== *{{IPA4|chp|/pi/}} ==={{ĐM|syllable}}=== {{head|chp|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Denesuline. ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết tiếng Denesuline|list={{l-self|chp|ᐁ|tr=-}}, {{l-self|chp|ᐊ|tr=-}}, {{l-self|chp|ᐁ|tr=-}}, {{l-self|chp|ᐃ|tr=-}}, {{l-self|chp|ᐅ|tr=-}}, {{l-self|chp|ᐊˋ|tr=-}}, {{l-self|chp|ᐫ|tr=-}}, {{l-self|chp|ᐬ|tr=-}}, {{l-self|chp|ᐭ|tr=-}}, {{l-self|chp|ᑕˋ|tr=-}}, {{l-self|chp|ᑌˋ|tr=-}}, {{l-self|chp|ᑎˋ|tr=-}}, {{l-self|chp|ᑐˋ|tr=-}}, {{l-self|chp|ˈᐊ|tr=-}}, {{l-self|chp|ˈᐁ|tr=-}}, {{l-self|chp|ˈᐃ|tr=-}}, {{l-self|chp|ˈᐅ|tr=-}}, {{l-self|chp|ᐥᐊ|tr=-}}, {{l-self|chp|ᐥᐁ|tr=-}}, {{l-self|chp|ᐥᐃ|tr=-}}, {{l-self|chp|ᐥᐅ|tr=-}}, {{l-self|chp|ᐊᐧ|tr=-}}, {{l-self|chp|ᐁᐧ|tr=-}}, {{l-self|chp|ᐃᐧ|tr=-}}, {{l-self|chp|ᐅᐧ|tr=-}}, {{l-self|chp|ᐤ|tr=-}}, {{l-self|chp|ᐸ|tr=-}}, {{l-self|chp|ᐯ|tr=-}}, {{l-self|chp|ᐱ|tr=-}}, {{l-self|chp|ᐳ|tr=-}}, {{l-self|chp|ᑊ|tr=-}}, {{l-self|chp|ᑕ|tr=-}}, {{l-self|chp|ᑌ|tr=-}}, {{l-self|chp|ᑎ|tr=-}}, {{l-self|chp|ᑐ|tr=-}}, {{l-self|chp|ᐟ|tr=-}}, {{l-self|chp|ᑲ|tr=-}}, {{l-self|chp|ᑫ|tr=-}}, {{l-self|chp|ᑭ|tr=-}}, {{l-self|chp|ᑯ|tr=-}}, {{l-self|chp|ᐠ|tr=-}}, {{l-self|chp|ᑦᐊ|tr=-}}, {{l-self|chp|ᑦᐁ|tr=-}}, {{l-self|chp|ᑦᐃ|tr=-}}, {{l-self|chp|ᑦᐅ|tr=-}}, {{l-self|chp|ᑦ|tr=-}}, {{l-self|chp|ᑲᐧ|tr=-}}, {{l-self|chp|ᑫᐧ|tr=-}}, {{l-self|chp|ᑭᐧ|tr=-}}, {{l-self|chp|ᑯᐧ|tr=-}}, {{l-self|chp|ᑦᑲ|tr=-}}, {{l-self|chp|ᑦᑫ|tr=-}}, {{l-self|chp|ᑦᑭ|tr=-}}, {{l-self|chp|ᑦᑯ|tr=-}}, {{l-self|chp|ᒈ|tr=-}}, {{l-self|chp|ᒅ|tr=-}}, {{l-self|chp|ᒆ|tr=-}}, {{l-self|chp|ᒇ|tr=-}}, {{l-self|chp|ᕍ|tr=-}}, {{l-self|chp|ᕃ|tr=-}}, {{l-self|chp|ᕄ|tr=-}}, {{l-self|chp|ᕊ|tr=-}}, {{l-self|chp|ᑦᕍ|tr=-}}, {{l-self|chp|ᑦᕃ|tr=-}}, {{l-self|chp|ᑦᕄ|tr=-}}, {{l-self|chp|ᑦᕊ|tr=-}}, {{l-self|chp|ᔆ|tr=-}}/{{l-self|chp|ᑦᔆ|tr=-}}, {{l-self|chp|ᐟᕍ|tr=-}}, {{l-self|chp|ᐟᕃ|tr=-}}, {{l-self|chp|ᐟᕄ|tr=-}}, {{l-self|chp|ᐟᕊ|tr=-}}, {{l-self|chp|ᒪ|tr=-}}, {{l-self|chp|ᒣ|tr=-}}, {{l-self|chp|ᒥ|tr=-}}, {{l-self|chp|ᒧ|tr=-}}, {{l-self|chp|ᒼ|tr=-}}, {{l-self|chp|ᓇ|tr=-}}, {{l-self|chp|ᓀ|tr=-}}, {{l-self|chp|ᓂ|tr=-}}, {{l-self|chp|ᓄ|tr=-}}, {{l-self|chp|ᐣ|tr=-}}, {{l-self|chp|ᖍ|tr=-}}, {{l-self|chp|ᖊ|tr=-}}, {{l-self|chp|ᖋ|tr=-}}, {{l-self|chp|ᖌ|tr=-}}, {{l-self|chp|ᑦ|tr=-}}/{{l-self|chp|ᙆ|tr=-}}, {{l-self|chp|ᓴ|tr=-}}, {{l-self|chp|ᓭ|tr=-}}, {{l-self|chp|ᓯ|tr=-}}, {{l-self|chp|ᓱ|tr=-}}, {{l-self|chp|ᐢ|tr=-}}, {{l-self|chp|ᐟᓴ|tr=-}}, {{l-self|chp|ᐟᓭ|tr=-}}, {{l-self|chp|ᐟᓯ|tr=-}}, {{l-self|chp|ᐟᓱ|tr=-}}, {{l-self|chp|ᕀ|tr=-}}, {{l-self|chp|ᔭ|tr=-}}, {{l-self|chp|ᔦ|tr=-}}, {{l-self|chp|ᔨ|tr=-}}, {{l-self|chp|ᔪ|tr=-}}, {{l-self|chp|ᘔ|tr=-}}, {{l-self|chp|ᘚ|tr=-}}, {{l-self|chp|ᘛ|tr=-}}, {{l-self|chp|ᘕ|tr=-}}, {{l-self|chp|ᐟᘔ|tr=-}}, {{l-self|chp|ᐟᘚ|tr=-}}, {{l-self|chp|ᐟᘛ|tr=-}}, {{l-self|chp|ᐟᘕ|tr=-}}, {{l-self|chp|ᗴ|tr=-}}, {{l-self|chp|ᗯ|tr=-}}, {{l-self|chp|ᗰ|tr=-}}, {{l-self|chp|ᗱ|tr=-}}, {{l-self|chp|ᐟᗴ|tr=-}}, {{l-self|chp|ᐟᗯ|tr=-}}, {{l-self|chp|ᐟᗰ|tr=-}}, {{l-self|chp|ᐟᗱ|tr=-}}, {{l-self|chp|ᒐ|tr=-}}, {{l-self|chp|ᒉ|tr=-}}, {{l-self|chp|ᒋ|tr=-}}, {{l-self|chp|ᒍ|tr=-}}, {{l-self|chp|ᑋ|tr=-}}, {{l-self|chp|ᐟᒐ|tr=-}}, {{l-self|chp|ᐟᒉ|tr=-}}, {{l-self|chp|ᐟᒋ|tr=-}}, {{l-self|chp|ᐟᒍ|tr=-}}, {{l-self|chp|ᑪ|tr=-}}, {{l-self|chp|ᑧ|tr=-}}, {{l-self|chp|ᑨ|tr=-}}, {{l-self|chp|ᑩ|tr=-}}, {{l-self|chp|ᕮ|tr=-}}, {{l-self|chp|ᕫ|tr=-}}, {{l-self|chp|ᕬ|tr=-}}, {{l-self|chp|ᕭ|tr=-}}, {{l-self|chp|ᕳ|tr=-}}, {{l-self|chp|ᕰ|tr=-}}, {{l-self|chp|ᕱ|tr=-}}, {{l-self|chp|ᕲ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|chp|title=The New Testament translated into the Chipewyan language|publisher=British and Foreign Bible Society|year=1881|translator=William West Kirkby|page=[https://archive.org/details/newtestament00lond/page/n9 3]}} =={{langname|iu}}== ==={{ĐM|pron}}=== *{{IPA4|iu|[pi]}} ==={{ĐM|syllable}}=== {{head|iu|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Inuktitut. #:{{ux|iu|[[ᐅᐱᕐᖔᖅ#Tiếng_Inuktitut|ᐅ'''ᐱ'''ᕐᖔᖅ]]|[[mùa xuân]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=iu|sc=Cans|qual=Chữ âm tiết tiếng Inuktitut|ᐃ|ᐄ|ᐅ|ᐆ|ᐊ|ᐋ|ᐦ|ᐱ|ᐲ|ᐳ|ᐴ|ᐸ|ᐹ|ᑉ|ᑎ|ᑏ|ᑐ|ᑑ|ᑕ|ᑖ|ᑦ|ᑭ|ᑮ|ᑯ|ᑰ|ᑲ|ᑳ|ᒃ|ᒋ|ᒌ|ᒍ|ᒎ|ᒐ|ᒑ|ᒡ|ᒥ|ᒦ|ᒧ|ᒨ|ᒪ|ᒫ|ᒻ|ᓂ|ᓃ|ᓄ|ᓅ|ᓇ|ᓈ|ᓐ|ᓯ|ᓰ|ᓱ|ᓲ|ᓴ|ᓵ|ᔅ|ᓕ|ᓖ|ᓗ|ᓘ|ᓚ|ᓛ|ᓪ|ᔨ|ᔩ|ᔪ|ᔫ|ᔭ|ᔮ|ᔾ|ᕕ|ᕖ|ᕗ|ᕘ|ᕙ|ᕚ|ᕝ|ᕆ|ᕇ|ᕈ|ᕉ|ᕋ|ᕌ|ᕐ|ᕿ|ᖀ|ᖁ|ᖂ|ᖃ|ᖄ|ᖅ|ᖏ|ᖐ|ᖑ|ᖒ|ᖓ|ᖔ|ᖕ|ᖠ|ᖡ|ᖢ|ᖣ|ᖤ|ᖥ|ᖦ}} ==={{ĐM|n}}=== {{head|iu|Danh từ}} #[[vật|Vật]], [[thứ]] =={{langname|ike}}== ==={{ĐM|pron}}=== *{{IPA4|ike|[pi]}} ==={{ĐM|syllable}}=== {{head|ike|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Inuktitut Đông Canada. #:{{ux|ike|ᒨᓯᓯ '''ᐱ'''ᖓᔪᖏᑦ|[[s:Lê-vi Ký|Lê-vi Ký]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=ike|sc=Cans|qual=Chữ âm tiết tiếng Inuktitut|ᐃ|ᐄ|ᐅ|ᐆ|ᐊ|ᐋ|ᐦ|ᐱ|ᐲ|ᐳ|ᐴ|ᐸ|ᐹ|ᑉ|ᑎ|ᑏ|ᑐ|ᑑ|ᑕ|ᑖ|ᑦ|ᑭ|ᑮ|ᑯ|ᑰ|ᑲ|ᑳ|ᒃ|ᒋ|ᒌ|ᒍ|ᒎ|ᒐ|ᒑ|ᒡ|ᒥ|ᒦ|ᒧ|ᒨ|ᒪ|ᒫ|ᒻ|ᓂ|ᓃ|ᓄ|ᓅ|ᓇ|ᓈ|ᓐ|ᓯ|ᓰ|ᓱ|ᓲ|ᓴ|ᓵ|ᔅ|ᓕ|ᓖ|ᓗ|ᓘ|ᓚ|ᓛ|ᓪ|ᔨ|ᔩ|ᔪ|ᔫ|ᔭ|ᔮ|ᔾ|ᕕ|ᕖ|ᕗ|ᕘ|ᕙ|ᕚ|ᕝ|ᕆ|ᕇ|ᕈ|ᕉ|ᕋ|ᕌ|ᕐ|ᕿ|ᖀ|ᖁ|ᖂ|ᖃ|ᖄ|ᖅ|ᖏ|ᖐ|ᖑ|ᖒ|ᖓ|ᖔ|ᖕ|ᖠ|ᖡ|ᖢ|ᖣ|ᖤ|ᖥ|ᖦ}} ==={{ĐM|ref}}=== *{{Chú thích web|ike|author=Canadian Bible Society|work=ᐊᒡᓔᑦ ᐃᑦᔪᕐᖕᓁᑦᑐᑦ|year=2023|entry=ᒨᓯᓯ ᐱᖓᔪᖏᑦ 1|entryurl=https://www.bible.com/bible/455/LEV.1.EAIB}} =={{langname|ikt}}== ==={{ĐM|pron}}=== *{{IPA4|ikt|[pi]}} ==={{ĐM|syllable}}=== {{head|ikt|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Inuvialuktun. #:{{ux|ikt|'''ᐱ'''ᒃᓴ|[[ảnh]], [[phim]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=ikt|sc=Cans|qual=Chữ âm tiết tiếng Inuvialuktun|ᐁ|ᐃ|ᐅ|ᐊ|ᐯ|ᐱ|ᐳ|ᐸ|ᑉ|ᑌ|ᑎ|ᑐ|ᑕ|ᑦ|ᑫ|ᑭ|ᑯ|ᑲ|ᒃ|ᒉ|ᒋ|ᒍ|ᒐ|ᒡ|ᒣ|ᒥ|ᒧ|ᒪ|ᒻ|ᓀ|ᓂ|ᓄ|ᓇ|ᓐ|ᓭ|ᓯ|ᓱ|ᓴ|ᔅ|ᓓ|ᓕ|ᓗ|ᓚ|ᓪ|ᔦ|ᔨ|ᔪ|ᔭ|ᔾ|ᕓ|ᕕ|ᕗ|ᕙ|ᕝ|ᕃ|ᕆ|ᕈ|ᕋ|ᕐ|ᙯ|ᕿ|ᖁ|ᖃ|ᖅ|ᙰ|ᖏ|ᖑ|ᖓ|ᖕ|ᙱ|ᙳ|ᙵ|ᖖ|ᖠ|ᖢ|ᖤ|ᖦ}} ==={{ĐM|ref}}=== * Nunavut Arctic College, ''[http://en.copian.ca/library/learning/nac/nac_dictionary/nac_dictionary.pdf Inuinnaqtun\English Dictionary]'' - COPIAN, tr. 69 =={{langname|xsl}}== ==={{ĐM|pron}}=== *{{IPA4|xsl|[pi]}} ==={{ĐM|syllable}}=== {{head|xsl|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Nam Slavey. ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết Nam Slavey|list={{l-self|xsl|ᐊ|tr=-}}, {{l-self|xsl|ᐁ|tr=-}}, {{l-self|xsl|ᐃ|tr=-}}, {{l-self|xsl|ᐅ|tr=-}}, {{l-self|xsl|ᐆ|tr=-}}, {{l-self|xsl|ᐊᐦ|tr=-}}, {{l-self|xsl|ᐸ|tr=-}}, {{l-self|xsl|ᐯ|tr=-}}, {{l-self|xsl|ᐱ|tr=-}}, {{l-self|xsl|ᐳ|tr=-}}, {{l-self|xsl|ᐴ|tr=-}}, {{l-self|xsl|ᐊᑉ|tr=-}}, {{l-self|xsl|ᒼᐸ|tr=-}}, {{l-self|xsl|ᒼᐯ|tr=-}}, {{l-self|xsl|ᒼᐱ|tr=-}}, {{l-self|xsl|ᒼᐳ|tr=-}}, {{l-self|xsl|ᒼᐴ|tr=-}}, {{l-self|xsl|ᗴ|tr=-}}, {{l-self|xsl|ᗯ|tr=-}}, {{l-self|xsl|ᗰ|tr=-}}, {{l-self|xsl|ᗱ|tr=-}}, {{l-self|xsl|ᣮ|tr=-}}, {{l-self|xsl|ᐨᗴ|tr=-}}, {{l-self|xsl|ᐨᗯ|tr=-}}, {{l-self|xsl|ᐨᗰ|tr=-}}, {{l-self|xsl|ᐨᗱ|tr=-}}, {{l-self|xsl|ᐨᣮ|tr=-}}, {{l-self|xsl|ᑕ|tr=-}}, {{l-self|xsl|ᑌ|tr=-}}, {{l-self|xsl|ᑎ|tr=-}}, {{l-self|xsl|ᑐ|tr=-}}, {{l-self|xsl|ᑑ|tr=-}}, {{l-self|xsl|ᐊᐨ|tr=-}}, {{l-self|xsl|ᐣᑕ|tr=-}}, {{l-self|xsl|ᐣᑌ|tr=-}}, {{l-self|xsl|ᐣᑎ|tr=-}}, {{l-self|xsl|ᐣᑐ|tr=-}}, {{l-self|xsl|ᐣᑑ|tr=-}}, {{l-self|xsl|ᗃ|tr=-}}, {{l-self|xsl|ᗀ|tr=-}}, {{l-self|xsl|ᗁ|tr=-}}, {{l-self|xsl|ᗂ|tr=-}}, {{l-self|xsl|ᣬ|tr=-}}, {{l-self|xsl|ᐊᑊ|tr=-}}, {{l-self|xsl|ᑲ|tr=-}}, {{l-self|xsl|ᑫ|tr=-}}, {{l-self|xsl|ᑭ|tr=-}}, {{l-self|xsl|ᑯ|tr=-}}, {{l-self|xsl|ᑰ|tr=-}}, {{l-self|xsl|ᐊᐠ|tr=-}}, {{l-self|xsl|ᑲᐦ|tr=-}}, {{l-self|xsl|ᑫᐦ|tr=-}}, {{l-self|xsl|ᑭᐦ|tr=-}}, {{l-self|xsl|ᑯᐦ|tr=-}}, {{l-self|xsl|ᑰᐦ|tr=-}}, {{l-self|xsl|ᖉ|tr=-}}, {{l-self|xsl|ᖆ|tr=-}}, {{l-self|xsl|ᖇ|tr=-}}, {{l-self|xsl|ᖈ|tr=-}}, {{l-self|xsl|ᣩ|tr=-}}, {{l-self|xsl|ᕍ|tr=-}}, {{l-self|xsl|ᕃ|tr=-}}, {{l-self|xsl|ᕄ|tr=-}}, {{l-self|xsl|ᕊ|tr=-}}, {{l-self|xsl|ᣡ|tr=-}}, {{l-self|xsl|ᐊᐟ|tr=-}}, {{l-self|xsl|ᐨᕍ|tr=-}}, {{l-self|xsl|ᐨᕃ|tr=-}}, {{l-self|xsl|ᐨᕄ|tr=-}}, {{l-self|xsl|ᐨᕊ|tr=-}}, {{l-self|xsl|ᐨᣡ|tr=-}}, {{l-self|xsl|ᒡᕍ|tr=-}}, {{l-self|xsl|ᒡᕃ|tr=-}}, {{l-self|xsl|ᒡᕄ|tr=-}}, {{l-self|xsl|ᒡᕊ|tr=-}}, {{l-self|xsl|ᒡᣡ|tr=-}}, {{l-self|xsl|ᒢᕍ|tr=-}}, {{l-self|xsl|ᒢᕃ|tr=-}}, {{l-self|xsl|ᒢᕄ|tr=-}}, {{l-self|xsl|ᒢᕊ|tr=-}}, {{l-self|xsl|ᒢᣡ|tr=-}}, {{l-self|xsl|ᒪ|tr=-}}, {{l-self|xsl|ᒣ|tr=-}}, {{l-self|xsl|ᒥ|tr=-}}, {{l-self|xsl|ᒧ|tr=-}}, {{l-self|xsl|ᒨ|tr=-}}, {{l-self|xsl|ᐊᒼ|tr=-}}, {{l-self|xsl|ᓇ|tr=-}}, {{l-self|xsl|ᓀ|tr=-}}, {{l-self|xsl|ᓂ|tr=-}}, {{l-self|xsl|ᓄ|tr=-}}, {{l-self|xsl|ᓅ|tr=-}}, {{l-self|xsl|ᐊᐣ|tr=-}}, {{l-self|xsl|ᐊᐡ|tr=-}}, {{l-self|xsl|ᓴ|tr=-}}, {{l-self|xsl|ᓭ|tr=-}}, {{l-self|xsl|ᓯ|tr=-}}, {{l-self|xsl|ᓱ|tr=-}}, {{l-self|xsl|ᓲ|tr=-}}, {{l-self|xsl|ᐊᐢ|tr=-}}, {{l-self|xsl|ᖚ|tr=-}}, {{l-self|xsl|ᖗ|tr=-}}, {{l-self|xsl|ᖘ|tr=-}}, {{l-self|xsl|ᖙ|tr=-}}, {{l-self|xsl|ᣫ|tr=-}}, {{l-self|xsl|ᕦ|tr=-}}, {{l-self|xsl|ᕞ|tr=-}}, {{l-self|xsl|ᕠ|tr=-}}, {{l-self|xsl|ᕤ|tr=-}}, {{l-self|xsl|ᕥ|tr=-}}, {{l-self|xsl|ᐊᒡ|tr=-}}, {{l-self|xsl|ᒡᕦ|tr=-}}, {{l-self|xsl|ᒡᕞ|tr=-}}, {{l-self|xsl|ᒡᕠ|tr=-}}, {{l-self|xsl|ᒡᕤ|tr=-}}, {{l-self|xsl|ᒡᕥ|tr=-}}, {{l-self|xsl|ᒐ|tr=-}}, {{l-self|xsl|ᒉ|tr=-}}, {{l-self|xsl|ᒋ|tr=-}}, {{l-self|xsl|ᒍ|tr=-}}, {{l-self|xsl|ᒎ|tr=-}}, {{l-self|xsl|ᐊᒢ|tr=-}}, {{l-self|xsl|ᐨᒐ|tr=-}}, {{l-self|xsl|ᐨᒉ|tr=-}}, {{l-self|xsl|ᐨᒋ|tr=-}}, {{l-self|xsl|ᐨᒍ|tr=-}}, {{l-self|xsl|ᐨᒎ|tr=-}}, {{l-self|xsl|ᕮ|tr=-}}, {{l-self|xsl|ᕫ|tr=-}}, {{l-self|xsl|ᕬ|tr=-}}, {{l-self|xsl|ᕭ|tr=-}}, {{l-self|xsl|ᣦ|tr=-}}, {{l-self|xsl|ᘔ|tr=-}}, {{l-self|xsl|ᘛ|tr=-}}, {{l-self|xsl|ᘚ|tr=-}}, {{l-self|xsl|ᘕ|tr=-}}, {{l-self|xsl|ᣱ|tr=-}}, {{l-self|xsl|ᐨᘔ|tr=-}}, {{l-self|xsl|ᐨᘛ|tr=-}}, {{l-self|xsl|ᐨᘚ|tr=-}}, {{l-self|xsl|ᐨᘕ|tr=-}}, {{l-self|xsl|ᐨᣱ|tr=-}}, {{l-self|xsl|ᐧᐊ|tr=-}}, {{l-self|xsl|ᐧᐁ|tr=-}}, {{l-self|xsl|ᐧᐃ|tr=-}}, {{l-self|xsl|ᐧᐅ|tr=-}}, {{l-self|xsl|ᐧᐆ|tr=-}}, {{l-self|xsl|ᔭ|tr=-}}, {{l-self|xsl|ᔦ|tr=-}}, {{l-self|xsl|ᔨ|tr=-}}, {{l-self|xsl|ᔪ|tr=-}}, {{l-self|xsl|ᔫ|tr=-}}, {{l-self|xsl|ᐊᕀ|tr=-}}, {{l-self|xsl|ᐊ́|tr=-}}}} =={{langname|nsk}}== ==={{ĐM|pron}}=== *{{IPA4|nsk|/pi/}} ==={{ĐM|syllable}}=== {{head|nsk|Chữ cái}} #Chữ cái âm tiết ''pi'' trong tiếng Naskapi. #:{{ux|nsk|ᓇᔅᑲ'''ᐱ'''|Naskapi|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=nsk|sc=Cans|qual=Chữ âm tiết tiếng Naskapi|ᐃ|ᐅ|ᐊ|ᐦ|ᐎ|ᐛ|ᐤ|ᐱ|ᐳ|ᐸ|ᑉ|ᑈ|ᑎ|ᑐ|ᑕ|ᑦ|ᑥ|ᑭ|ᑯ|ᑲ|ᒃ|ᒂ|ᒄ|ᒋ|ᒍ|ᒐ|ᒡ|ᒠ|ᒥ|ᒧ|ᒪ|ᒻ|ᒺ|ᓂ|ᓄ|ᓇ|ᓐ|ᓏ|ᓯ|ᓱ|ᓴ|ᔅ|ᔄ|ᔋ|ᔨ|ᔪ|ᔭ|ᔾᐟ|ᔽ|ᓕ|ᓗ|ᓚ|ᓪ|᙭|ᕆ|ᕈ|ᕋ|ᕐ}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Bill Jancewicz & Marguerite Mackenzie|work=Naskapi - English Dictionary|year=2020|publisher=SIL International|entry=ᐱ|entryurl=https://www.webonary.org/naskapi/browse/browse-vernacular/?key=nsk-Cans-CA-x-nasksy&letter=%E1%90%B1}} =={{langname|oj}}== ==={{ĐM|pron}}=== *{{IPA4|oj|/pi/}} ==={{ĐM|syllable}}=== {{head|oj|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Ojibwe. #:{{ux|oj|'''ᐱ'''ᐣ|tr='''pi'''n|[[khoai tây]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ âm tiết tiếng Ojibwe|list={{l-self|oj|ᐁ|tr=-}}, {{l-self|oj|ᐃ|tr=-}}, {{l-self|oj|ᐅ|tr=-}}, {{l-self|oj|ᐊ|tr=-}}, {{l-self|oj|ᐄ|tr=-}}, {{l-self|oj|ᐆ|tr=-}}, {{l-self|oj|ᐋ|tr=-}}, {{l-self|oj|ᐯ|tr=-}}, {{l-self|oj|ᐱ|tr=-}}, {{l-self|oj|ᐳ|tr=-}}, {{l-self|oj|ᐸ|tr=-}}, {{l-self|oj|ᐲ|tr=-}}, {{l-self|oj|ᐴ|tr=-}}, {{l-self|oj|ᐹ|tr=-}}, {{l-self|oj|ᑉ|tr=-}}, {{l-self|oj|ᑌ|tr=-}}, {{l-self|oj|ᑎ|tr=-}}, {{l-self|oj|ᑐ|tr=-}}, {{l-self|oj|ᑕ|tr=-}}, {{l-self|oj|ᑏ|tr=-}}, {{l-self|oj|ᑑ|tr=-}}, {{l-self|oj|ᑖ|tr=-}}, {{l-self|oj|ᑦ|tr=-}}, {{l-self|oj|ᑫ|tr=-}}, {{l-self|oj|ᑭ|tr=-}}, {{l-self|oj|ᑯ|tr=-}}, {{l-self|oj|ᑲ|tr=-}}, {{l-self|oj|ᑮ|tr=-}}, {{l-self|oj|ᑰ|tr=-}}, {{l-self|oj|ᑳ|tr=-}}, {{l-self|oj|ᒃ|tr=-}}, {{l-self|oj|ᒉ|tr=-}}, {{l-self|oj|ᒋ|tr=-}}, {{l-self|oj|ᒍ|tr=-}}, {{l-self|oj|ᒐ|tr=-}}, {{l-self|oj|ᒌ|tr=-}}, {{l-self|oj|ᒎ|tr=-}}, {{l-self|oj|ᒑ|tr=-}}, {{l-self|oj|ᒡ|tr=-}}, {{l-self|oj|ᒣ|tr=-}}, {{l-self|oj|ᒥ|tr=-}}, {{l-self|oj|ᒧ|tr=-}}, {{l-self|oj|ᒪ|tr=-}}, {{l-self|oj|ᒦ|tr=-}}, {{l-self|oj|ᒨ|tr=-}}, {{l-self|oj|ᒫ|tr=-}}, {{l-self|oj|ᒻ|tr=-}}, {{l-self|oj|ᓀ|tr=-}}, {{l-self|oj|ᓂ|tr=-}}, {{l-self|oj|ᓄ|tr=-}}, {{l-self|oj|ᓇ|tr=-}}, {{l-self|oj|ᓃ|tr=-}}, {{l-self|oj|ᓅ|tr=-}}, {{l-self|oj|ᓈ|tr=-}}, {{l-self|oj|ᓐ|tr=-}}, {{l-self|oj|ᓭ|tr=-}}, {{l-self|oj|ᓯ|tr=-}}, {{l-self|oj|ᓱ|tr=-}}, {{l-self|oj|ᓴ|tr=-}}, {{l-self|oj|ᓰ|tr=-}}, {{l-self|oj|ᓲ|tr=-}}, {{l-self|oj|ᓵ|tr=-}}, {{l-self|oj|ᔅ|tr=-}}, {{l-self|oj|ᔐ|tr=-}}, {{l-self|oj|ᔑ|tr=-}}, {{l-self|oj|ᔓ|tr=-}}, {{l-self|oj|ᔕ|tr=-}}, {{l-self|oj|ᔒ|tr=-}}, {{l-self|oj|ᔔ|tr=-}}, {{l-self|oj|ᔖ|tr=-}}, {{l-self|oj|ᔥ|tr=-}}, {{l-self|oj|ᔦ|tr=-}}, {{l-self|oj|ᔨ|tr=-}}, {{l-self|oj|ᔪ|tr=-}}, {{l-self|oj|ᔭ|tr=-}}, {{l-self|oj|ᔩ|tr=-}}, {{l-self|oj|ᔫ|tr=-}}, {{l-self|oj|ᔮ|tr=-}}, {{l-self|oj|ᔾ|tr=-}}, {{l-self|oj|ᐧᐁ|tr=-}}, {{l-self|oj|ᐧᐃ|tr=-}}, {{l-self|oj|ᐧᐅ|tr=-}}, {{l-self|oj|ᐧᐊ|tr=-}}, {{l-self|oj|ᐧᐄ|tr=-}}, {{l-self|oj|ᐧᐆ|tr=-}}, {{l-self|oj|ᐧᐋ|tr=-}}, {{l-self|oj|ᐤ|tr=-}}, {{l-self|oj|ᐦ}}}} =={{langname|ojg}}== ==={{ĐM|pron}}=== *{{IPA4|ojg|/pi/}} ==={{ĐM|syllable}}=== {{head|ojg|Chữ cái|tr=i}} #Chữ cái âm tiết ''pi'' trong tiếng Ojibwe Đông. #:{{ux|ojg|'''ᐱ'''ᒋ|tr='''pi'''chi|[[hoét]] [[cổ]] [[đỏ]]|inline=1}} ==={{ĐM|ref}}=== *[https://dictionary.nishnaabemwin.atlas-ling.ca Nishnaabemwin - Odawa & Eastern Ojibwe online dictionary] =={{langname|ojs}}== ==={{ĐM|pron}}=== *{{IPA4|ojs|/pi/}} ==={{ĐM|syllable}}=== {{head|ojs|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Ojibwe Severn. #:{{quote|ojs|ᐊᐦᐊᐁᐧ ᓈᐯ ᑮᒫᒑ ᐋᐣᒋᑯ '''ᐱ'''ᑯᐦ ᐊᐃᐧᔭᐣ ᐁᑮᐄᐧᐣᑕᒪᐋᐧᐨ, ᐁᑲᐧᐦ'''ᐱ'''ᐣ ᒋᓴᐢ ᑳᐃᐧᐣ ᒋᑮᐅᐣᒋ ᐲᐣᑎᑫᐨ ᑖᐃᐧᓂᐣᐠ ᒥᐦᓴᐋᐧᐨ '''ᐱ'''ᑯᐦ ᐊᐦ'''ᐱ'''ᐣ ᒋᐋᐧᐸᒫᑲᓅᐨ. ᐁᑲᐧ '''ᐱ'''ᑲᐧᑕᐦᑮᐣᐠ ᑮᐊᔮ ᐁᑳ ᐊᐃᐧᔭᐣ ᑳᐃᔑ ᐊᔮᓂᐣᐨ, ᔖᑰᐨ '''ᐱ'''ᑯᐦ ᐅᑮ'''ᐱ'''ᓈᓯᐦᑳᑰᐣ ᐊᐃᐧᔭᐣ '''ᐱ'''ᑯᐦ ᐋᐣᑎ ᐁᐅᐣᑐᐦᓭᓂᐨ.|Nhưng người ấy đi, đồn việc đó ra, tới đâu cũng thuật chuyện, đến nỗi Đức Chúa Jêsus không vào thành cách rõ-ràng được nữa; song Ngài ở ngoài, tại nơi vắng-vẻ; và người ta từ bốn phương đều đến cùng Ngài. ([[s:Mác/1#1:45|Mác 1:45]])}} ==={{ĐM|ref}}=== *{{Chú thích web|ojs|work=mishamikoweesh|year=2025|entry=ᒪᕒᐠ 1|entryurl=https://kfl-dmedia.s3.us-west-002.backblazeb2.com/Collections/Website_Resources/Web+apps/ca.mishamikoweesh.saint.mark/NT-41-MRK-001.html}} =={{langname|ojw}}== ==={{ĐM|pron}}=== *{{IPA4|ojw|/pi/}} ==={{ĐM|syllable}}=== {{head|ojw|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Ojibwe Tây. #:{{ux|ojw|ᐋ'''ᐱ'''ᒋ|tr=aa'''pi'''ji|[[rất]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích sách|ojw|author=W. M. Watts|title=Bible and Gospel History in Saulteaux|year=1900|url=https://archive.org/details/OJWPOR_DBS_HS}} *[https://ojibwegrammar.langsci.wisc.edu/Assets/Pdfs/VocabWestOjibHighFreqVocab.pdf Frequently Used Uninflected Words (Western Ojibwe)] =={{langname|ojb}}== ==={{ĐM|pron}}=== *{{IPA4|ojb|/pi/}} ==={{ĐM|syllable}}=== {{head|ojb|Chữ cái|tr=pi}} #Chữ cái âm tiết ''pi'' trong tiếng Ojibwe Tây Bắc. #:{{ux|ojb|ᐆ'''ᐱ'''ᑖᔭ|tr=Oo'''pi'''taaya|[[s:Áp-đia|Áp-đia]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|ojb|author=Canadian Bible Society|work=ᐅᒋᐺ ᑭᒋᒪᓯᓇᐃᑲᓐ|year=2008|entry=ᐆᐱᑖᔭ 1|entryurl=https://www.bible.com/bible/1113/OBA.1.OJBS}} *{{Chú thích web|ojb|author=Canadian Bible Society|work=Ojibwe Kihcimasina'ikan|year=2008|entry=Oopitaaya 1|entryurl=https://www.bible.com/bible/1119/OBA.1.OJBR}} [[Thể loại:Khối ký tự Unified Canadian Aboriginal Syllabics|31]] qjdd0zjwnpr0av3bq10o6yn2nfhf2ju Khánh Hòa 0 408766 2463735 2026-07-20T08:25:49Z Hannah Granger 61498 ([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:pr-noun:# Một [[tỉnh thành]] của [[Việt Nam]].# [[nằm|Nằm]] ở [[vùng]] [[duyên hải|Duyên hải]] [[miền]] [[Trung]]. 2463735 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|pr-noun}}=== {{vi-pr-noun}} # Một [[tỉnh thành]] của [[Việt Nam]]. # [[nằm|Nằm]] ở [[vùng]] [[duyên hải|Duyên hải]] [[miền]] [[Trung]]. ===={{ĐM|trans}}==== {{trans-top}} * {{langname|en}}: {{t|en|Khanh Hoa}} * {{langname|zh}}: {{t|zh|庆和}} {{trans-bottom}} {{mẫu}} fu0fu3fgtsxb0zmye8guex7ov7u59fg 2463753 2463735 2026-07-20T09:29:46Z Hiyuune 50834 /* Tiếng Việt */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463753 wikitext text/x-wiki =={{langname|vi}}== {{wp}} ==={{ĐM|alt}}=== * {{alt|vi|Khánh Hòa}} ==={{ĐM|etym}}=== {{vi-etym-sino|慶和}}. ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|pr-noun}}=== {{vi-proper noun|head=[[khánh|Khánh]] [[hoà|Hoà]]}} # {{place|vi|tỉnh|c/Việt Nam}} ===={{ĐM|trans}}==== {{trans-top|tỉnh của Việt Nam}} * {{langname|en}}: {{t+|en|Khanh Hoa}} * {{langname|zh}}: {{t|zh|庆和}} {{trans-bottom}} ===={{ĐM|desc}}==== * {{desc|bor=1|en|Khánh Hoà}} ==={{ĐM|see}}=== {{bảng:VN/vi}} q0c5cmsv8rlqw9l7ckr2ogsge261u8n 2463754 2463753 2026-07-20T09:30:36Z Hiyuune 50834 /* Dịch */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2463754 wikitext text/x-wiki =={{langname|vi}}== {{wp}} ==={{ĐM|alt}}=== * {{alt|vi|Khánh Hòa}} ==={{ĐM|etym}}=== {{vi-etym-sino|慶和}}. ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|pr-noun}}=== {{vi-proper noun|head=[[khánh|Khánh]] [[hoà|Hoà]]}} # {{place|vi|tỉnh|c/Việt Nam}} ===={{ĐM|trans}}==== {{trans-top|tỉnh của Việt Nam}} * {{langname|en}}: {{t+|en|Khanh Hoa}} * {{langname|ja}}: {{t|ja|慶和|tr=Keiwa}} * {{langname|zh}}: *: {{langname|cmn}}: {{t|cmn|慶和|tr=Qìnghé}} {{trans-bottom}} ===={{ĐM|desc}}==== * {{desc|bor=1|en|Khánh Hoà}} ==={{ĐM|see}}=== {{bảng:VN/vi}} 5x7ayj47n9a5supwaj2b8n87431d4gn ပဵတ်း 0 408767 2463738 2026-07-20T08:28:22Z Hiyuune 50834 Trang mới: “=={{langname|shn}}== ==={{section|etym}}=== {{inh+|shn|tai-swe-pro|*petᴰˢ²||vịt}}, từ {{inh|shn|tai-pro|*pitᴰ||vịt}}. Cùng gốc với {{cog|th|เป็ด}}, {{cog|nod|ᨸᩮᩢ᩠ᨯ}}, {{cog|kkh|ᨸᩮ᩠ᨯ}}, {{cog|lo|ເປັດ}}, {{cog|tts|เป็ด}}, {{cog|khb|ᦵᦔᧆ}}, {{cog|blt|ꪹꪜꪸꪒ}}, {{cog|tdd|ᥙᥥᥖᥱ}}, {{cog|aho|𑜆𑜢𑜄𑜫}}, {{cog|za|bit}}, {{cog|zhn|baet}}, {{m|zhn|byet}}, {{cog|zzj|bet}}, {{cog|pcc|bidt}}, {{cog|…” 2463738 wikitext text/x-wiki =={{langname|shn}}== ==={{section|etym}}=== {{inh+|shn|tai-swe-pro|*petᴰˢ²||vịt}}, từ {{inh|shn|tai-pro|*pitᴰ||vịt}}. Cùng gốc với {{cog|th|เป็ด}}, {{cog|nod|ᨸᩮᩢ᩠ᨯ}}, {{cog|kkh|ᨸᩮ᩠ᨯ}}, {{cog|lo|ເປັດ}}, {{cog|tts|เป็ด}}, {{cog|khb|ᦵᦔᧆ}}, {{cog|blt|ꪹꪜꪸꪒ}}, {{cog|tdd|ᥙᥥᥖᥱ}}, {{cog|aho|𑜆𑜢𑜄𑜫}}, {{cog|za|bit}}, {{cog|zhn|baet}}, {{m|zhn|byet}}, {{cog|zzj|bet}}, {{cog|pcc|bidt}}, {{cog|skb|ปิ๊ด}}. So sánh với {{cog|och|-}} {{och-l|鴄}}, {{cog|qfa-onb-pro|*ɓitᴰ¹}}. ==={{section|pron}}=== {{shn-pron}} ==={{section|n}}=== {{shn-noun|တူဝ်}} # [[vịt|Vịt]]. hgv5y7vj8jixea43dk2o5vq6903akl4 政基 0 408768 2463739 2026-07-20T08:52:37Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}}” 2463739 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|まさ|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|まさき}} # {{given name|ja|nam|sort=まさき}} 6dl1a9oboif0og5tbrd7ztp94di5zx5 ዳክየ 0 408769 2463740 2026-07-20T09:04:35Z Hiyuune 50834 + am 2463740 wikitext text/x-wiki =={{langname|am}}== ==={{section|n}}=== {{am-noun|tr=dakəyä}} # [[vịt|Vịt]]. {{C|am|Vịt}} dswg30r7ks2ygszm78br50nwuanoiz9 chooskani 0 408770 2463741 2026-07-20T09:05:58Z Hiyuune 50834 Trang mới: “=={{langname|akz}}== ==={{section|n}}=== {{head|akz|Danh từ}} # [[vịt|Vịt]].” 2463741 wikitext text/x-wiki =={{langname|akz}}== ==={{section|n}}=== {{head|akz|Danh từ}} # [[vịt|Vịt]]. mid90w3hrxj8ukssjoflulp4jvibdj0 өйрәктәр 0 408771 2463743 2026-07-20T09:11:17Z Hiyuune 50834 + ba 2463743 wikitext text/x-wiki =={{langname|ba}}== ==={{section|n}}=== {{head|ba|Biến thể hình thái danh từ}} # {{infl of|ba|өйрәк||absv|pl}} djmececbbsxhq6wq1cohkanerojc1ro өйрәккә 0 408772 2463744 2026-07-20T09:12:53Z Hiyuune 50834 + ba 2463744 wikitext text/x-wiki =={{langname|ba}}== ==={{section|n}}=== {{head|ba|Biến thể hình thái danh từ}} # {{infl of|ba|өйрәк||dat|s}} g9tvkb6wykxf6om0z8pk0b3vh6eeyy8 өйрәкте 0 408773 2463745 2026-07-20T09:13:25Z Hiyuune 50834 + ba 2463745 wikitext text/x-wiki =={{langname|ba}}== ==={{section|n}}=== {{head|ba|Biến thể hình thái danh từ}} # {{infl of|ba|өйрәк||acc|def|s}} hucs72yhf394hce1n8m99rajtc2erna өйрәктә 0 408774 2463746 2026-07-20T09:13:51Z Hiyuune 50834 + ba 2463746 wikitext text/x-wiki =={{langname|ba}}== ==={{section|n}}=== {{head|ba|Biến thể hình thái danh từ}} # {{infl of|ba|өйрәк||loc|s}} mdjrew6pqsiu90sibaby4t7c311ddck jidaada 0 408775 2463752 2026-07-20T09:27:28Z Hiyuune 50834 Trang mới: “=={{langname|pga}}== [[Image:Chicken portrait.jpg|thumb|Jidaada]] ==={{section|etym}}=== Từ {{der|pga|apd|جدادة|tr=jidāda}}, từ {{der|pga|ar|دَجَاجَة}}. ==={{section|pron}}=== {{pga-IPA}} ==={{section|n}}=== {{head|pga|Danh từ}} # [[gà|Gà]]. ==={{ĐM|ref}}=== * {{R:pga:Smith-Ama|page=30}} {{topics|pga|Gia cầm|Gà}}” 2463752 wikitext text/x-wiki =={{langname|pga}}== [[Image:Chicken portrait.jpg|thumb|Jidaada]] ==={{section|etym}}=== Từ {{der|pga|apd|جدادة|tr=jidāda}}, từ {{der|pga|ar|دَجَاجَة}}. ==={{section|pron}}=== {{pga-IPA}} ==={{section|n}}=== {{head|pga|Danh từ}} # [[gà|Gà]]. ==={{ĐM|ref}}=== * {{R:pga:Smith-Ama|page=30}} {{topics|pga|Gia cầm|Gà}} a2e4n74421u4scmppteubyd4o0sh69c