Add localization
This commit is contained in:
90
Yapper.lua
90
Yapper.lua
@@ -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"
|
||||
|
Reference in New Issue
Block a user