Add localization

This commit is contained in:
2024-12-17 15:26:54 +01:00
parent d065606cbe
commit c04a0ac008

View File

@@ -1,6 +1,39 @@
local addonname, shared = ... local addonname, shared = ...
---@cast addonname string ---@cast addonname string
local _L = {
["EN"] = {
["NO_MESSAGE"] = "Yapper found no message to yap",
["NO_CHANNEL"] = "Yapper found no channel to yap in",
["NO_CHANNEL_ID"] = "Yapper found no channel id for %s",
["NO_INTERVAL"] = "Yapper has no interval set",
["YAPPER_TOGGLE"] = "Yapper is now %s",
["YAPPER_INTERVAL_SET"] = "Yapper interval set to %d",
["YAPPER_MESSAGE_SET"] = "Yapper message set to %s",
["YAPPER_CHANNEL_SET"] = "Yapper channel set to %s with data %s",
["YAPPER_CHANNEL_SET_NIL"] = "Yapper channel set to nil",
["YAPPER_LANGUAGE_SET"] = "Yapper language set to %s",
["YAPPER_LANGUAGE_NOT_FOUND"] = "Yapper language not found",
["YAPPER_ENABLED"] = "enabled",
["YAPPER_DISABLED"] = "disabled"
},
["RU"] = {
["NO_MESSAGE"] = "Болтун не нашел сообщение для болтовни",
["NO_CHANNEL"] = "Болтун не нашел канал для болтовни",
["NO_CHANNEL_ID"] = "Болтун не нашел ID канала для %s",
["NO_INTERVAL"] = "У Болтуна не установлен интервал",
["YAPPER_TOGGLE"] = "Болтун теперь %s",
["YAPPER_INTERVAL_SET"] = "Интервал Болтуна установлен на %d",
["YAPPER_MESSAGE_SET"] = "Сообщение Болтуна установлено на %s",
["YAPPER_CHANNEL_SET"] = "Канал Болтуна установлен на %s с данными %s",
["YAPPER_CHANNEL_SET_NIL"] = "Канал Болтуна установлен в nil",
["YAPPER_LANGUAGE_SET"] = "Язык Болтуна установлен на %s",
["YAPPER_LANGUAGE_NOT_FOUND"] = "Язык Болтуна не найден",
["YAPPER_ENABLED"] = "включен",
["YAPPER_DISABLED"] = "выключен"
}
}
local function GetOrDefault(table, keys, default) local function GetOrDefault(table, keys, default)
local value = default local value = default
if not table then return value end if not table then return value end
@@ -39,28 +72,21 @@ end
---@field channel string ---@field channel string
---@field channelData any ---@field channelData any
---@field enabled boolean ---@field enabled boolean
if not YapperConfig then YapperConfig = {} end ---@field language string
---@cast shared { config: YapperConfig} ---@cast shared { config: YapperConfig}
shared.config = {
message = GetOrDefault(YapperConfig, { "message" }, ""),
interval = GetOrDefault(YapperConfig, { "interval" }, 1),
channel = GetOrDefault(YapperConfig, { "channel" }, "SAY"),
channelData = GetOrDefault(YapperConfig, { "channelData" }, nil),
enabled = GetOrDefault(YapperConfig, { "enabled" }, false),
}
local timer = nil local timer = nil
local function Yap() local function Yap()
if not shared.config.enabled then return end if not shared.config.enabled then return end
if not shared.config.message then if not shared.config.message then
print(string.format("Yapper found no message to yap (%s)", tostring(shared.config.message))) print(string.format(_L[shared.config.language]["NO_MESSAGE"], tostring(shared.config.message)))
shared.config.enabled = false shared.config.enabled = false
return return
end end
if not shared.config.channel then if not shared.config.channel then
print(string.format("Yapper found no channel to yap in (%s)", tostring(shared.config.channel))) print(string.format(_L[shared.config.language]["NO_CHANNEL"], tostring(shared.config.channel)))
shared.config.enabled = false shared.config.enabled = false
return return
end end
@@ -69,7 +95,7 @@ local function Yap()
if shared.config.channel == "CHANNEL" and not tonumber(shared.config.channelData) then if shared.config.channel == "CHANNEL" and not tonumber(shared.config.channelData) then
data = GetChannelId(shared.config.channelData) data = GetChannelId(shared.config.channelData)
if data == nil then if data == nil then
print(string.format("Yapper found no channel id for %s", shared.config.channelData)) print(string.format(_L[shared.config.language]["NO_CHANNEL_ID"], shared.config.channelData))
shared.config.enabled = false shared.config.enabled = false
return return
end end
@@ -77,7 +103,7 @@ local function Yap()
SendChatMessage(shared.config.message, shared.config.channel, nil, data) SendChatMessage(shared.config.message, shared.config.channel, nil, data)
if not shared.config.interval or shared.config.interval <= 0 then if not shared.config.interval or shared.config.interval <= 0 then
print("Yapper has no interval set, quitting (%s)", tostring(shared.config.interval)) print(string.format(_L[shared.config.language]["NO_INTERVAL"], tostring(shared.config.interval)))
shared.config.enabled = false shared.config.enabled = false
return return
end end
@@ -94,7 +120,15 @@ local loadedFrame = CreateFrame("Frame")
loadedFrame:RegisterEvent("ADDON_LOADED") loadedFrame:RegisterEvent("ADDON_LOADED")
loadedFrame:SetScript("OnEvent", function(self, event, addonName) loadedFrame:SetScript("OnEvent", function(self, event, addonName)
if addonName == addonname then if addonName == addonname then
init() if not YapperConfig then YapperConfig = {} end
shared.config = {
message = GetOrDefault(YapperConfig, { "message" }, ""),
interval = GetOrDefault(YapperConfig, { "interval" }, 1),
channel = GetOrDefault(YapperConfig, { "channel" }, "SAY"),
channelData = GetOrDefault(YapperConfig, { "channelData" }, nil),
enabled = GetOrDefault(YapperConfig, { "enabled" }, false),
language = GetOrDefault(YapperConfig, { "language" }, "EN"),
}
end end
end) end)
@@ -102,25 +136,28 @@ local logoutFrame = CreateFrame("Frame")
logoutFrame:RegisterEvent("PLAYER_LOGOUT") logoutFrame:RegisterEvent("PLAYER_LOGOUT")
logoutFrame:SetScript("OnEvent", function(self, event) logoutFrame:SetScript("OnEvent", function(self, event)
shared.config.enabled = false shared.config.enabled = false
YapperConfig = shared.config
end) end)
SlashCmdList["YAPPER_MAIN_CMD"] = function(input) SlashCmdList["YAPPER_MAIN_CMD"] = function(input)
if input == "" or input == nil then if input == "" or input == nil then
shared.config.enabled = not shared.config.enabled shared.config.enabled = not shared.config.enabled
print(string.format("Yapper is now %s", shared.config.enabled and "enabled" or "disabled")) print(string.format(_L[shared.config.language]["YAPPER_TOGGLE"],
shared.config.enabled and _L[shared.config.language]["YAPPER_ENABLED"] or
_L[shared.config.language]["YAPPER_DISABLED"]))
init() init()
return return
end end
if tonumber(input) then if tonumber(input) then
shared.config.interval = tonumber(input) shared.config.interval = tonumber(input)
print(string.format("Yapper interval set to %d", shared.config.interval)) print(string.format(_L[shared.config.language]["YAPPER_INTERVAL_SET"], shared.config.interval))
init() init()
return return
end end
shared.config.message = input shared.config.message = input
print(string.format("Yapper message set to %s", shared.config.message)) print(string.format(_L[shared.config.language]["YAPPER_MESSAGE_SET"], shared.config.message))
init() init()
end end
SLASH_YAPPER_MAIN_CMD1 = "/yap" SLASH_YAPPER_MAIN_CMD1 = "/yap"
@@ -129,7 +166,7 @@ SlashCmdList["YAPPER_CHANNEL_CMD"] = function(input)
if input == "" or input == nil then if input == "" or input == nil then
shared.config.channel = nil shared.config.channel = nil
shared.config.channelData = nil shared.config.channelData = nil
print("Yapper channel set to nil") print(_L[shared.config.language]["YAPPER_CHANNEL_SET_NIL"])
return return
end end
@@ -137,11 +174,26 @@ SlashCmdList["YAPPER_CHANNEL_CMD"] = function(input)
if #data == 1 then if #data == 1 then
shared.config.channel = data[1] shared.config.channel = data[1]
shared.config.channelData = nil shared.config.channelData = nil
print(string.format("Yapper channel set to %s", shared.config.channel)) print(string.format(_L[shared.config.language]["YAPPER_CHANNEL_SET"], shared.config.channel))
return return
end end
shared.config.channel = data[1] shared.config.channel = data[1]
shared.config.channelData = data[2] shared.config.channelData = data[2]
print(string.format("Yapper channel set to %s with data %s", shared.config.channel, shared.config.channelData)) print(string.format(_L[shared.config.language]["YAPPER_CHANNEL_SET"], shared.config.channel,
shared.config.channelData))
end end
SLASH_YAPPER_CHANNEL_CMD1 = "/yapc" SLASH_YAPPER_CHANNEL_CMD1 = "/yapc"
SlashCmdList["YAPPER_LANGUAGE_CMD"] = function(input)
input = string.upper(input)
if input == "" or input == nil then
input = "EN"
end
if _L[input] == nil then
print(_L[shared.config.language]["YAPPER_LANGUAGE_NOT_FOUND"])
return
end
shared.config.language = input
print(string.format(_L[shared.config.language]["YAPPER_LANGUAGE_SET"], shared.config.language))
end
SLASH_YAPPER_LANGUAGE_CMD1 = "/yapl"