2016年4月21日 星期四

0421Cocos2dx 多國語言的處理方式

http://cocos2dx.logdown.com/posts/289148-cocos2dx-multiple-languages

多國語言在手機上的支援, 一向是App是否被推薦關鍵指標之一, 一般來說, 最少需要支援最常用的八國語言。

Step1. 使用 Singleton 作為 Helper 架構存取對應所需的字串

Step2. 決定多國語言的實作方案

  • 建議: 使用json 檔案作為 多國語言的字串檔
  • 導入json對應的所需的檔案
  • Cocos2dx json 檔案存取方式範例
  • 決定json資料欄位的格式 (en.json)
    {
        "Text_Key1" : "Text1",
        "Text_Key2" : "Text2"
    }
    
  • 決定json資料欄位的格式 (chinese.json)
    {
        "Text_Key1" : "字串1",
        "Text_Key2" : "字串2"
    }
    

Step3. 實作Singleton中的讀取檔案函式

LanguageHelper::LanguageHelper()
{
string fileName;
switch (Application::getInstance()->getCurrentLanguage()) {
case LanguageType::ENGLISH:
    fileName = "en.json";
    break;

case LanguageType::CHINESE: {
    fileName = "chinese.json";
    break;
}

default:
    fileName = "en.json";
    break;
};
string clearContent = FileUtils::getInstance()->getStringFromFile(fileName);

document.Parse<0>(clearContent.c_str());
if (document.HasParseError()) {
    CCLOG("Language file parsing error!");
    return;
    }
};

string LanguageHelper::getString(string key){
   return document[key.c_str()].GetString();
}

Step4. 在 UI 元件中使用 Helper 去設置文字

labelText->setString(LanguageHelper::getString("Text_Key1"));

完成!

筆者: 常見的幾種語言已被定義在Cocos2dx中的 LanguageType

沒有留言:

張貼留言

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...