瀏覽代碼

Merge pull request #1037 from Azaezel/alpha41/localizationUtils

localization utility methods
Brian Roberts 2 年之前
父節點
當前提交
7f18baa345
共有 2 個文件被更改,包括 38 次插入1 次删除
  1. 8 1
      Templates/BaseGame/game/data/UI/UI.tscript
  2. 30 0
      Templates/BaseGame/game/data/UI/scripts/utility.tscript

+ 8 - 1
Templates/BaseGame/game/data/UI/UI.tscript

@@ -14,6 +14,14 @@
 
 
 function UI::onCreate( %this )
 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 )
 function UI::onDestroy( %this )
@@ -81,7 +89,6 @@ function UI::initClient(%this)
    %this.queueExec("./scripts/messageBoxes");
    %this.queueExec("./scripts/messageBoxes");
    %this.queueExec("./scripts/help");
    %this.queueExec("./scripts/help");
    %this.queueExec("./scripts/cursors");
    %this.queueExec("./scripts/cursors");
-   %this.queueExec("./scripts/utility");
    
    
    if(isToolBuild())
    if(isToolBuild())
       %this.queueExec("./tools/creator.tscript");
       %this.queueExec("./tools/creator.tscript");

+ 30 - 0
Templates/BaseGame/game/data/UI/scripts/utility.tscript

@@ -130,3 +130,33 @@ function getButtonBitmap(%device, %button)
    
    
    return %assetId;
    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());
+}