跳转到内容

模組:Headword/data

維基詞典,自由的多語言詞典
local headword_page_module = "Module:headword/page"

local list_to_set = require("Module:table").listToSet

local data = {}

------ 1. Lists which are converted into sets. ------

--[==[ var:
Large pages where we disable label tracking, red link checking and similar.
]==]
data.large_pages = list_to_set {
	-- pages that consistently hit timeouts
	"a",
	-- pages that sometimes hit timeouts
	"A",
	"baba",
	"de",
	"e",
	"i",
	"lima",
	"o",
	"u",
	"и",
	"山",
	"子",
	"月",
	"一",
	"人",
}

--[==[ var:
Map from singular to plural, and from plural to itself, for recognized parts of speech with irregular plurals. Most of
these are invariable plurals, e.g. `kanji` is its own plural; but we also have `mora` plural `morae`.
]==]
data.irregular_plurals = list_to_set({
	"cmavo",
	"cmene",
	"fu'ivla",
	"gismu",
	"Han tu",
	"hanja",
	"hanzi","漢字","汉字",
	"jyutping","粵語拼音","粤语拼音",
	"kana","假名",
	"kanji",
	"lujvo",
	"phrasebook",
	"pinyin","拼音",
	"rafsi",
}, function(_, item)
	return item
end)

local irregular_plurals = data.irregular_plurals

-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
	mora = "morae"
} do
	irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end

--[==[ var:
Recognized lemmas. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category
'LANG lemmas' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and
is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking
categories:
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANG]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS/LANG]]
]==]
data.lemmas = list_to_set{
	"abbreviations","縮寫","缩写",
	"acronyms","首字母縮略詞","首字母缩略词",
	"adjectives","形容詞","形容词",
	"adnominals","連體詞",
	"adpositions",
	"adverbs","副詞","副词",
	"affixes","綴詞","缀词",
	"ambipositions","遊置詞","游置词",
	"articles","冠詞","冠词",
	"chengyu","成語","成语",
	"circumfixes","環綴","环缀",
	"circumpositions",
	"classifiers","量詞","量词",
	"cmavo",
	"cmavo clusters",
	"cmene",
	"combining forms",
	"conjunctions","連詞","连词",
	"counters","量詞","量词",
	"determiners","限定詞","限定词",
	"diacritical marks","附加符號","附加符号",
	"digraphs",
	"equative adjectives",
	"fu'ivla",
	"gismu",
	"Han characters","漢字","汉字",
	"Han tu","漢字","汉字",
	"hanja","漢字","汉字",
	"hanzi","漢字","汉字",
	"ideophones","擬態詞",
	"idioms","熟語","熟语","俗語","俗语",
	"infixes","中綴","中缀",
	"initialisms","首字母縮略詞","首字母缩略词",
	"iteration marks","疊字符號","叠字符号",
	"interfixes","間綴","间缀",
	"interjections","感嘆詞","感叹词","感歎詞",
	"kana","假名",
	"kanji","漢字","汉字",
	"letters","字母",
	"ligatures","合字",
	"logograms",
	"lujvo",
	"morae","音拍",
	"morphemes","詞素","词素",
	"non-constituents",
	"nouns","名詞","名词",
	"numbers","數字","数字",
	"numeral symbols","數字符號","数字符号",
	"numerals","數詞","数词",
	"particles","助詞","助词",
	"phrases","短語","短语",
	"postpositions","後置詞","后置词",
	"postpositional phrases","後置詞短語","后置词短语",
	"predicatives","表語","表语",
	"prefixes","前綴","前缀",
	"prepositional phrases","介詞短語","介词短语",
	"prepositions","介詞","介词",
	"preverbs",
	"pronominal adverbs","代詞性副詞","代词性副词",
	"pronouns","代詞","代词",
	"proper nouns","專有名詞","专有名词",
	"proverbs","諺語","谚语",
	"punctuation marks","標點符號","标点符号",
	"relatives","關係詞",
	"roots","詞根","词根",
	"stems","詞幹","词干",
	"suffixes","後綴","后缀",
	"syllables","音節","音节",
	"symbols","符號","符号",
	"verbs","動詞","动词",
}

