#include "RULocalization.h" NS_RU_BEGIN std::unordered_map 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(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