Module:Icon: Difference between revisions

Jump to navigation Jump to search
m Change internal render to a local function
Added localized icon names based on page language
Line 3: Line 3:
local iconData = mw.loadJsonData("Data:ResourceLookup.json")
local iconData = mw.loadJsonData("Data:ResourceLookup.json")
local lang_codes = mw.loadJsonData("Data:LangCodes.json")
local lang_codes = mw.loadJsonData("Data:LangCodes.json")
local lang_module = require('Module:Lang')


local cachedLangCode, cachedLangData
local cachedLangCode


local linkOverrides = {
local linkOverrides = {
Line 49: Line 50:
}
}


local function getLangData()
local function getLangCode()
     if cachedLangData then
     if cachedLangCode then
         return cachedLangCode, cachedLangData
         return cachedLangCode
     end
     end


Line 57: Line 58:
     local subpageLang = title:match("/([^/]+)$")
     local subpageLang = title:match("/([^/]+)$")
     local langCode = (subpageLang and lang_codes[subpageLang]) and subpageLang or "en"
     local langCode = (subpageLang and lang_codes[subpageLang]) and subpageLang or "en"
    local langData = {}
    if langCode ~= "en" then
        local success, data = pcall(function()
            return mw.loadJsonData("Data:Lang " .. langCode .. ".json")
        end)
        if success and type(data) == "table" then
            langData = data
        end
    end


     cachedLangCode = langCode
     cachedLangCode = langCode
    cachedLangData = langData
     return langCode
     return langCode, langData
end
end


Line 86: Line 76:
     end
     end
     return linkOverrides[iconInfo.name] or iconInfo.name
     return linkOverrides[iconInfo.name] or iconInfo.name
end
local function getTranslatedName(iconInfo, langCode)
    if langCode == "en" or not iconInfo.key then
        return iconInfo.name
    end
   
    local translatedName = lang_module.get_string(iconInfo.key, langCode, iconInfo.name)
   
    if type(translatedName) == "string" then
        translatedName = translatedName:gsub("<[^>]+>", "")
    end
   
    return translatedName or iconInfo.name
end
end


Line 146: Line 150:
     end
     end


     local langCode, langData = getLangData()
     local langCode = getLangCode()


     local displayName = customText
     local displayName = customText
     if displayName == "" then
     if displayName == name then
         if iconInfo.key and langData[iconInfo.key] then
         displayName = getTranslatedName(iconInfo, langCode)
            displayName = langData[iconInfo.key]
        else
            displayName = iconInfo.name
        end
     end
     end