--[==[ var:
Recognized non-lemma forms. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the
category 'LANG non-lemma forms' will automatically be added. If the part of speech is not a singular or plural lemma or
non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added
to various tracking categories; see the documentation of `data.lemmas`.
]==]
data.nonlemmas = list_to_set{
	"active participle forms","主動分詞變格形","主动分词变格形",
	"active participles","主動分詞","主动分词",
	"adjectival participles","形容詞性分詞","形容词性分词",
	"adjective forms","形容詞形式","形容词形式","形容詞變格形","形容词变格形",
	"adjective feminine forms","形容詞陰性變格形","形容词阴性变格形", -- FIXME, remove this
	"adjective plural forms","形容詞複數變格形","形容词复数变格形", -- l10n: enwt 已移除,zhwt 仍在使用
	"adverb forms","副詞形式","副词形式","副詞變格形","副词变格形",
	"adverbial participles","副詞性分詞","副词性分词",
	"agent participles",
	"article forms","冠詞形式","冠词形式","冠詞變格形","冠词变格形",
	"circumfix forms","環綴變格形","环缀变格形",
	"combined forms",
	"comparative adjective forms","形容詞比較級變格形","形容词比较级变格形",
	"comparative adjectives","形容词比较级","形容詞比較級",
	"comparative adverb forms","副詞比較級變格形","副词比较级变格形",
	"comparative adverbs","副詞比較級","副词比较级",
	"conjunction forms","連詞形式","连词形式","連詞變格形","连词变格形",
	"contractions","縮約形","缩约形",
	"converbs","動副詞","动副词",
	"determiner forms","限定詞形式","限定词形式","限定詞變格形","限定词变格形",
	"determiner superlative forms","限定詞最高級變格形","限定词最高级变格形", -- l10n: enwt 已移除,zhwt 仍在使用
	"diminutive nouns","指小名詞","指小名词",
	"elative adjectives",
	"equative adjective forms",
	"equative adjectives",
	"future participles",
	"gerunds","動名詞","动名词",
	"infinitive forms","不定式",
	"infinitives",
	"interjection forms","感嘆詞形式","感叹词形式","感嘆詞變格形","感叹词变格形",
	"jyutping","粵語拼音","粤语拼音",
	"kanji readings","漢字讀音","汉字读音",
	"misspellings","拼錯","拼错","拼寫錯誤","拼写错误",
	"negative participles","否定分詞","否定分词",
	"nominal participles","名詞性分詞","名词性分词",
	"noun construct forms", -- FIXME, remove this
	"noun dual forms","名詞雙數形式", -- l10n: enwt 已移除,zhwt 仍在使用
	"noun forms","名詞形式","名词形式","名詞變格形","名词变格形",
	"noun paucal forms","名詞微數形式","名词微数形式", -- l10n: enwt 已移除,zhwt 仍在使用
	"noun plural forms","名詞複數形式","名词复数形式", -- l10n: enwt 已移除,zhwt 仍在使用
	"numeral forms","數詞形式","数词形式","數詞變格形","数词变格形",
	"participles","分詞","分词",
	"participle forms","分詞變格形","分词变格形",
	"particle forms","助詞形式","助词形式","助詞變格形","助词变格形",
	"passive participles","被動分詞","被动分词",
	"past active participles","過去主動分詞","过去主动分词",
	"past adverbial participles","過去副詞性分詞","过去副词性分词",
	"past participles","過去分詞","过去分词",
	"past participle forms","過去分詞變格形","过去分词变格形","過去分詞形式","过去分词形式",
	"past passive participles","過去被動分詞","过去被动分词",
	"perfect active participles","完成主動分詞","完成主动分词",
	"perfect participles","完成分詞","完成分词",
	"perfect passive participles","完成被動分詞","完成被动分词",
	"pinyin","拼音",
	"postposition forms","後置詞變格形","后置词变格形",
	"prefix forms","前綴變格形","前缀变格形",
	"preposition contractions",
	"preposition forms","介詞形式","介词形式","介詞變格形","介词变格形",
	"prepositional pronouns","介詞性代詞","介词性代词",
	"present active participles","現在主動分詞","现在主动分词",
	"present adverbial participles","現在副詞性分詞","现在副词性分词",
	"present participles","現在分詞","现在分词",
	"present passive participles","現在被動分詞","现在被动分词",
	"preverb forms",
	"pronoun forms","代詞形式","代词形式","代詞變格形","代词变格形",
	"proper noun forms","專有名詞形式","专有名词形式","專有名詞變格形","专有名词变格形",
	"proper noun plural forms","專有名詞複數形式","专有名词复数形式", -- l10n: enwt 已移除,zhwt 仍在使用
	"rafsi",
	"romaji","羅馬字","罗马字",
	"romanizations","羅馬化","罗马化",
	"root forms","詞根變格形","词根变格形",
	"singulatives",
	"suffix forms","後綴變格形","后缀变格形",
	"superlative adjective forms","形容詞最高級變格形","形容词最高级变格形",
	"superlative adjectives","形容詞最高級","形容词最高级",
	"superlative adverb forms","副詞最高級變格形","副词最高级变格形",
	"superlative adverbs","副詞最高級","副词最高级",
	"verb forms","動詞形式","动词形式","動詞變位形式","动词变位形式",
	"verbal nouns","動名詞","动名词",
}

