init locales module
This commit is contained in:
parent
60495174a4
commit
12d75a765b
|
@ -9,6 +9,7 @@ Module
|
||||||
|
|
||||||
load-later:
|
load-later:
|
||||||
- client_topmenu
|
- client_topmenu
|
||||||
|
- client_locales
|
||||||
- client_background
|
- client_background
|
||||||
//- client_about
|
//- client_about
|
||||||
- client_options
|
- client_options
|
||||||
|
|
|
@ -9,6 +9,7 @@ MainWindow
|
||||||
text: Account name
|
text: Account name
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
text-auto-resize: true
|
||||||
|
|
||||||
TextEdit
|
TextEdit
|
||||||
id: accountNameTextEdit
|
id: accountNameTextEdit
|
||||||
|
@ -22,6 +23,7 @@ MainWindow
|
||||||
anchors.left: prev.left
|
anchors.left: prev.left
|
||||||
anchors.top: prev.bottom
|
anchors.top: prev.bottom
|
||||||
margin-top: 8
|
margin-top: 8
|
||||||
|
text-auto-resize: true
|
||||||
|
|
||||||
PasswordTextEdit
|
PasswordTextEdit
|
||||||
id: accountPasswordTextEdit
|
id: accountPasswordTextEdit
|
||||||
|
@ -32,11 +34,11 @@ MainWindow
|
||||||
|
|
||||||
Label
|
Label
|
||||||
id: serverLabel
|
id: serverLabel
|
||||||
width: 140
|
|
||||||
text: Server
|
text: Server
|
||||||
anchors.left: prev.left
|
anchors.left: prev.left
|
||||||
anchors.top: prev.bottom
|
anchors.top: prev.bottom
|
||||||
margin-top: 8
|
margin-top: 8
|
||||||
|
text-auto-resize: true
|
||||||
|
|
||||||
TextEdit
|
TextEdit
|
||||||
id: serverHostTextEdit
|
id: serverHostTextEdit
|
||||||
|
@ -44,25 +46,25 @@ MainWindow
|
||||||
Make sure that your client uses
|
Make sure that your client uses
|
||||||
the correct game protocol version
|
the correct game protocol version
|
||||||
anchors.left: serverLabel.left
|
anchors.left: serverLabel.left
|
||||||
anchors.right: serverLabel.right
|
|
||||||
anchors.top: serverLabel.bottom
|
anchors.top: serverLabel.bottom
|
||||||
margin-top: 2
|
margin-top: 2
|
||||||
|
width: 140
|
||||||
|
|
||||||
Label
|
Label
|
||||||
id: portLabel
|
id: portLabel
|
||||||
text: Port
|
text: Port
|
||||||
width: 50
|
anchors.left: serverHostTextEdit.right
|
||||||
anchors.left: serverLabel.right
|
|
||||||
anchors.top: serverLabel.top
|
anchors.top: serverLabel.top
|
||||||
margin-left: 10
|
margin-left: 10
|
||||||
|
text-auto-resize: true
|
||||||
|
|
||||||
TextEdit
|
TextEdit
|
||||||
id: serverPortTextEdit
|
id: serverPortTextEdit
|
||||||
text: 7171
|
text: 7171
|
||||||
anchors.left: portLabel.left
|
anchors.left: portLabel.left
|
||||||
anchors.right: portLabel.right
|
|
||||||
anchors.top: portLabel.bottom
|
anchors.top: portLabel.bottom
|
||||||
margin-top: 2
|
margin-top: 2
|
||||||
|
width: 55
|
||||||
|
|
||||||
CheckBox
|
CheckBox
|
||||||
id: rememberPasswordBox
|
id: rememberPasswordBox
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
locale = {
|
||||||
|
name = 'en-us',
|
||||||
|
|
||||||
|
-- Translations not needed. en-us is already default.
|
||||||
|
translation = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Locales.installLocale(locale)
|
|
@ -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
|
|
@ -0,0 +1,15 @@
|
||||||
|
Module
|
||||||
|
name: client_locales
|
||||||
|
description: Translates texts to selected language
|
||||||
|
author: OTClient team
|
||||||
|
website: https://github.com/edubart/otclient
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- client_topmenu
|
||||||
|
|
||||||
|
@onLoad: |
|
||||||
|
dofile 'locales'
|
||||||
|
Locales.init()
|
||||||
|
|
||||||
|
@onUnload: |
|
||||||
|
Locales.terminate()
|
|
@ -0,0 +1,20 @@
|
||||||
|
locale = {
|
||||||
|
name = 'pt-br',
|
||||||
|
|
||||||
|
-- As traduções devem vir sempre em ordem alfabética.
|
||||||
|
translation = {
|
||||||
|
['Account name'] = 'Nome da conta',
|
||||||
|
['Auto login'] = 'Entrar automaticamente',
|
||||||
|
['Cancel'] = 'Cancelar',
|
||||||
|
['Enter Game'] = 'Entrar no Jogo',
|
||||||
|
['Options'] = 'Opções',
|
||||||
|
['Password'] = 'Senha',
|
||||||
|
['Port'] = 'Porta',
|
||||||
|
['Remember password'] = 'Lembrar senha',
|
||||||
|
['Server'] = 'Servidor'
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Adicionar informações de números. 1.000 100,00 1.000,00 etc.
|
||||||
|
}
|
||||||
|
|
||||||
|
Locales.installLocale(locale)
|
|
@ -28,7 +28,7 @@ function Options.init()
|
||||||
|
|
||||||
optionsWindow = displayUI('options.otui')
|
optionsWindow = displayUI('options.otui')
|
||||||
optionsWindow:hide()
|
optionsWindow:hide()
|
||||||
optionsButton = TopMenu.addLeftButton('optionsButton', 'Options (Ctrl+O)', 'options.png', Options.toggle)
|
optionsButton = TopMenu.addLeftButton('optionsButton', tr('Options') .. ' (Ctrl+O)', 'options.png', Options.toggle)
|
||||||
optionsTabBar = optionsWindow:getChildById('optionsTabBar')
|
optionsTabBar = optionsWindow:getChildById('optionsTabBar')
|
||||||
optionsTabBar:setContentWidget(optionsWindow:getChildById('optionsTabContent'))
|
optionsTabBar:setContentWidget(optionsWindow:getChildById('optionsTabContent'))
|
||||||
optionsTabBar:addTab('General', loadUI('general.otui'))
|
optionsTabBar:addTab('General', loadUI('general.otui'))
|
||||||
|
|
Loading…
Reference in New Issue