利用.plist檔案讓Cocos2d-x輕松支援多語言。
.plist檔案類似于XML檔案。以下是.plist檔案的一個模版:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>tutorial_on</key>
<string>Tutorial: ON</string>
<key>tutorial_off</key>
<string>Tutorial: OFF</string>
</dict>
</plist>
将不同語言儲存在不同的.plist檔案中,例如以下圖:
然後在程式中要用到這些字元串的時候用下面宏調用:LocalizedCStringByKey(“tutorial_on”);。宏定義的完整代碼例如以下:
//Language.h
using namespace cocos2d;
//return type:const char*
#define LocalizedCStringByKey(key) Language::getStringByKey(key)
class Language{
public:
static const char* getStringByKey(const char * key){
//擷取目前系統環境語言類型
ccLanguageType languageType = CCApplication::sharedApplication()->getCurrentLanguage();
//字典
CCDictionary *pDic;
if(kLanguageChinese == languageType)
//依據語言選擇不同的屬性表
pDic = CCDictionary::createWithContentsOfFile("language/zh.plist");
else
pDic = CCDictionary::createWithContentsOfFile("language/en.plist");
std::string keyStr = key;
//傳回key相應的value
return (pDic -> valueForKey(keyStr))->getCString();
}
};