Moduuli:Kirjoitusjärjestelmät
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Kirjoitusjärjestelmät/ohje
local p = {}
-- Kielten ISO 15924 -kirjoitusjärjestelmä koodit
local kirjoitusjarjestelmat = {
["am"] = "Ethi", -- amhara
["ar"] = "Arab", -- arabia
["as"] = "Beng", -- assami
["bn"] = "Beng", -- bengali
["bo"] = "Tibt", -- tiibet
["chr"] = "Cher", -- cherokee
["cmn"] = "Hani", -- mandariinikiina
["cu"] = { "Zzzz", "Cyrl", "Glag" }, -- kirkkoslaavi
["dv"] = "Thaa", -- divehi
["dz"] = "Tibt", -- dzongkha
["el"] = "Grek", -- kreikka
["fa"] = "Arab", -- persia
["fr"] = "Latn", -- ranska
["got"] = "Goth", -- gootti
["grc"] = "Grek", -- muinaiskreikka
["gu"] = "Gujr", -- gudžarati
["he"] = "Hebr", -- hebrea
["hi"] = "Deva", -- hindi
["hy"] = "Armn", -- armenia
["iu"] = { "Zzzz", "Latn", "Cans" }, -- inuktitut
["km"] = "Khmr", -- khmeeri
["ja"] = { "Jpan", "Hani", "Hrkt", "Hira", "Kana" }, -- japani
["ko"] = { "Kore", "Hani", "Hang" }, -- korea
["my"] = "Mymr", -- burma
["oj"] = { "Zzzz", "Latn", "Cans" }, -- odžibwa
["ru"] = "Cyrl", -- venäjä
["sa"] = "Deva", -- sanskrit
["sc"] = { "Zzzz", "Latn", "Cyrl" }, -- serbia
["si"] = "Sinh", -- sinhala
["th"] = "Thai", -- thai
["ti"] = "Ethi", -- tigrinja
["uk"] = "Cyrl", -- ukraina
["ur"] = "Arab", -- urdu
["yi"] = "Hebr", -- jiddiš
["yue"] = "Hani", -- kantoninkiina
["zh"] = "Hani", -- kiina
["nan"] = "Hani", -- minnan
["ta"] = "Taml", -- tamili
}
-- Kaikki kielen kirjoitusjärjestelmät kattava koodi, jos sellainen on.
--
-- @param lang: kielen kielikoodi
-- @return: kielen yleinen järjestelmä tai Zzzz
function p.yleinenKirjoitusjarjestelma(lang)
local tbl = kirjoitusjarjestelmat[lang]
if type(tbl) == "table" then
return tbl[1]
elseif tbl then
return tbl
else
return "Zzzz"
end
end
function p.kirjoitusjarjestelmat(lang)
local val = kirjoitusjarjestelmat[lang]
if val then
return val
else
return "Zzzz"
end
end
--- Erottaa kieliosan ja kirjoitusjärjestelmäosan koodista.
--
-- Esim.
-- sc-Cyrl -> sc, Cyrl
-- bg -> bg, nil
-- Hani -> nil, Hani
function p.avaaKielikoodi(lgsc)
local lg, sc = mw.ustring.match(lgsc, "([a-z][a-z][a-z]?)-([A-Z][a-z][a-z][a-z])")
if lg then
return lg, sc
end
sc = mw.ustring.match(lgsc, "([A-Z][a-z][a-z][a-z])")
if sc then
return nil, sc
end
return lgsc
end
p["YleinenKirjoitusjärjestelmä"] = function (frame)
local lgsc = frame.args[1]
assert(lgsc, "Kieli- tai kirjoitusjärjestelmätunnus puuttuu (parametri 1)")
if lgsc == "kans" then
return "Zyyy"
end
local lang, script = p.avaaKielikoodi(lgsc)
if script then
return script
end
return p.yleinenKirjoitusjarjestelma(lang)
end
function p.Kielikoodi(frame)
local lgsc = frame.args[1]
assert(lgsc, "Kieli- tai kirjoitusjärjestelmätunnus puuttuu (parametri 1)")
if lgsc == "kans" then
return "Zyyy"
end
local lang, script = p.avaaKielikoodi(lgsc)
if lang then
return lang
end
return ""
end
-- Vanha
local merkistot = {
["ar"] = "Arab",
["cmn"] = "Hani",
["fi"] = "Latn",
["ja"] = "Jpan",
["ko"] = "Kore",
["ru"] = "Cyrl",
["th"] = "Thai",
["el"] = "Grek",
["grc"] = "Grek",
}
---
function p.kirjoitusjarjestelmakoodi_kielelle(kielikoodi)
if merkistot[kielikoodi] then
return merkistot[kielikoodi]
else
return "Zzzz"
end
end
return p