localization utiity methods

to better adress https://github.com/TorqueGameEngines/Torque3D/issues/1036
This commit is contained in:
AzaezelX 2023-06-22 17:52:32 -05:00
parent cf233367a8
commit 5e6a95866a
2 changed files with 38 additions and 1 deletions

View file

@ -14,6 +14,14 @@
function UI::onCreate( %this )
{
exec("./scripts/utility");
// create and set as core a defaultTable LanguageTable for localization purposes
// example usage for quick language appending
// addLanguage("defaultTable","check","ch");
// addLanguage("defaultTable","try","tr");
createLangTable("defaultTable");
setCoreLangTable("defaultTable");
exec("./langs/languageMap");
}
function UI::onDestroy( %this )
@ -81,7 +89,6 @@ function UI::initClient(%this)
%this.queueExec("./scripts/messageBoxes");
%this.queueExec("./scripts/help");
%this.queueExec("./scripts/cursors");
%this.queueExec("./scripts/utility");
if(isToolBuild())
%this.queueExec("./tools/creator.tscript");

View file

@ -130,3 +130,33 @@ function getButtonBitmap(%device, %button)
return %assetId;
}
function createLangTable(%name)
{
// create a langtable, and global variable to be referenced by GUI elements
// opeates as follows:
// root gui element contains langTableMod = mylang;
// subelements inherit or override
// langTableMod then informs the underlying system to look for a $I18N::mylang
// this holds a reference to a table defined in .lso files, using data/UI/langs/languageMap global defines as a key
new LangTable(%name){};
eval("$I18N::"@ %name @"="@ %name @".getId();");
}
function addLanguage(%langTable, %filename, %alias)
{
// generate an .lso file and if a languageMap file does not exist, it as well
%needLangMap = true;
if(isFile("data/UI/langs/languageMap"))
%needLangMap = false;
CompileLanguage("data/UI/langs/"@ %filename @".txt", %needLangMap);
%langTable.addLanguage("data/UI/langs/"@ %filename @".lso", %alias);
}
function switchLanguage(%language) //use here the #n as it's the order of inclusion
{
// swap existing language from the current core langtable and refresh the gui contents
getCoreLangTable().setCurrentLanguage(%language);
Canvas.setContent(Canvas.getContent());
}