123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #include "RULocalization.h"
- NS_RU_BEGIN
- std::unordered_map<std::string, Localization*> Localization::_gLocalizations;
- Localization* Localization::instance(std::string key4Local) {
- auto localGot = _gLocalizations.find(key4Local);
- if (localGot == _gLocalizations.end()) {
- auto local = new Localization();
- local->_localName = key4Local;
- _gLocalizations.insert(pair<std::string, Localization*>(key4Local, local));
- return local;
- }
- return localGot->second;
- }
- string Localization::getString(string valueKey)
- {
- if (!_isLoadContent) {
- _initLocalContent();
- _isLoadContent = true;
- }
- return _contentMap[valueKey].asString();
- }
- void Localization::setGroup(int group)
- {
- _group = group;
- }
- void Localization::debugLanguage(LanguageType lan)
- {
- _initLocalContent(lan);
- }
- void Localization::_initLocalContent()
- {
- LanguageType lan = Application::getInstance()->getCurrentLanguage();
- _initLocalContent(lan);
- }
- void Localization::_initLocalContent(LanguageType lan){
- std::string lanSuffix = "_english";
- switch (lan) {
- case LanguageType::CHINESE:
- lanSuffix = "_chinese";
- break;
- case LanguageType::ENGLISH:
- lanSuffix = "_english";
- break;
- case LanguageType::FRENCH:
- lanSuffix = "_french";
- break;
- case LanguageType::ITALIAN:
- lanSuffix = "_italian";
- break;
- case LanguageType::GERMAN:
- lanSuffix = "_german";
- break;
- case LanguageType::SPANISH:
- lanSuffix = "_spanish";
- break;
- case LanguageType::RUSSIAN:
- lanSuffix = "_russian";
- break;
- case LanguageType::KOREAN:
- lanSuffix = "_korean";
- break;
- case LanguageType::JAPANESE:
- lanSuffix = "_japanese";
- break;
- case LanguageType::HUNGARIAN:
- lanSuffix = "_hungarian";
- break;
- case LanguageType::PORTUGUESE:
- lanSuffix = "_portuguese";
- break;
- case LanguageType::ARABIC:
- lanSuffix = "_arabic";
- break;
- case LanguageType::POLISH:
- lanSuffix = "_polish";
- break;
- case LanguageType::TURKISH:
- lanSuffix = "_turkish";
- break;
- case LanguageType::UKRAINIAN:
- lanSuffix = "_ukrainian";
- break;
- case LanguageType::ROMANIAN:
- lanSuffix = "_romanian";
- break;
- case LanguageType::BULGARIAN:
- lanSuffix = "_bulgarian";
- break;
- case LanguageType::THAI:
- lanSuffix = "_thai";
- break;
- case LanguageType::HINDI:
- lanSuffix = "_hindi";
- break;
- case LanguageType::MALAY:
- lanSuffix = "_malay";
- break;
- case LanguageType::INDONESIAN:
- lanSuffix = "_indonesian";
- break;
- case LanguageType::VIETNAMESE:
- lanSuffix = "_vietnamese";
- break;
- case LanguageType::FILIPINO:
- lanSuffix = "_filipino";
- break;
- default:
- lanSuffix = "_english";
- break;
- }
- FileUtils* fileUtils = FileUtils::getInstance();
- if (!fileUtils->isFileExist(_getLocalFileName(lanSuffix))){
- if (_group == 0) {
- //不存在改成英文多语言
- lanSuffix = "_english";
- CCASSERT(fileUtils->isFileExist(_getLocalFileName(lanSuffix)), "多语言文件不存在");
- _contentMap = fileUtils->getValueMapFromFile(_getLocalFileName(lanSuffix));
- }else{
- int lastGroup = _group;
- _group = 0;
- // 默认0分组的多语言在不在
- if (fileUtils->isFileExist(_getLocalFileName(lanSuffix))){
- _contentMap = fileUtils->getValueMapFromFile(_getLocalFileName(lanSuffix));
- }else{ //改成英文多语言
- _group = lastGroup;
- lanSuffix = "_english";
- if (fileUtils->isFileExist(_getLocalFileName(lanSuffix))){
- _contentMap = fileUtils->getValueMapFromFile(_getLocalFileName(lanSuffix));
- }else{ //默认分组的多语言不存在,改成默认0分组英文多语言
- _group = 0;
- CCASSERT(fileUtils->isFileExist(_getLocalFileName(lanSuffix)), "多语言文件不存在");
- _contentMap = fileUtils->getValueMapFromFile(_getLocalFileName(lanSuffix));
- }
- }
- }
- }else{
- _contentMap = fileUtils->getValueMapFromFile(_getLocalFileName(lanSuffix));
- }
- }
- string Localization::_getLocalFileName(string lanSuffix){
- string localFileName = _localName + lanSuffix + ".plist";
- if (_group != 0) {
- localFileName = _localName + lanSuffix + Value(_group).asString() + ".plist";
- }
- return localFileName;
- }
- NS_RU_END
|