41 lines
1.3 KiB
Lua
41 lines
1.3 KiB
Lua
Locales = {}
|
|
|
|
function Translate(str, ...) -- Translate string
|
|
if not str then
|
|
error(("Resource ^5%s^1 You did not specify a parameter for the Translate function or the value is nil!"):format(GetInvokingResource() or GetCurrentResourceName()))
|
|
end
|
|
|
|
--- Load the locale file if it hasn't been loaded yet
|
|
if Locales[Config.Locale] == nil then
|
|
local success, result = pcall(function()
|
|
return assert(load(LoadResourceFile(GetCurrentResourceName(), ("locales/%s.lua"):format(Config.Locale))))()
|
|
end)
|
|
|
|
Locales[Config.Locale] = success and result or false
|
|
end
|
|
|
|
local translations = Locales[Config.Locale]
|
|
if not translations then
|
|
if Config.Locale == "en" then
|
|
return "Locale [en] does not exist"
|
|
end
|
|
|
|
-- Fall back to English translation if the current locale is not found
|
|
Config.Locale = "en"
|
|
return Translate(str, ...)
|
|
end
|
|
|
|
if translations[str] then
|
|
return translations[str]:format(...)
|
|
end
|
|
|
|
return ("Translation [%s][%s] does not exist"):format(Config.Locale, str)
|
|
end
|
|
|
|
function TranslateCap(str, ...) -- Translate string first char uppercase
|
|
return _(str, ...):gsub("^%l", string.upper)
|
|
end
|
|
|
|
_ = Translate
|
|
-- luacheck: ignore _U
|
|
_U = TranslateCap |