Rework locale

This commit is contained in:
2025-01-26 17:43:43 +01:00
parent 62b028cf56
commit 35398ebf38
3 changed files with 226 additions and 207 deletions

View File

@@ -23,7 +23,8 @@ local function init()
---@field network HeimdallNetworkData
---@field networkMessenger HeimdallNetworkMessengerData
---@field stinkyCache HeimdallStinkyCacheData
---@field _L Localization
---@field _L fun(key: string, locale: string): string
---@field _Locale Localization
---@field VERSION string
---@field dumpTable fun(table: any, depth?: number): nil
---@field utf8len fun(input: string): number
@@ -32,6 +33,7 @@ local function init()
---@field Split fun(input: string, deliminer: string): string[]
---@field IsStinky fun(name: string): boolean
---@field Memoize fun(f: function): function
---@field GetLocaleForChannel fun(channel: string): string
---@field WhoQueryService WhoQueryService
---@field Whoer InitTable
---@field Messenger InitTable
@@ -635,6 +637,33 @@ local function init()
end
end
---@param channel string
---@return string
shared.GetLocaleForChannel = function(channel)
return Heimdall_Data.config.channelLocale[channel] or "en"
end
---@param key string
---@param locale string
---@return string
shared._L = function(key, locale)
local locale = shared._Locale[locale]
if not locale then
if Heimdall_Data.config.debug then
print(string.format("[Heimdall] Locale %s not found", tostring(locale)))
end
return key
end
local value = locale[key]
if not value then
if Heimdall_Data.config.debug then
print(string.format("[Heimdall] Key %s not found in locale %s", tostring(key), tostring(locale)))
end
return key
end
return value
end
shared.Messenger.Init()
shared.StinkyTracker.Init()
shared.AgentTracker.Init()

File diff suppressed because it is too large Load Diff

118
_L.lua
View File

@@ -5,23 +5,23 @@ local _, shared = ...
---@field ru table<string, any>
---@type Localization
shared.L = {
shared._Locale = {
en = {
bonkDetected = "%s hit %s (%s)",
combatAlerterInCombat = "I am in combat with %s at %s (%s) at [%s](%2.2f, %2.2f)",
snifferStinky = "I smell a stinky %s",
spotterSpotted = "I see (%s) %s/%s %s of race %s (%s) with pvp %s and health %s/%s at %s [%s](%2.2f, %2.2f)",
spotterSpotted = "I see (%s) %s/%s %s of race %s (%s) with pvp %s and health %s/%s at %s (%s) [%s](%2.2f, %2.2f)",
english = "English",
russian = "Russian",
whoerNew = "%s %s c:%s r:%s (%s) g:%s - %s",
whoerMoved = "%s c:%s (%s - %s) g:%s moved to %s",
whoerGone = "%s c:%s g:%s left %s",
killed = "%s killed %s with %s in %s at [%s](%2.2f, %2.2f)",
tidbits = {
hostile = "hostile",
friendly = "friendly",
unknown = "unknown",
pvpOn = "ON",
pvpOff = "OFF",
},
hostile = "hostile",
friendly = "friendly",
unknown = "unknown",
pvpOn = "ON",
pvpOff = "OFF",
config = {
afkThreshold = "Afk Threshold",
agentTracker = "Agent Tracker",
@@ -101,15 +101,13 @@ shared.L = {
whoerMoved = "%s класса %s (%s - %s) и гильдии %s переместился в %s",
whoerGone = "%s класса %s и гильдии %s покинул %s",
killed = "%s убил %s с %s в %s на [%s](%2.2f, %2.2f)",
-- A lot of this shit I get straight from the API in english (my locale)
-- So there is no need to translate it from english to english
tidbits = {
hostile = "враждебный",
friendly = "дружественный",
unknown = "неизвестный",
pvpOn = "вкл",
pvpOff = "выкл",
},
hostile = "враждебный",
friendly = "дружественный",
unknown = "неизвестный",
english = "Английский",
russian = "Русский",
pvpOn = "вкл",
pvpOff = "выкл",
config = {
alertSound = "Звук Оповещения",
tagSound = "Звук Тега",
@@ -178,55 +176,47 @@ shared.L = {
networkMessenger = "Сетевой Мессенджер",
queries = "Запросы Who",
},
zones = {
["Orgrimmar"] = "Оргриммар",
["Valley of Strength"] = "Долина Силы",
["Valley of Trials"] = "Долина Испытаний",
["Durotar"] = "Дуротар",
["Echo Isles"] = "Острова Эхо",
},
classes = {
["Hunter"] = "Охотник",
["Warrior"] = "Воин",
["Mage"] = "Маг",
["Priest"] = "Жрец",
["Paladin"] = "Паладин",
["Shaman"] = "Шаман",
["Rogue"] = "Разбойник",
["Warlock"] = "Чернокнижник",
["Druid"] = "Друид",
["Death Knight"] = "Рыцарь Смерти",
["Monk"] = "Монах",
["Demon Hunter"] = "Демон Хламер",
["Evoker"] = "Эвокер",
},
races = {
["Human"] = "Человек",
["Orc"] = "Орк",
["Dwarf"] = "Дворф",
["Night Elf"] = "Ночной Эльф",
["Tauren"] = "Таурен",
["Gnome"] = "Гном",
["Troll"] = "Тролль",
["Goblin"] = "Гоблин",
["Blood Elf"] = "Кровавый Эльф",
["Draenei"] = "Дреней",
["Worgen"] = "Ворген",
["Pandaren"] = "Пандарен",
["Zandalari"] = "Зандалари",
["Mechagnome"] = "Механом",
["Vulpera"] = "Вульперы",
["Undead"] = "Нежить",
},
factions = {
["Alliance"] = "Альянс",
["Horde"] = "Орда",
},
["Orgrimmar"] = "Оргриммар",
["Valley of Strength"] = "Долина Силы",
["Valley of Trials"] = "Долина Испытаний",
["Durotar"] = "Дуротар",
["Echo Isles"] = "Острова Эхо",
["Hunter"] = "Охотник",
["Warrior"] = "Воин",
["Mage"] = "Маг",
["Priest"] = "Жрец",
["Paladin"] = "Паладин",
["Shaman"] = "Шаман",
["Rogue"] = "Разбойник",
["Warlock"] = "Чернокнижник",
["Druid"] = "Друид",
["Death Knight"] = "Рыцарь Смерти",
["Monk"] = "Монах",
["Demon Hunter"] = "Демон Хламер",
["Evoker"] = "Эвокер",
["Human"] = "Человек",
["Orc"] = "Орк",
["Dwarf"] = "Дворф",
["Night Elf"] = "Ночной Эльф",
["Tauren"] = "Таурен",
["Gnome"] = "Гном",
["Troll"] = "Тролль",
["Goblin"] = "Гоблин",
["Blood Elf"] = "Кровавый Эльф",
["Draenei"] = "Дреней",
["Worgen"] = "Ворген",
["Pandaren"] = "Пандарен",
["Zandalari"] = "Зандалари",
["Mechagnome"] = "Механом",
["Vulpera"] = "Вульперы",
["Undead"] = "Нежить",
["Alliance"] = "Альянс",
["Horde"] = "Орда",
},
}
for key, value in pairs(shared.L.en.config) do
local rus = shared.L.ru.config[key]
for key, value in pairs(shared._Locale.en.config) do
local rus = shared._Locale.ru.config[key]
if not rus then
print(key, value)
end