123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //
- // AppLang.cpp
- // Simulator
- //
- #include "AppLang.h"
- USING_NS_CC;
- AppLang::AppLang()
- : _hasInit(false),
- _localizationFileName("lang")
- {
- }
- void AppLang::readLocalizationFile()
- {
- if (!_hasInit)
- {
- _hasInit = true;
-
- auto fileUtils = FileUtils::getInstance();
-
- if (!fileUtils->isFileExist(_localizationFileName))
- {
- cocos2d::log("[WARNING]:not find %s", _localizationFileName.c_str());
- return;
- }
- auto fullFilePath = fileUtils->fullPathForFilename(_localizationFileName);
- std::string fileContent = FileUtils::getInstance()->getStringFromFile(fullFilePath);
- if(fileContent.empty())
- return;
-
- if (_docRootjson.Parse<0>(fileContent.c_str()).HasParseError())
- {
- cocos2d::log("[WARNING]:read json file %s failed because of %d", _localizationFileName.c_str(), _docRootjson.GetParseError());
- return;
- }
- }
- }
- AppLang* AppLang::getInstance()
- {
- static AppLang *lang = nullptr;
- if (!lang)
- {
- lang = new AppLang;
- lang->readLocalizationFile();
- }
- return lang;
- }
- std::string AppLang::getString(const std::string &lang, const std::string &key)
- {
- std::string tmpKey = key;
- const char *ckey = tmpKey.c_str();
- std::string tmpLang = lang;
- const char *langKey = tmpLang.c_str();
-
- if (!_docRootjson.IsObject())
- {
- return key;
- }
-
- if (_docRootjson.HasMember(langKey))
- {
- const rapidjson::Value& v = _docRootjson[langKey];
- if (v.HasMember(ckey))
- {
- return v[ckey].GetString();
- }
- }
- return key;
- }
|