mirror of
https://github.com/edubart/otclient.git
synced 2025-10-20 14:33:26 +02:00
init locales module
This commit is contained in:
81
modules/client_locales/locales.lua
Normal file
81
modules/client_locales/locales.lua
Normal file
@@ -0,0 +1,81 @@
|
||||
Locales = { }
|
||||
|
||||
-- private variables
|
||||
local defaultLocaleName = 'en-us'
|
||||
local installedLocales
|
||||
local currentLocale
|
||||
|
||||
-- hooked functions
|
||||
function UIWidget:onTextChange(text, oldText)
|
||||
local translation = tr(text)
|
||||
if translation ~= text then
|
||||
self:setText(translation)
|
||||
end
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Locales.init()
|
||||
installedLocales = {}
|
||||
|
||||
dofile('en-us')
|
||||
dofile('pt-br')
|
||||
|
||||
local userLocaleName = Settings.get('locale')
|
||||
if not userLocaleName or not Locales.setLocale(userLocaleName) then
|
||||
print('Locale ' .. userLocaleName .. ' is not loaded. Using default. ' .. defaultLocaleName)
|
||||
if not Locales.setLocale(defaultLocaleName) then
|
||||
fatal('Default locale could not be loaded. Re-install the program.')
|
||||
return
|
||||
end
|
||||
Settings.set('locale', defaultLocaleName)
|
||||
end
|
||||
|
||||
-- create combobox
|
||||
--for key,value in pairs(installedLocales) do
|
||||
-- add elements
|
||||
--end
|
||||
end
|
||||
|
||||
function Locales.terminate()
|
||||
installedLocales = nil
|
||||
currentLocale = nil
|
||||
end
|
||||
|
||||
function Locales.installLocale(locale)
|
||||
if not locale then
|
||||
print('Coult not install locale.')
|
||||
return false
|
||||
end
|
||||
|
||||
if not locale.name then
|
||||
printf('Coult not install locale.')
|
||||
return false
|
||||
end
|
||||
|
||||
installedLocales[locale.name] = locale
|
||||
end
|
||||
|
||||
function Locales.setLocale(name)
|
||||
local locale = installedLocales[name]
|
||||
if locale then
|
||||
currentLocale = locale
|
||||
return true
|
||||
end
|
||||
|
||||
print("Locale " .. name .. ' does not exist.')
|
||||
return false
|
||||
end
|
||||
|
||||
function tr(text, ...)
|
||||
if currentLocale then
|
||||
if tonumber(text) then
|
||||
-- todo: add some dots etc
|
||||
elseif tostring(text) then
|
||||
local translation = currentLocale.translation[text]
|
||||
if translation then
|
||||
return string.format(translation, ...)
|
||||
end
|
||||
end
|
||||
end
|
||||
return text
|
||||
end
|
Reference in New Issue
Block a user