--[==[ var:
List of languages that will not have links to separate parts of the headword.
]==]
data.no_multiword_links = list_to_set{
	"zh",
}

--[==[ var:
List of languages that will not have `LANG multiword terms` categories added. There are various reasons why languages
are in this list: (a) words are written without spaces between them; (b) syllables are written with spaces between them;
(c) variant reconstructions are notated with a tilde surrounded by spaces; (d) the language is a sign language, where
pagenames are multiword descriptions of the gesture(s) required to make an individual sign; (e) some other weirdnesses.
]==]
data.no_multiword_cat = list_to_set{
	-------- Languages without spaces between words (sometimes spaces between phrases) --------
	"blt", -- Tai Dam
	"ja", -- Japanese
	"khb", -- Lü
	"km", -- Khmer
	"lo", -- Lao
	"mnw", -- Mon
	"my", -- Burmese
	"nan", -- Min Nan (some words in Latin script; hyphens between syllables)
	"nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables)
	"nod", -- Northern Thai
	"ojp", -- Old Japanese
	"shn", -- Shan
	"sou", -- Southern Thai
	"tdd", -- Tai Nüa
	"th", -- Thai
	"tts", -- Isan
	"twh", -- Tai Dón
	"txg", -- Tangut
	"zh", -- Chinese (all varieties with Chinese characters)
	"zkt", -- Khitan

	-------- Languages with spaces between syllables --------
	"ahk", -- Akha
	"aou", -- A'ou
	"atb", -- Zaiwa
	"byk", -- Biao
	"cdy", -- Chadong
	--"duu", -- Drung; not sure
	--"hmx-pro", -- Proto-Hmong-Mien
	--"hnj", -- Green Hmong; not sure
	"huq", -- Tsat
	"ium", -- Iu Mien
	--"lis", -- Lisu; not sure
	"mtq", -- Muong
	--"mww", -- White Hmong; not sure
	"onb", -- Lingao
	--"sit-gkh", -- Gokhy; not sure
	--"swi", -- Sui; not sure
	"tbq-lol-pro", -- Proto-Loloish
	"tdh", -- Thulung
	"ukk", -- Muak Sa-aak
	"vi", -- Vietnamese
	"yig", -- Wusa Nasu
	"zng", -- Mang

	-------- Languages with ~ with surrounding spaces used to separate variants --------
	"mkh-ban-pro", -- Proto-Bahnaric
	"sit-pro", -- Proto-Sino-Tibetan; listed above

	-------- Other weirdnesses --------
	"mul", -- Translingual; gestures, Morse code, etc.
	"aot", -- Atong (India); bullet is a letter

	-------- All sign languages	--------
	"ads",
	"aed",
	"aen",
	"afg",
	"ase",
	"asf",
	"asp",
	"asq",
	"asw",
	"bfi",
	"bfk",
	"bog",
	"bqn",
	"bqy",
	"bvl",
	"bzs",
	"cds",
	"csc",
	"csd",
	"cse",
	"csf",
	"csg",
	"csl",
	"csn",
	"csq",
	"csr",
	"doq",
	"dse",
	"dsl",
	"ecs",
	"esl",
	"esn",
	"eso",
	"eth",
	"fcs",
	"fse",
	"fsl",
	"fss",
	"gds",
	"gse",
	"gsg",
	"gsm",
	"gss",
	"gus",
	"hab",
	"haf",
	"hds",
	"hks",
	"hos",
	"hps",
	"hsh",
	"hsl",
	"icl",
	"iks",
	"ils",
	"inl",
	"ins",
	"ise",
	"isg",
	"isr",
	"jcs",
	"jhs",
	"jls",
	"jos",
	"jsl",
	"jus",
	"kgi",
	"kvk",
	"lbs",
	"lls",
	"lsl",
	"lso",
	"lsp",
	"lst",
	"lsy",
	"lws",
	"mdl",
	"mfs",
	"mre",
	"msd",
	"msr",
	"mzc",
	"mzg",
	"mzy",
	"nbs",
	"ncs",
	"nsi",
	"nsl",
	"nsp",
	"nsr",
	"nzs",
	"okl",
	"pgz",
	"pks",
	"prl",
	"prz",
	"psc",
	"psd",
	"psg",
	"psl",
	"pso",
	"psp",
	"psr",
	"pys",
	"rms",
	"rsl",
	"rsm",
	"sdl",
	"sfb",
	"sfs",
	"sgg",
	"sgx",
	"slf",
	"sls",
	"sqk",
	"sqs",
	"ssp",
	"ssr",
	"svk",
	"swl",
	"syy",
	"tse",
	"tsm",
	"tsq",
	"tss",
	"tsy",
	"tza",
	"ugn",
	"ugy",
	"ukl",
	"uks",
	"vgt",
	"vsi",
	"vsl",
	"vsv",
	"xki",
	"xml",
	"xms",
	"ygs",
	"ysl",
	"zib",
	"zsl",
}

