Difference between revisions 18626560 and 18626561 on frwiktionary

local languages = mw.loadData("Module:languages")
local export = {}

-- transliterate the text, if possible
function export.translit(lang, text)
    -- TODO: the table's information should be moved to [[Module:languages]]
    local translit_modules = {
        ["ae"] = "Module:Avst-translit",
        ["ady"] = "Module:ady-translit",
        ["el"] = "Module:el-translit",
        ["ru"] = "Module:ru-translit",
        ["ug"] = "Module:ug-translit",
        ["tg"] = "Module:tg-translit",
        ["os"] = "Module:os-translit",
        ["ka"] = "Module:ka-translit",  
        ["xcl"] = "Module:xcl-translit",
        ["axm"] = "Module:axm-translit",
        ["hy"] = "Module:hy-translit"
    }
 
    if translit_modules[lang] then
        return require(translit_modules[lang]).tr(text)
    end
end
 
-- Detect the script based on the first alphabetical characters of a string
function export.detect_script(text, lang)
    local sc_charm_scripts = mw.loadData("Module:scripts").sc_chars

    
    
    -- first try to detect the script based on the native script(s) of the language
    local scripts = languages[lang].scripts or {}
    
    
    for i, script in ipairs(scripts) do
        local script2check = script:gsub(".-%-", "") -- removes the language code from script name, e.g. "nv-Latn" > "Latn"
        if script2check == "Latf" or script2check == "Latinx" or script2check == "unicode" then
            script2check = "Latn"
        end
                
        if sc_chars[script2check] and mw.ustring.match(text, "[" .. sc_chars[script2check] .. "]"local scriptinfo = m_scripts[script2check] or error("The script code \"" .. sc .. "\" is not valid.")
        if scriptinfo.characters and mw.ustring.match(text, scriptinfo.characters) then
            return script
        end
    end
    
    -- not written in native script(s); check for all scripts
    -- TODO: This is slow; we really shouldn't be doing this!
    for script, charsscriptinfo in pairs(sc_charm_scripts) do
        if scriptinfo.characters and mw.ustring.match(text, "[%[%d%p%s]-[" .. chars .. "]"scriptinfo.characters) then
            return script
        end
    end
end

-- Format the categories with the appropriate sort key
function export.format_categories(categories, lang, sort_key, sort_base)
(contracted; show full)        i = i + 1
        cat = args[i]
    end
    
    return export.format_categories(categories, lang, sort_key)
end

return export