Module:languages/global

Documentation for this module may be created at Module:languages/global/doc

local u = mw.ustring.char
local export = {}

--[=[
Here is a list of the language fields by order of frequency according to [[User:Erutuon/language_stuff]].
If the order changes, change the order here for potentially greater efficiency.
]=]
local fields = {
	"canonical_name",
	"wikidata_item",
	"family",
	"scripts",
	"other_names", 
	"ancestors",
	"type",
	"translit",
	"entry_name",
	"sort_key",
	"override_translit",
	"wikimedia_codes",
	"standard_chars",
	"wikipedia_article",
	"link_tr",
}

--[=[
Insert the fields into the table with their values as their frequency ranking.
{export.most_common_field = 1, export.second_most_common_field = 2, ... }
]=]
for i, field in ipairs(fields) do
	export[field] = i	
end

-- UTF-8 encoded strings for some commonly-used diacritics.
local c = {
	grave			= u(0x0300),
	acute			= u(0x0301),
	circ			= u(0x0302),
	tilde			= u(0x0303),
	macron			= u(0x0304),
	overline		= u(0x0305),
	breve			= u(0x0306),
	dotabove		= u(0x0307),
	diaer			= u(0x0308),
	ringabove		= u(0x030A),
	dacute			= u(0x030B),
	caron			= u(0x030C),
	lineabove		= u(0x030D),
	dgrave			= u(0x030F),
	invbreve		= u(0x0311),
	commaabove		= u(0x0313),
	revcommaabove	= u(0x0314),
	dotbelow		= u(0x0323),
	diaerbelow		= u(0x0324),
	ringbelow		= u(0x0325),
	cedilla			= u(0x0327),
	ogonek			= u(0x0328),
	brevebelow		= u(0x032E),
	macronbelow		= u(0x0331),
	perispomeni		= u(0x0342),
	ypogegrammeni	= u(0x0345),
	CGJ				= u(0x034F), -- combining grapheme joiner
	dbrevebelow		= u(0x035C),
	dinvbreve		= u(0x0361),
	kashida			= u(0x0640),
	fathatan		= u(0x064B),
	dammatan		= u(0x064C),
	kasratan		= u(0x064D),
	fatha			= u(0x064E),
	damma			= u(0x064F),
	kasra			= u(0x0650),
	shadda			= u(0x0651),
	sukun			= u(0x0652),
	nunghunna		= u(0x0658),
	smallv			= u(0x065A),
	superalef		= u(0x0670),
	psili			= u(0x1FBD),
	coronis			= u(0x1FBF),
	ZWNJ			= u(0x200C), -- zero width non-joiner
	ZWJ				= u(0x200D), -- zero width joiner
	rsquo			= u(0x2019),
	VS01			= u(0xFE00), -- variation selector 1
	-- Punctuation to be used for standardChars field.
	punc			= " !#%&*+,-./:;<=>?@^_`|~\'()∅"
}
export.chars = c

local p = {}
for i = 1, 15 do
	p[i] = u(0xF000+i-1)
end
export.puaChars = p

local sc = {}
sc.Arab = "Arab"
sc.Brai = "Brai"
sc.Cans = "Cans"
sc.Cyrl = "Cyrl"
sc.Deva = "Deva"
sc.Ethi = "Ethi"
sc.faArab = "fa-Arab"
sc.Geor = "Geor"
sc.Latg = "Latg"
sc.Latn = "Latn"
sc.Latinx = "Latinx"
sc.Hani = "Hani"
sc.Hans = "Hans"
sc.Hant = "Hant"
sc.Tibt = "Tibt"
sc.CansLatn = {sc.Cans, sc.Latn}
sc.CyrlGeorLatn = {sc.Cyrl, sc.Geor, sc.Latn}
sc.CyrlLatnArab = {sc.Cyrl, sc.Latn, sc.Arab}
sc.HaniHantHans = {sc.Hani, sc.Hant, sc.Hans}
sc.LatnArab = {sc.Latn, sc.Arab}
sc.LatnBrai = {sc.Latn, sc.Brai}
sc.LatnCyrlfaArab = {sc.Latn, sc.Cyrl, sc.faArab}
sc.LatnHani = {sc.Latn, sc.Hani}
sc.LatnLatg = {sc.Latn, sc.Latg}
export.scripts = sc

-- Interwiki prefixes used by makeEntryName and makeDisplayText.
export.interwikis = {
	[""] = true,
	w = true, wikipedia = true,
	wikt = true, wiktionary = true, en = true,
	b = true, wikibooks = true,
	q = true, wikiquote = true,
	voy = true, wikivoyage = true,
	s = true, wikisource = true, oldwikisource = true,
	c = true, commons = true,
	species = true, wikispecies = true,
	n = true, wikinews = true,
	v = true, wikiversity = true,
	d = true, wikidata = true, lexemes = true
}

local s = {}
-- These values are placed here to make it possible to synchronise a group of languages without the need for a dedicated function module.

s["cau-Cyrl-displaytext"] = {
	from = {"[IlІӀ]", "ᴴ"},
	to = {"ӏ", "ᵸ"}
}

s["cau-Cyrl-entryname"] = {
	remove_diacritics = c.grave .. c.acute .. c.macron,
	from = s["cau-Cyrl-displaytext"].from,
	to = s["cau-Cyrl-displaytext"].to
}

s["cau-Latn-entryname"] = {remove_diacritics = c.grave .. c.acute .. c.macron}

s["Grek-sortkey"] = {
	remove_diacritics = c.grave .. c.acute .. c.diaer .. c.caron .. c.commaabove .. c.revcommaabove .. c.diaerbelow .. c.brevebelow .. c.perispomeni .. c.ypogegrammeni,
	from = {"ς"},
	to = {"σ"}
}

local HaniChars = require("Module:scripts").getByCode("Hani"):getCharacters()
s["Kore-entryname"] = {
	from = {"([" .. HaniChars .. "])%(.-%)", "(.)%-(.)", "%([" .. HaniChars .. "]+%)", u(0x302E), u(0x302F)},
	to = {"%1", "%1%2"}
}

s["Mong-displaytext"] = {
	from = {"([ᠨ-ᡂᡸ])ᠶ([ᠨ-ᡂᡸ])", "([ᠠ-ᡂᡸ])ᠸ([^ᠠ-ᠧ])", "([ᠠ-ᡂᡸ])ᠸ$"},
	to = {"%1ᠢ%2", "%1ᠧ%2", "%1ᠧ"}
}

s["Mong-entryname"] = s["Mong-displaytext"]

s["roa-oil-sortkey"] = {
	remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove .. c.cedilla .. "'",
	from = {"æ", "œ"},
	to = {"ae", "oe"}
}

s["Tibt-displaytext"] = {
	from = {"ༀ", "༌", "།།", "༚༚", "༚༝", "༝༚", "༝༝", "ཷ", "ཹ", "ེེ", "ོོ"},
	to = {"ཨོཾ", "་", "༎", "༛", "༟", "࿎", "༞", "ྲཱྀ", "ླཱྀ", "ཻ", "ཽ"}
}

s["Tibt-entryname"] = s["Tibt-displaytext"]

export.shared = s

return export