--[==[ var:
List of languages where a hyphen is not considered a word separator for the `LANG multiword terms` category. There are
numerous reasons why languages are in this list; by each language should be listed the reason for inclusion.
]==]
data.hyphen_not_multiword_sep = list_to_set{
	"akk", -- Akkadian; hyphens between syllables
	"akl", -- Aklanon; hyphens for mid-word glottal stops
	"ber-pro", -- Proto-Berber; morphemes separated by hyphens
	"ceb", -- Cebuano; hyphens for mid-word glottal stops
	"cnk", -- Khumi Chin; hyphens used in single words
	"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
	"de", -- German; too many false positives
	"esx-esk-pro", -- hyphen used to separate morphemes
	"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
	"gd", -- Scottish Gaelic; too many false positives like [[a-chianaibh]], [[a-nìos]], [[an-dè]] and other adverbs in a- and an-
	"hil", -- Hiligaynon; hyphens for mid-word glottal stops
	"hnn", -- Hanunoo; too many false positives
	"ilo", -- Ilocano; hyphens for mid-word glottal stops
	"kne", -- Kankanaey; hyphens for mid-word glottal stops
	"lcp", -- Western Lawa; dash as syllable joiner
	"lwl", -- Eastern Lawa; dash as syllable joiner
	"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
	"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
	"msb", -- Masbatenyo; too many false positives
	"tl", -- Tagalog; too many false positives
	"war", -- Waray-Waray; too many false positives
	"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}

--[==[ var:
List of languages that will not have `LANG masculine nouns` and similar categories added. Generally, these languages are
lacking gender but use the gender field for other purposes. (This is a massive hack and should be changed.)
]==]
data.no_gender_cat = list_to_set{
	-- Languages without gender but which use the gender field for other purposes
	"ja",
	"th",
}

--[==[ var:
List of languages where [[Module:headword]] should not attempt to generate a transliteration even if the term is written
in a non-Latin script. FIXME: Notate reasons why each language is in this list.
]==]
data.notranslit = list_to_set{
	"ams",
	"az",
	"bbc",
	"bug",
	"cdo",
	"cia",
	"cjm",
	"cjy",
	"cmn",
	"cnp",
	"cpi",
	"cpx",
	"csp",
	"czh",
	"czo",
	"gan",
	"hak",
	"hnm",
	"hsn",
	"ja",
	"kzg",
	"lad",
	"ltc",
	"luh",
	"lzh",
	"mnp",
	"ms",
	"mul",
	"mvi",
	"nan",
	"nan-dat",
	"nan-hbl",
	"nan-hlh",
	"nan-lnx",
	"nan-tws",
	"nan-zhe",
	"nan-zsh",
	"och",
	"oj",
	"okn",
	"ryn",
	"rys",
	"ryu",
	"sh",
	"sjc",
	"tgt",
	"th",
	"tkn",
	"tly",
	"txg",
	"und",
	"vi",
	"wuu",
	"xug",
	"yoi",
	"yox",
	"yue",
	"za",
	"zh",
	"zhx-sic",
	"zhx-tai",
}

--[==[ var:
Languages where we track all direct uses of {{tl|head}} in place of a language-specific template, such as
{{tl|en-head}}, {{tl|hi-head}}, {{tl|sa-head}}, {{tl|tl-head}}.
]==]
data.track_head_template = list_to_set{
	-- "en", -- when the time comes?
	"hi",
	"sa",
	"tl",
}

--[==[ var:
List of script codes for which a script-tagged display title will be added.
]==]
data.toBeTagged = list_to_set{
	"Ahom",
	"Arab",
		"fa-Arab",
		"Aran",
	"Armi",
	"Armn",
	"Avst",
	"Bali",
	"Bamu",
	"Batk",
	"Beng",
		"as-Beng",
	"Bopo",
	"Brah",
	"Brai",
	"Bugi",
	"Buhd",
	"Cakm",
	"Cans",
	"Cari",
	"Cham",
	"Cher",
	"Copt",
	"Cprt",
	"Cyrl",
	"Cyrs",
	"Deva",
	"Dsrt",
	"Egyd",
	"Egyp",
	"Ethi",
	"Geok",
	"Geor",
	"Glag",
	"Goth",
	"Grek",
		"Polyt",
	"Gujr",
	"Guru",
	"Hang",
	"Hani",
	"Hano",
	"Hebr",
	"Hira",
	"Hluw",
	"Ital",
	"Java",
	"Kali",
	"Kana",
	"Khar",
	"Khmr",
	"Knda",
	"Kthi",
	"Lana",
	"Laoo",
	"Latn",
		"Latf",
		"Latg",
		"pjt-Latn",
	"Lepc",
	"Limb",
	"Linb",
	"Lisu",
	"Lyci",
	"Lydi",
	"Mand",
	"Mani",
	"Marc",
	"Merc",
	"Mero",
	"Mlym",
	"Mong",
		"mnc-Mong",
		"sjo-Mong",
		"xwo-Mong",
	"Mtei",
	"Mymr",
	"Narb",
	"Nkoo",
	"Nshu",
	"Ogam",
	"Olck",
	"Orkh",
	"Orya",
	"Osma",
	"Ougr",
	"Palm",
	"Phag",
	"Phli",
	"Phlv",
	"Phnx",
	"Plrd",
	"Prti",
	"Rjng",
	"Runr",
	"Samr",
	"Sarb",
	"Saur",
	"Sgnw",
	"Shaw",
	"Shrd",
	"Sinh",
	"Sora",
	"Sund",
	"Sylo",
	"Syrc",
	"Tagb",
	"Tale",
	"Talu",
	"Taml",
	"Tang",
	"Tavt",
	"Telu",
	"Tfng",
	"Tglg",
	"Thaa",
	"Thai",
	"Tibt",
	"Ugar",
	"Vaii",
	"Xpeo",
	"Xsux",
	"Yiii",
	"Zmth",
	"Zsym",

	"Ipach",
	"Music",
	"Rumin",
}

--[==[ var:
Parts of speech which will not be categorised in categories like `English terms spelled with É` if the term is the
character in question (e.g. the letter entry for English [[é]]). This contrasts with entries like the French adjective
[[m̂]], which is a one-letter word spelled with the letter.
]==]
data.pos_not_spelled_with_self = list_to_set{
	"diacritical marks",
	"Han characters",
	"Han tu",
	"hanja",
	"hanzi",
	"iteration marks",
	"kana",
	"kanji",
	"letters",
	"ligatures",
	"logograms",
	"morae",
	"numeral symbols",
	"numerals",
	"punctuation marks",
	"syllables",
	"symbols",
}

------ 2. Lists not converted into sets. ------

--[==[ var:
List of languages that will default to `sccat` being true, i.e. categories like `LANG POS in SCRIPT script` will
automatically be generated. This can be overridden using {{para|sccat|0}} in {{tl|head}} or setting `sccat` to
{false} in Lua. If the value on the right-hand side is {true}, such categories will be generated for all scripts. If
{false}, no categories will be generated (this is useful for etym languages that override the spec of their parent). If
a list of scripts, such categories will be generated only for the specified scripts. If a list of scripts where the
first element is {"not"}, such categories will be generated for all scripts ''except'' the specified scripts.
]==]
data.default_sccat = {
	["af"] = {"not", "Latn"},
	["az"] = {"not", "Latn"},
	["inc-apa"] = true,
	["inc-ash"] = true,
	["kfr"] = true,
	["ks"] = true,
	["mr"] = true,
	["mwr"] = true,
	["inc-oaw"] = true,
	["inc-ohi"] = true,
	["omr"] = true,
	["inc-opa"] = true,
	["phr"] = true,
	["pi"] = true,
	["pra"] = true,
	["sa"] = true,
	["skr"] = true,
	["sd"] = true,
	["yi"] = {"not", "Hebr"},
}

--[==[ var:
Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
pluralized) form. It is singular so the same table can be used in [[Module:form of]] for the {{para|p}}/{{para|POS}}
param and [[Module:links]] for the pos= param. Note that any part of speech, abbreviated or not, can be suffixed with
`f` to generate the corresponding non-lemma form part of speech, such as `adjf`, `af` or `adjectivef` for
`adjective form`, and `nounf` or `nf` for `noun form`. This expansion happens even when it does not make sense for the
given part of speech (e.g. `pclf` expands to `particle form` and `symf` expands to `symbol form`), and currently also,
at least in [[Module:headword]] (but not [[Module:links]]), even if the part before the `f` is not a recognized part of
speech or abbreviation (hence `nerf` expands to `ner form`).
]==]
data.pos_aliases = {
	a = "形容詞",
	adj = "形容詞",
	adv = "副詞",
	art = "冠詞",
	aug = "指大詞",
	cls = "量詞",
	compadj = "形容詞比較級",
	compadv = "副詞比較級",
	compdet = "限定詞比較級",
	comppron = "代詞比較級",
	conj = "連詞",
	contr = "縮約形",
	conv = "動副詞",
	det = "限定詞",
	dim = "指小詞",
	infin = "不定式", -- not inf, which is ambiguous due to infixes
	int = "感嘆詞",
	interj = "感嘆詞",
	intj = "感嘆詞",
	n = "名詞",
	-- the next two support Algonquian languages; see also vii/vai/vti/vta below
	na = "有生名詞",
	ni = "無生名詞",
	num = "數詞",
	part = "分詞",
	pastpart = "過去分詞",
	pastptcp = "過去分詞",
	pcl = "助詞",
	phr = "短語",
	pn = "專有名詞",
	postp = "後置詞",
	pref = "前綴",
	prep = "介詞",
	prepphr = "介詞短語",
	prespart = "現在分詞",
	presptcp = "現在分詞",
	pron = "代詞",
	prop = "專有名詞",
	proper = "專有名詞",
	propn = "專有名詞",
	ptcp = "分詞",
	rom = "羅馬化",
	roman = "羅馬化",
	romanisation = "羅馬化",
	romanisations = "羅馬化",
	suf = "後綴",
	supadj = "形容詞最高級",
	supadv = "副詞最高級",
	supdet = "限定詞最高級",
	suppron = "代詞最高級",
	sym = "符號",
	v = "動詞",
	vb = "動詞",
	vi = "不及物動詞",
	vm = "情態動詞",
	vt = "及物動詞",
	-- the next four support Algonquian languages
	vii = "無生不及物動詞",
	vai = "有生不及物動詞",
	vti = "及物無生動詞",
	vta = "及物有生動詞",
	-- l10n: 拼寫完整的英文詞類名稱也要列出,否則會產生「英語adjective」這類分類
	adjective = "形容詞",
	adverb = "副詞",
	["animate noun"] = "有生名詞",
	article = "冠詞",
	augmentative = "指大詞",
	classifier = "量詞",
	["collective noun"] = "集合名詞",
	["comparative adjective"] = "形容詞比較級",
	["comparative adverb"] = "副詞比較級",
	["comparative determiner"] = "限定詞比較級",
	["comparative pronoun"] = "代詞比較級",
	conjunction = "連詞",
	contraction = "縮約形",
	converb = "動副詞",
	determiner = "限定詞",
	diminutive = "指小詞",
	["inanimate noun"] = "無生名詞",
	infinitive = "不定式",
	interjection = "感嘆詞",
	["intransitive verb"] = "不及物動詞",
	["modal verb"] = "情態動詞",
	noun = "名詞",
	numeral = "數詞",
	participle = "分詞",
	["active participle"] = "主動分詞",
	["passive participle"] = "被動分詞",
	["past participle"] = "過去分詞",
	["present participle"] = "現在分詞",
	particle = "助詞",
	phrase = "短語",
	postposition = "後置詞",
	prefix = "前綴",
	preposition = "介詞",
	["prepositional phrase"] = "介詞短語",
	pronoun = "代詞",
	["proper noun"] = "專有名詞",
	proverb = "諺語",
	romanization = "羅馬化",
	["singulative noun"] = "個體名詞",
	suffix = "後綴",
	["superlative adjective"] = "形容詞最高級",
	["superlative adverb"] = "副詞最高級",
	["superlative determiner"] = "限定詞最高級",
	["superlative pronoun"] = "代詞最高級",
	symbol = "符號",
	["transitive verb"] = "及物動詞",
	verb = "動詞",
	-- l10n: 詞形分類統一作「變格形」,動詞另作「變位形式」
	["adjective form"] = "形容詞變格形",
	["adverb form"] = "副詞變格形",
	["noun form"] = "名詞變格形",
	["prefix form"] = "前綴變格形",
	["suffix form"] = "後綴變格形",
	verbf = "動詞變位形式",
	["verb form"] = "動詞變位形式",
}

--[==[ var:
Map of parts of speech for which categories like `German masculine nouns` or `Russian imperfective verbs` will be
generated if the headword is of the appropriate gender/number. The map is used to canonicalize parts of speech for
categorization purposes; specifically, proper nouns categorizes like nouns.
]==]
data.pos_for_gender_number_cat = {
	["名詞"] = "名詞",
	["專有名詞"] = "名詞",
	["後綴"] = "後綴",
	-- We include verbs because impf and pf are valid "genders".
	["動詞"] = "動詞",
}

--[==[ var:
Lower limit for a "long" word in a particular language. Used to categorize terms into e.g.
[[:Category:Long English words]] automatically. Languages with no mapping here do not get categorized.
]==]
data.long_word_thresholds = {
    ["af"] = 20,
    ["bg"] = 20,
    ["cy"] = 25,
    ["de"] = 20,
    ["en"] = 25,
    ["es"] = 20,
    ["fr"] = 20,
    ["ka"] = 20,
    ["sv"] = 20,
    ["tl"] = 25,
}

------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Set some page properties directly on `data` for ease of use.
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename

return data