Moduuli:käännös
Ulkoasu
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:käännös/ohje
-- [[Malline:käännös]]-mallineen toteutus.
local m = {}
local apu = require('Moduuli:Mallinetyokalut')
local kielilinkki = require('Moduuli:Kielilinkki')
local kielikoodit = require('Moduuli:kielikoodit')
local kielitieto = require('Moduuli:Kielitieto/kentat')
local function kielella_on_painoparametri(kielikoodi)
local tiedot = kielitieto["kielten kentät"][kielikoodi]
return tiedot and tiedot:find(",paino,")
end
local function kielella_on_vokparametri(kielikoodi)
local tiedot = kielitieto["kielten kentät"][kielikoodi]
return tiedot and tiedot:find(",vok,")
end
local function hae_sanariviparametrit(args)
local parametrit = {}
if args[3] then
if kielella_on_painoparametri(args[1]) then
table.insert(parametrit, "paino=" .. args[3])
elseif kielella_on_vokparametri(args[1]) then
table.insert(parametrit, "vok=" .. args[3])
else
table.insert(parametrit, args[3])
end
end
for key, val in pairs(args) do
if key ~= 1 and key ~= 2 and key ~= 3 then
table.insert(parametrit, key .. "=" .. val)
end
end
if #parametrit == 0 then
return ""
end
return "|" .. table.concat(parametrit, "|")
end
m["Käännös"] = function (frame)
local args = apu.poista_tyhjat(frame:getParent().args)
local kielikoodi = args[1]
if not kielikoodi then
error("Pakollinen kielikoodi puuttuu (parametri 1)")
end
local kohde = args[2]
if not kohde then
error("Pakollinen käännös puuttuu (parametri 2)")
end
local teksti = args[3]
local pohja = "käännös/*/$2/yleinen"
local kieliotsikko = kielikoodit.nimi(kielikoodi, true)
local sanariviparametrit = hae_sanariviparametrit(args)
if not kieliotsikko then
return kielilinkki.linkki{
kieli = kielikoodi,
kohde = kohde,
teksti = teksti
}
end
return kielilinkki.linkki{
kieli = kielikoodi,
kohde = kohde,
teksti = teksti,
kuvaus = pohja,
['kuvaus-param'] = {
[1] = kieliotsikko,
[5] = sanariviparametrit
}
}
end
return m