Módulo:Character.i18n
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:Character.i18n/doc
-- Módulo:Character.i18n — constantes e funções de internacionalização
local M = {}
--------------------------------------------------------------------------------
-- I18N: rótulos de atributos + "Nível"
--------------------------------------------------------------------------------
M.ATTR_I18N = {
pt = {
cooldown = "Recarga:",
energy_gain = "Ganho de Energia:",
energy_cost = "Custo de Energia:",
power = "Poder:",
power_pvp = "Poder PvP:",
level = "Nível:"
},
en = {
cooldown = "Cooldown:",
energy_gain = "Energy Gain:",
energy_cost = "Energy Cost:",
power = "Power:",
power_pvp = "PvP Power:",
level = "Level:"
},
es = {
cooldown = "Enfriamiento:",
energy_gain = "Ganancia de Energía:",
energy_cost = "Costo Energético:",
power = "Poder:",
power_pvp = "Poder PvP:",
level = "Nivel:"
},
pl = {
cooldown = "Czas Odnowienia:",
energy_gain = "Odzyskanle Energii:",
energy_cost = "Koszt energii:",
power = "Moc:",
power_pvp = "Moc PvP:",
level = "Poziom:"
}
}
M.FLAGS_I18N = {
pt = {
aggro = "Essa habilidade chama a atenção dos inimigos (PvE)",
bridge = "Essa habilidade pode criar pontes em certos lugares",
wall = "Essa habilidade quebra paredes específicas",
quickcast = "Essa habilidade possuí mecânica de Quickcast"
},
en = {
aggro = "This ability draws enemies attention (PvE)",
bridge = "This ability can create bridges in certain places",
wall = "This ability breaks specific walls",
quickcast = "This ability is instant cast (quick cast)"
},
es = {
aggro = "Esta habilidad atrae la atención de los enemigos (PvE)",
bridge = "Esta habilidad puede crear puentes en ciertos lugares",
wall = "Esta habilidad rompe paredes específicas",
quickcast = "Esta habilidad es de lanzamiento instantáneo (quick cast)"
},
pl = {
aggro = "Ta umiejętność przyciąga uwagę wrogów (PvE)",
bridge = "Ta umiejętność może tworzyć mosty w niektórych miejscach",
wall = "Ta umiejętność niszczy określone ściany",
quickcast = "Ta umiejętność jest rzucana natychmiast (quick cast)"
}
}
--------------------------------------------------------------------------------
-- I18N: rótulos das abas
--------------------------------------------------------------------------------
M.TAB_I18N = {
pt = {
skills = "Habilidades",
skins = "Skins",
skins_title = "SKINS & SPOTLIGHTS"
},
en = {
skills = "Skills",
skins = "Skins",
skins_title = "SKINS & SPOTLIGHTS"
},
es = {
skills = "Habilidades",
skins = "Aspectos",
skins_title = "ASPECTOS Y DESTACADOS"
},
pl = {
skills = "Umiejętności",
skins = "Skórki",
skins_title = "SKÓRKI I PREZENTACJE"
}
}
--------------------------------------------------------------------------------
-- AUTO-I18N (tier + tags) – completa i18n quando o módulo do char não traz
--------------------------------------------------------------------------------
-- tiers canônicos + sinônimos (case-insensitive)
M.TIER_CANON = {
gold = {
pt = "Ouro",
en = "Gold",
es = "Oro",
pl = "Złoto"
},
silver = {
pt = "Prata",
en = "Silver",
es = "Plata",
pl = "Srebro"
},
bronze = {
pt = "Bronze",
en = "Bronze",
es = "Bronce",
pl = "Brąz"
},
diamond = {
pt = "Diamante",
en = "Diamond",
es = "Diamante",
pl = "Diament"
}
}
M.TIER_SYNONYM = (function()
local m = {
["ouro"] = "gold",
["gold"] = "gold",
["oro"] = "gold",
["złoto"] = "gold",
["zloto"] = "gold",
["prata"] = "silver",
["silver"] = "silver",
["plata"] = "silver",
["srebro"] = "silver",
["bronze"] = "bronze",
["bronce"] = "bronze",
["brąz"] = "bronze",
["braz"] = "bronze",
["diamante"] = "diamond",
["diamond"] = "diamond",
["diament"] = "diamond"
}
return setmetatable(m, {
__index = function()
return nil
end
})
end)()
function M.tierPackFrom(raw)
raw = mw.ustring.lower((raw or ""):gsub("^%s+", ""):gsub("%s+$", ""))
local canon = M.TIER_SYNONYM[raw]
if canon and M.TIER_CANON[canon] then
return M.TIER_CANON[canon]
end
-- desconhecido: replica o mesmo texto em todos
raw = (raw ~= "" and raw) or ""
return {
pt = raw,
en = raw,
es = raw,
pl = raw
}
end
-- tags canônicas + sinônimos (amplie à vontade)
M.TAGS_CANON = {
suporte = {
pt = "Suporte",
en = "Support",
es = "Soporte",
pl = "Wsparcie"
},
atirador = {
pt = "Atirador",
en = "Marksman",
es = "Tirador",
pl = "Strzelec"
},
devilfruit = {
pt = "Fruta do Diabo",
en = "Devil Fruit",
es = "Fruta del Diablo",
pl = "Owoc Diabła"
},
cortante = {
pt = "Cortante",
en = "Slasher",
es = "Cortante",
pl = "Tnący"
},
lutador = {
pt = "Lutador",
en = "Fighter",
es = "Luchador",
pl = "Wojownik"
},
tanque = {
pt = "Tanque",
en = "Tank",
es = "Tanque",
pl = "Tank"
},
bruiser = {
pt = "Bruiser",
en = "Bruiser",
es = "Bruiser",
pl = "Bruiser"
},
especialista = {
pt = "Especialista",
en = "Specialist",
es = "Especialista",
pl = "Specjalista"
}
}
M.TAGS_SYNONYM = (function()
local m = {
-- suporte
["suporte"] = "suporte",
["support"] = "suporte",
["soporte"] = "suporte",
["wsparcie"] = "suporte",
-- atirador
["atirador"] = "atirador",
["marksman"] = "atirador",
["tirador"] = "atirador",
["strzelec"] = "atirador",
["shooter"] = "atirador",
-- fruta do diabo
["fruta do diabo"] = "devilfruit",
["devil fruit"] = "devilfruit",
["fruta del diablo"] = "devilfruit",
["owoc diabła"] = "devilfruit",
["owoc diabla"] = "devilfruit",
-- cortante
["cortante"] = "cortante",
["slasher"] = "cortante",
["tnący"] = "cortante",
["tnacy"] = "cortante",
-- lutador
["lutador"] = "lutador",
["fighter"] = "lutador",
["luchador"] = "lutador",
["wojownik"] = "lutador",
-- tanque
["tanque"] = "tanque",
["tank"] = "tanque",
-- bruiser
["bruiser"] = "bruiser",
-- especialista
["especialista"] = "especialista",
["specialist"] = "especialista",
["specjalista"] = "especialista",
-- alguns termos relacionados (não-banidos)
["healer"] = "suporte",
["sanador"] = "suporte",
["uzdrowiciel"] = "suporte",
["mage"] = "especialista",
["mag"] = "especialista",
["control"] = "especialista"
}
return setmetatable(m, {
__index = function()
return nil
end
})
end)()
function M.tagsPackFrom(list)
local pack = {
pt = {},
en = {},
es = {},
pl = {}
}
-- termos banidos (não devem aparecer, nem como pass-through)
local BANNED_TAGS = {
["mago"] = true,
["controle"] = true,
["curandeiro"] = true,
["assassin"] = true,
["assassino"] = true
}
for _, t in ipairs(list or {}) do
local cleaned = (t or ""):gsub("^%s+", ""):gsub("%s+$", "")
local lowered = mw.ustring.lower(cleaned)
if not BANNED_TAGS[lowered] then
local key = M.TAGS_SYNONYM[lowered]
if key and M.TAGS_CANON[key] then
local m = M.TAGS_CANON[key]
table.insert(pack.pt, m.pt);
table.insert(pack.en, m.en)
table.insert(pack.es, m.es);
table.insert(pack.pl, m.pl)
else
if cleaned ~= "" then
table.insert(pack.pt, cleaned);
table.insert(pack.en, cleaned)
table.insert(pack.es, cleaned);
table.insert(pack.pl, cleaned)
end
end
end
end
return pack
end
return M