Модул:Jezik
local podaci = mw.loadData("Module:Jezik/podaci")
local konverzija = mw.loadData("Module:Konverzija")
local varijante = {
["ец"] = 1,
["ec"] = 1,
["ЕЦ"] = 1,
["EC"] = 1,
["јц"] = 2,
["jc"] = 2,
["ЈЦ"] = 2,
["JC"] = 2,
["ел"] = 3,
["el"] = 3,
["ЕЛ"] = 3,
["EL"] = 3,
["јл"] = 4,
["jl"] = 4,
["ЈЛ"] = 4,
["JL"] = 4
}
-- konvertuje string iz ćirilice u latinicu
function cir2lat(text)
ret = ""
for codepoint in mw.ustring.gcodepoint(text) do
slovo = mw.ustring.char(codepoint)
if konverzija[slovo] then
ret = ret .. konverzija[slovo]
else
ret = ret .. slovo
end
end
return ret
end
local p = {}
function p.prikaz(frame)
text = frame.args["text"]
kod = frame.args["kod"]
var = frame.args["var"]
kurziv = frame.args["kurziv"]
veza = frame.args["veza"]
prevod = frame.args["prevod"]
translit = frame.args["translit"]
-- ako nije zadat kod ili zadati kod nije valjan, podrazumevaju se ekavica i ćirilica
if not var or not varijante[var] then
var = 'ec'
end
varijanta = varijante[var]
plain = kurziv and (kurziv == 'ne' or kurziv == 'не')
nolink = veza and (veza == 'ne' or veza == 'не')
-- ako nismo definisali kod jezika ili nije valjan kod varijante, prikazuje se samo text
if not podaci[kod] then
return "-{''" .. text .. "''}-"
else
cirilica = true
if varijanta > 2 then
cirilica = false
varijanta = varijanta - 2;
end
index = varijanta
if not podaci[kod][varijanta] then
index = 1
end
naziv, skr, italic, dir = podaci[kod]["naziv"], podaci[kod][index], podaci[kod]["italic"], podaci[kod]["dir"]
-- smer teksta -- RTL ili LTR
direction = ''
if dir == 'rtl' then
direction = ' dir="rtl"'
end
italictext = ""
if (italic == nil or italic) and not plain then
italictext = "''"
end
if not cirilica then
skr = cir2lat(skr)
end
ret = skr .. '.'
if nolink then
ret = ret .. ' '
else
ret = '[[' .. naziv .. '|' .. ret .. ']] '
end
if #kod == 2 then
ret = ret .. '<span lang="' .. kod .. '" xml:lang="' .. kod .. '"' .. direction .. '>'
end
ret = ret .. '-{' .. italictext .. text .. italictext .. '}-'
if #kod == 2 then
ret = ret .. '</span>'
end
if translit and translit ~= "{{{транслит}}}" and translit ~= "{{{translit}}}" then
if plain then
ret = ret .. ', [[Пресловљавање|транслит]]. -{' .. translit .. '}-'
else
ret = ret .. ', [[Пресловљавање|транслит]]. ' .. "-{''" .. translit .. "''}-"
end
end
if prevod and prevod ~= "{{{превод}}}" and prevod ~= "{{{prevod}}}" then
if string.len(prevod) > 0 then
ret = ret .. ' — „' .. prevod .. '”'
end
end
return ret
end
end
function p.skr(frame)
text = frame.args["text"]
kod = frame.args["kod"]
var = frame.args["var"]
-- ako nije zadat kod ili zadati kod nije valjan, podrazumevaju se ekavica i ćirilica
if not var or not varijante[var] then
var = 'ec'
end
varijanta = varijante[var]
-- ako nismo definisali kod jezika ili nije valjan kod varijante, prikazuje se samo text
if not podaci[kod] then
return "-{''" .. text .. "''}-"
else
cirilica = true
if varijanta > 2 then
cirilica = false
varijanta = varijanta - 2;
end
index = varijanta
if not podaci[kod][varijanta] then
index = 1
end
naziv, skr = podaci[kod]["naziv"], podaci[kod][index]
if not cirilica then
skr = cir2lat(skr)
end
ret = '[[' .. naziv .. '|' .. skr .. ']].'
return ret
end
end
return p