Документација модула[прикажи] [уреди] [историја] [освежи]

Пример позивања:

{{#invoke:Jezik|prikaz|text=Entschuldigen!|kod=de|var=jl}}

njem. Entschuldigen!

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