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 = ...
---@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 value = default
if not table then return value end
@@ -39,28 +72,21 @@ end
---@field channel string
---@field channelData any
---@field enabled boolean
if not YapperConfig then YapperConfig = {} end
---@field language string
---@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 function Yap()
if not shared.config.enabled then return end
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
return
end
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
return
end
@@ -69,7 +95,7 @@ local function Yap()
if shared.config.channel == "CHANNEL" and not tonumber(shared.config.channelData) then
data = GetChannelId(shared.config.channelData)
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
return
end
@@ -77,7 +103,7 @@ local function Yap()
SendChatMessage(shared.config.message, shared.config.channel, nil, data)
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
return
end
@@ -94,7 +120,15 @@ local loadedFrame = CreateFrame("Frame")
loadedFrame:RegisterEvent("ADDON_LOADED")
loadedFrame:SetScript("OnEvent", function(self, event, addonName)
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)
@@ -102,25 +136,28 @@ local logoutFrame = CreateFrame("Frame")
logoutFrame:RegisterEvent("PLAYER_LOGOUT")
logoutFrame:SetScript("OnEvent", function(self, event)
shared.config.enabled = false
YapperConfig = shared.config
end)
SlashCmdList["YAPPER_MAIN_CMD"] = function(input)
if input == "" or input == nil then
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()
return
end
if tonumber(input) then
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()
return
end
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()
end
SLASH_YAPPER_MAIN_CMD1 = "/yap"
@@ -129,7 +166,7 @@ SlashCmdList["YAPPER_CHANNEL_CMD"] = function(input)
if input == "" or input == nil then
shared.config.channel = nil
shared.config.channelData = nil
print("Yapper channel set to nil")
print(_L[shared.config.language]["YAPPER_CHANNEL_SET_NIL"])
return
end
@@ -137,11 +174,26 @@ SlashCmdList["YAPPER_CHANNEL_CMD"] = function(input)
if #data == 1 then
shared.config.channel = data[1]
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
end
shared.config.channel = data[1]
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
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"