Module:Languages: Difference between revisions
From Elwiki
(Add Languages rewrite) |
(No difference)
|
Latest revision as of 20:34, 19 March 2024
Documentation for this module may be created at Module:Languages/doc
-- pystart
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
local LANG_CONFIG = {
["af"] = { ["label"] = "Taal:" },
["aln"] = { ["label"] = "Gjuha:" },
["am"] = { ["label"] = "ቋምቋ፦" },
["an"] = { ["label"] = "Idioma:" },
["ang"] = { ["label"] = "Sprǣc:" },
["ar"] = { ["label"] = ":اللغة" },
["arc"] = { ["label"] = "ܠܫܢܐ:" },
["arn"] = { ["label"] = "Dungun:" },
["arz"] = { ["label"] = ":اللغة" },
["as"] = { ["label"] = "ভাষা:" },
["ast"] = { ["label"] = "Llingua:" },
["avk"] = { ["label"] = "Ava:" },
["ay"] = { ["label"] = "Aru:" },
["az"] = { ["label"] = "Dil:" },
["bat-smg"] = { ["label"] = "Kalba:" },
["bcc"] = { ["label"] = "زبان:" },
["bcl"] = { ["label"] = "Tataramon:" },
["be"] = { ["label"] = "Мова:" },
["be-tarask"] = { ["label"] = "Мова:" },
["bg"] = { ["label"] = "Език:" },
["bn"] = { ["label"] = "ভাষা:" },
["br"] = { ["label"] = "Yezh :" },
["bs"] = { ["label"] = "Jezik:" },
["ca"] = { ["label"] = "Llengua:" },
["cdo"] = { ["label"] = "Ngṳ̄-ngiòng:" },
["ce"] = { ["label"] = "Мотт:" },
["ceb"] = { ["label"] = "Pinulongan:" },
["ch"] = { ["label"] = "Lengguahe:" },
["ckb-arab"] = { ["label"] = "زمان:" },
["co"] = { ["label"] = "Lingua:" },
["crh-cyrl"] = { ["label"] = "Тиль:" },
["crh-latn"] = { ["label"] = "Til:" },
["cs"] = { ["label"] = "Jazyk:" },
["cu"] = { ["label"] = "ѩꙁꙑ́къ :" },
["cv"] = { ["label"] = "Чĕлхе:" },
["cy"] = { ["label"] = "Iaith:" },
["da"] = { ["label"] = "Sprog:" },
["de"] = { ["label"] = "Sprache:" },
["diq"] = { ["label"] = "Zıwan:" },
["dsb"] = { ["label"] = "Rěc:" },
["ee"] = { ["label"] = "Gbe:" },
["el"] = { ["label"] = "Γλώσσα:" },
["en"] = { ["label"] = "Language:" },
["eo"] = { ["label"] = "Lingvo:" },
["es"] = { ["label"] = "Idioma:" },
["et"] = { ["label"] = "Keel:" },
["eu"] = { ["label"] = "Hizkuntza:" },
["ext"] = { ["label"] = "Palra:" },
["fa"] = { ["label"] = "زبان:" },
["fi"] = { ["label"] = "Kieli:" },
["fo"] = { ["label"] = "Mál:" },
["fr"] = { ["label"] = "Langue :" },
["frc"] = { ["label"] = "Langue :" },
["frp"] = { ["label"] = "Lengoua :" },
["fur"] = { ["label"] = "Lenghe :" },
["fy"] = { ["label"] = "Taal:" },
["ga"] = { ["label"] = "Teanga:" },
["gag"] = { ["label"] = "Dil:" },
["gan-hans"] = { ["label"] = "语言:" },
["gan-hant"] = { ["label"] = "語言:" },
["gl"] = { ["label"] = "Lingua:" },
["gn"] = { ["label"] = "Ñe'ẽ:" },
["got"] = { ["label"] = "Razda:" },
["grc"] = { ["label"] = "Γλῶσσα:" },
["gsw"] = { ["label"] = "Sproch:" },
["gu"] = { ["label"] = "ભાષા:" },
["gv"] = { ["label"] = "Çhengey:" },
["hak"] = { ["label"] = "Ngî-ngièn:" },
["haw"] = { ["label"] = "Kou 'ōlelo:" },
["he"] = { ["label"] = "שפה:" },
["hi"] = { ["label"] = "भाषा:" },
["hif-latn"] = { ["label"] = "Bhasa:" },
["hr"] = { ["label"] = "Jezik:" },
["hsb"] = { ["label"] = "Rěč:" },
["ht"] = { ["label"] = "Lang:" },
["hu"] = { ["label"] = "Nyelv:" },
["hy"] = { ["label"] = "Լեզու." },
["ia"] = { ["label"] = "Lingua:" },
["id"] = { ["label"] = "Bahasa:" },
["ie"] = { ["label"] = "Lingue:" },
["ilo"] = { ["label"] = "Lengguahe:" },
["io"] = { ["label"] = "Linguo:" },
["is"] = { ["label"] = "Tungumál:" },
["it"] = { ["label"] = "Lingua:" },
["ja"] = { ["label"] = "言語:" },
["jv"] = { ["label"] = "Basa:" },
["ka"] = { ["label"] = "ენა:" },
["kaa"] = { ["label"] = "Til:" },
["kab"] = { ["label"] = "Tutlayt:" },
["kg"] = { ["label"] = "Ndinga:" },
["kiu"] = { ["label"] = "Zon:" },
["kk-arab"] = { ["label"] = ":ٴتىل" },
["kk-cyrl"] = { ["label"] = "Тіл:" },
["kk-latn"] = { ["label"] = "Til:" },
["km"] = { ["label"] = "ភាសា៖" },
["kn"] = { ["label"] = "ಭಾಷೆ:" },
["ko"] = { ["label"] = "언어:" },
["ksh"] = { ["label"] = "Sproch:" },
["ku-latn"] = { ["label"] = "Ziman:" },
["kv"] = { ["label"] = "Кыв:" },
["kw"] = { ["label"] = "Yeth:" },
["ky"] = { ["label"] = "Тил:" },
["la"] = { ["label"] = "Lingua:" },
["lb"] = { ["label"] = "Sprooch:" },
["lfn"] = { ["label"] = "Lingua:" },
["li"] = { ["label"] = "Taol:" },
["lij"] = { ["label"] = "Lengoa:" },
["loz"] = { ["label"] = "Zwa Siselect:" },
["lt"] = { ["label"] = "Kalba:" },
["lv"] = { ["label"] = "Valoda:" },
["lzh"] = { ["label"] = "語:" },
["mdf"] = { ["label"] = "Кяль:" },
["mg"] = { ["label"] = "fiteny:" },
["mhr"] = { ["label"] = "Йылме:" },
["min"] = { ["label"] = "Bahaso:" },
["mk"] = { ["label"] = "Јазик:" },
["ml"] = { ["label"] = "ഭാഷ:" },
["mn"] = { ["label"] = "Хэл:" },
["mr"] = { ["label"] = "भाषा:" },
["ms"] = { ["label"] = "Bahasa:" },
["mt"] = { ["label"] = "Lingwa:" },
["mwl"] = { ["label"] = "Lhéngua:" },
["my"] = { ["label"] = "ဘာသာ:" },
["myv"] = { ["label"] = "Кель:" },
["nah"] = { ["label"] = "Tlahtōlli:" },
["nap"] = { ["label"] = "Lengua:" },
["nds"] = { ["label"] = "Spraak:" },
["nds-nl"] = { ["label"] = "Taal:" },
["ne"] = { ["label"] = "भाषा:" },
["new"] = { ["label"] = "भाषा:" },
["nl"] = { ["label"] = "Taal:" },
["nn"] = { ["label"] = "Språk:" },
["no"] = { ["label"] = "Språk:" },
["nso"] = { ["label"] = "Polelo:" },
["oc"] = { ["label"] = "Lenga:" },
["os"] = { ["label"] = "Æвзаг:" },
["pa"] = { ["label"] = "ਭਾਸ਼ਾ:" },
["pam"] = { ["label"] = "Amanu:" },
["pdc"] = { ["label"] = "Schprooch:" },
["pdt"] = { ["label"] = "Sproak:" },
["pl"] = { ["label"] = "Język:" },
["pms"] = { ["label"] = "Lenga:" },
["pnb"] = { ["label"] = "بولی:" },
["pnt"] = { ["label"] = "Γλώσσαν:" },
["prg"] = { ["label"] = "Bilā:" },
["ps"] = { ["label"] = "ژبه:" },
["pt|pt-br"] = { ["label"] = "Língua:" },
["qu"] = { ["label"] = "Rimay:" },
["rm"] = { ["label"] = "Lingua:" },
["ro"] = { ["label"] = "Limba:" },
["roa-tara"] = { ["label"] = "Lénga:" },
["ru"] = { ["label"] = "Язык:" },
["sa"] = { ["label"] = "भाषा:" },
["sah"] = { ["label"] = "Омугун тыла:" },
["sc"] = { ["label"] = "Limba:" },
["scn"] = { ["label"] = "Lingua:" },
["sco"] = { ["label"] = "Leid:" },
["sdc"] = { ["label"] = "Linga:" },
["se"] = { ["label"] = "Giella:" },
["sei"] = { ["label"] = "Itom:" },
["sh"] = { ["label"] = "Jezik:" },
["shi"] = { ["label"] = "tutlayt:" },
["si"] = { ["label"] = "භාෂාව:" },
["sk"] = { ["label"] = "Jazyk:" },
["sl"] = { ["label"] = "Jezik:" },
["sli"] = { ["label"] = "Sproache:" },
["so"] = { ["label"] = "Luqada:" },
["sq"] = { ["label"] = "Gjuha:" },
["sr-ec"] = { ["label"] = "Језик:" },
["sr-el"] = { ["label"] = "Jezik:" },
["srn"] = { ["label"] = "Tongo:" },
["ss"] = { ["label"] = "Lúlwîmi:" },
["stq"] = { ["label"] = "Sproake:" },
["su"] = { ["label"] = "Basa:" },
["sv"] = { ["label"] = "Språk:" },
["sw"] = { ["label"] = "Lugha:" },
["szl"] = { ["label"] = "Godka:" },
["ta"] = { ["label"] = "மொழி:" },
["te"] = { ["label"] = "భాష:" },
["tet"] = { ["label"] = "Lian:" },
["tg-cyrl"] = { ["label"] = "Забон:" },
["th"] = { ["label"] = "ภาษา:" },
["ti"] = { ["label"] = "ቋንቋ:" },
["tk"] = { ["label"] = "Dil:" },
["tl"] = { ["label"] = "Wika:" },
["to"] = { ["label"] = "Lea:" },
["tr"] = { ["label"] = "Dil:" },
["tt-cyrl"] = { ["label"] = "Тел:" },
["tyv"] = { ["label"] = "Дыл:" },
["ug-arab"] = { ["label"] = ":تىل" },
["ug-latn"] = { ["label"] = "Til:" },
["uk"] = { ["label"] = "Мова:" },
["vec"] = { ["label"] = "Lengua:" },
["vep"] = { ["label"] = "Kel’:" },
["vi"] = { ["label"] = "Ngôn ngữ:" },
["vo"] = { ["label"] = "Pük:" },
["vro"] = { ["label"] = "Kiil:" },
["wa"] = { ["label"] = "Lingaedje:" },
["war"] = { ["label"] = "Yinaknan:" },
["wo"] = { ["label"] = "Làkk:" },
["wuu"] = { ["label"] = "语言:" },
["xal"] = { ["label"] = "Келн:" },
["xh"] = { ["label"] = "Ulwimi:" },
["xmf"] = { ["label"] = "ნინა:" },
["yi"] = { ["label"] = "שפראך:" },
["yo"] = { ["label"] = "Èdè:" },
["yue"] = { ["label"] = "語言:" },
["zea"] = { ["label"] = "Taele:" },
["zh-hans"] = { ["label"] = "语言:" },
["zh-hant"] = { ["label"] = "語言:" },
["zu"] = { ["label"] = "Ulimi:" },
}
local LANG_CONFIG_DEFAULT = { ["label"] = "Language:" }
local LANG_LIST = { "en", "af", "ar", "ast", "az", "bcc", "bg", "br", "bn", "bs", "ca", "cs", "da", "de", "diq", "el", "eo", "es", "fa", "fi", "fr", "gl", "gu", "he", "hi", "hu", "hy", "id", "io", "it", "ja", "ka", "kk", "km", "ko", "ksh", "kw", "la", "min", "mk", "ml", "mr", "ms", "nl", "no", "oc", "or", "pl", "pt", "pt-br", "ro", "ru", "si", "sk", "sl", "so", "sq", "sr", "sv", "ta", "th", "tr", "uk", "vi", "yi", "yue", "zh", "zh-hans", "zh-hant", "zh-tw" }
-- Main process
function p.main(frame)
local args = getArgs(frame)
local default_lang = frame:preprocess('{{CONTENTLANGUAGE}}')
local title_full = frame:preprocess('{{FULLPAGENAME}}')
local title_parts = split(title_full, '/', true)
local current_lang = inArray(title_parts[#title_parts], LANG_CONFIG) and title_parts[#title_parts] or default_lang
local function getLangSuffix(lc)
if lc == default_lang then
return ''
elseif inArray(lc, LANG_CONFIG) then
return '/' .. lc
end
return nil
end
local current_suffix = getLangSuffix(current_lang)
local OPTS = {
title = args[1] or '',
title_full = title_full,
default_lang = default_lang,
current_lang = current_lang,
current_suffix = current_suffix,
header_link = frame:preprocess(
'{{#ifexist:Elwiki:Elwiki_Languages' .. current_suffix ..
'|Elwiki:Elwiki_Languages' .. current_suffix ..
'|Elwiki:Elwiki_Langauges}}'
),
header_title = (LANG_CONFIG[lang_code] or LANG_CONFIG_DEFAULT)['label'];
}
local function createSuffixedPage(page, lc)
local suffix = getLangSuffix(lc)
if suffix ~= nil then
return page .. suffix
end
return ''
end
local function createTitle()
return link(OPTS.header_link, OPTS.header_title, "'''", "'''", true)
end
local function createLang(lc)
local lang_page = createSuffixedPage(OPTS.title, lc)
local lang_page_exist = frame:preprocess('{{#ifexist:' .. lang_page .. '|true|false}}') == 'true'
if lang_page_exist then
local lang_is_current = lc == OPTS.current_lang
local lang_text = frame:preprocess('{{#language:' .. lc .. '}}')
local lang_link = link(
lang_page,
lang_text,
('<li lang="' .. lc .. '">') .. (lang_is_current and "'''" or ''),
(lang_is_current and "'''" or '') .. ('</li>'),
not lang_is_current
)
return lang_link
end
return ''
end
local lang_full_text = ''
for _, langCode in ipairs(LANG_LIST) do
lang_full_text = lang_full_text .. createLang(langCode)
end
return frame:expandTemplate {
title = 'Nmbox2',
args = {
header = createTitle(),
text = lang_full_text,
}
}
end
return p
-- pyend