more lang class code cleanup and better caching of techtree strings
This commit is contained in:
parent
d2ba7b163b
commit
0c00b49995
|
@ -63,7 +63,7 @@ void Lang::loadGameStrings(string uselanguage, bool loadFonts,
|
||||||
}
|
}
|
||||||
bool languageChanged = (uselanguage != this->language);
|
bool languageChanged = (uselanguage != this->language);
|
||||||
this->language= uselanguage;
|
this->language= uselanguage;
|
||||||
loadGameStringProperties(uselanguage, gameStringsMainLanguage, true, fallbackToDefault);
|
loadGameStringProperties(uselanguage, gameStringsAllLanguages[this->language], true, fallbackToDefault);
|
||||||
|
|
||||||
if(languageChanged == true) {
|
if(languageChanged == true) {
|
||||||
Font::resetToDefaults();
|
Font::resetToDefaults();
|
||||||
|
@ -276,7 +276,6 @@ void Lang::loadScenarioStrings(string scenarioDir, string scenarioName, bool isT
|
||||||
void Lang::loadTechTreeStrings(string techTree,bool forceLoad) {
|
void Lang::loadTechTreeStrings(string techTree,bool forceLoad) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] techTree = [%s]\n",__FILE__,__FUNCTION__,__LINE__,techTree.c_str());
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] techTree = [%s]\n",__FILE__,__FUNCTION__,__LINE__,techTree.c_str());
|
||||||
|
|
||||||
//printf("Load techtree strings techTree [%s] techNameLoaded [%s] forceLoad: %d\n",techTree.c_str(),techNameLoaded.c_str(),forceLoad);
|
|
||||||
if(forceLoad == false && techTree == techNameLoaded) {
|
if(forceLoad == false && techTree == techNameLoaded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -288,8 +287,6 @@ void Lang::loadTechTreeStrings(string techTree,bool forceLoad) {
|
||||||
string &techPath = techPaths[idx];
|
string &techPath = techPaths[idx];
|
||||||
endPathWithSlash(techPath);
|
endPathWithSlash(techPath);
|
||||||
|
|
||||||
//printf("techPath [%s]\n",techPath.c_str());
|
|
||||||
|
|
||||||
if(folderExists(techPath + techTree) == true) {
|
if(folderExists(techPath + techTree) == true) {
|
||||||
currentPath = techPath;
|
currentPath = techPath;
|
||||||
endPathWithSlash(currentPath);
|
endPathWithSlash(currentPath);
|
||||||
|
@ -302,13 +299,14 @@ void Lang::loadTechTreeStrings(string techTree,bool forceLoad) {
|
||||||
string pathDefault = techTreeFolder + "lang/" + techTree + "_default.lng";
|
string pathDefault = techTreeFolder + "lang/" + techTree + "_default.lng";
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path = [%s] pathDefault = [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str(),pathDefault.c_str());
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path = [%s] pathDefault = [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str(),pathDefault.c_str());
|
||||||
|
|
||||||
techTreeStrings.clear();
|
//techTreeStrings.clear();
|
||||||
techTreeStringsDefault.clear();
|
//techTreeStringsDefault.clear();
|
||||||
|
|
||||||
//try to load the current language first
|
//try to load the current language first
|
||||||
if(fileExists(path)) {
|
if(fileExists(path)) {
|
||||||
if(forceLoad == true || path != techTreeStrings.getpath()) {
|
if(forceLoad == true ||
|
||||||
techTreeStrings.load(path);
|
path != techTreeStringsAllLanguages[techTree][this->language].getpath()) {
|
||||||
|
techTreeStringsAllLanguages[techTree][this->language].load(path);
|
||||||
techNameLoaded = techTree;
|
techNameLoaded = techTree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -316,20 +314,24 @@ void Lang::loadTechTreeStrings(string techTree,bool forceLoad) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path not found [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str());
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path not found [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str());
|
||||||
|
|
||||||
//try english otherwise
|
//try english otherwise
|
||||||
path = techTreeFolder + "lang/" + techTree + "_english.lng";
|
string default_language = "english";
|
||||||
|
path = techTreeFolder + "lang/" + techTree + "_" + default_language + ".lng";
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path = [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str());
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path = [%s]\n",__FILE__,__FUNCTION__,__LINE__,path.c_str());
|
||||||
|
|
||||||
if(fileExists(path)) {
|
if(fileExists(path)) {
|
||||||
if(forceLoad == true || path != techTreeStrings.getpath()) {
|
if(forceLoad == true ||
|
||||||
techTreeStrings.load(path);
|
path != techTreeStringsAllLanguages[techTree][default_language].getpath()) {
|
||||||
|
techTreeStringsAllLanguages[techTree][default_language].load(path);
|
||||||
techNameLoaded = techTree;
|
techNameLoaded = techTree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fileExists(pathDefault)) {
|
if(fileExists(pathDefault)) {
|
||||||
if(forceLoad == true || pathDefault != techTreeStrings.getpath()) {
|
string default_language = "default";
|
||||||
techTreeStringsDefault.load(pathDefault);
|
if(forceLoad == true ||
|
||||||
|
pathDefault != techTreeStringsAllLanguages[techTree][default_language].getpath()) {
|
||||||
|
techTreeStringsAllLanguages[techTree][default_language].load(pathDefault);
|
||||||
techNameLoaded = techTree;
|
techNameLoaded = techTree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -388,23 +390,23 @@ bool Lang::hasString(const string &s, string uselanguage, bool fallbackToDefault
|
||||||
try {
|
try {
|
||||||
if(uselanguage != "") {
|
if(uselanguage != "") {
|
||||||
//printf("#a fallbackToDefault = %d [%s] uselanguage [%s] DEFAULT_LANGUAGE [%s] this->language [%s]\n",fallbackToDefault,s.c_str(),uselanguage.c_str(),DEFAULT_LANGUAGE,this->language.c_str());
|
//printf("#a fallbackToDefault = %d [%s] uselanguage [%s] DEFAULT_LANGUAGE [%s] this->language [%s]\n",fallbackToDefault,s.c_str(),uselanguage.c_str(),DEFAULT_LANGUAGE,this->language.c_str());
|
||||||
if(gameStringsOtherLanguages.find(uselanguage) == gameStringsOtherLanguages.end()) {
|
if(gameStringsAllLanguages.find(uselanguage) == gameStringsAllLanguages.end()) {
|
||||||
loadGameStringProperties(uselanguage, gameStringsOtherLanguages[uselanguage], false);
|
loadGameStringProperties(uselanguage, gameStringsAllLanguages[uselanguage], false);
|
||||||
}
|
}
|
||||||
//string result2 = otherLanguageStrings[uselanguage].getString(s);
|
//string result2 = otherLanguageStrings[uselanguage].getString(s);
|
||||||
gameStringsOtherLanguages[uselanguage].getString(s);
|
gameStringsAllLanguages[uselanguage].getString(s);
|
||||||
//printf("#b result2 [%s]\n",result2.c_str());
|
//printf("#b result2 [%s]\n",result2.c_str());
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//string result2 = strings.getString(s);
|
//string result2 = strings.getString(s);
|
||||||
gameStringsMainLanguage.getString(s);
|
gameStringsAllLanguages[this->language].getString(s);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(exception &ex) {
|
catch(exception &ex) {
|
||||||
if(gameStringsMainLanguage.getpath() != "") {
|
if(gameStringsAllLanguages[this->language].getpath() != "") {
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s] for uselanguage [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what(),uselanguage.c_str());
|
if(SystemFlags::VERBOSE_MODE_ENABLED) SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s] for uselanguage [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what(),uselanguage.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,21 +437,21 @@ string Lang::getString(const string &s, string uselanguage, bool fallbackToDefau
|
||||||
string result = "";
|
string result = "";
|
||||||
|
|
||||||
if(uselanguage != "") {
|
if(uselanguage != "") {
|
||||||
if(gameStringsOtherLanguages.find(uselanguage) == gameStringsOtherLanguages.end()) {
|
if(gameStringsAllLanguages.find(uselanguage) == gameStringsAllLanguages.end()) {
|
||||||
loadGameStringProperties(uselanguage, gameStringsOtherLanguages[uselanguage], false);
|
loadGameStringProperties(uselanguage, gameStringsAllLanguages[uselanguage], false);
|
||||||
}
|
}
|
||||||
result = gameStringsOtherLanguages[uselanguage].getString(s);
|
result = gameStringsAllLanguages[uselanguage].getString(s);
|
||||||
replaceAll(result, "\\n", "\n");
|
replaceAll(result, "\\n", "\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = gameStringsMainLanguage.getString(s);
|
result = gameStringsAllLanguages[this->language].getString(s);
|
||||||
replaceAll(result, "\\n", "\n");
|
replaceAll(result, "\\n", "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return parseResult(s, result);;
|
return parseResult(s, result);;
|
||||||
}
|
}
|
||||||
catch(exception &ex) {
|
catch(exception &ex) {
|
||||||
if(gameStringsMainLanguage.getpath() != "") {
|
if(gameStringsAllLanguages[this->language].getpath() != "") {
|
||||||
if(fallbackToDefault == false || SystemFlags::VERBOSE_MODE_ENABLED) {
|
if(fallbackToDefault == false || SystemFlags::VERBOSE_MODE_ENABLED) {
|
||||||
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == false) {
|
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == false) {
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s] uselanguage [%s] text [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what(),uselanguage.c_str(),s.c_str());
|
if(SystemFlags::VERBOSE_MODE_ENABLED) SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s] uselanguage [%s] text [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what(),uselanguage.c_str(),s.c_str());
|
||||||
|
@ -499,22 +501,23 @@ bool Lang::hasScenarioString(const string &s) {
|
||||||
|
|
||||||
string Lang::getTechTreeString(const string &s,const char *defaultValue) {
|
string Lang::getTechTreeString(const string &s,const char *defaultValue) {
|
||||||
try{
|
try{
|
||||||
|
string default_language = "default";
|
||||||
string result = "";
|
string result = "";
|
||||||
|
|
||||||
//printf("getTechTreeString [%s] allowNativeLanguageTechtree: %d techTreeStrings.hasString(s): %d path [%s]\n",s.c_str(),allowNativeLanguageTechtree,techTreeStrings.hasString(s),techTreeStrings.getpath().c_str());
|
|
||||||
|
|
||||||
if(allowNativeLanguageTechtree == true &&
|
if(allowNativeLanguageTechtree == true &&
|
||||||
(techTreeStrings.hasString(s) == true || defaultValue == NULL)) {
|
(techTreeStringsAllLanguages[techNameLoaded][this->language].hasString(s) == true ||
|
||||||
if(techTreeStrings.hasString(s) == false && techTreeStringsDefault.hasString(s) == true) {
|
defaultValue == NULL)) {
|
||||||
result = techTreeStringsDefault.getString(s);
|
if(techTreeStringsAllLanguages[techNameLoaded][this->language].hasString(s) == false &&
|
||||||
|
techTreeStringsAllLanguages[techNameLoaded][default_language].hasString(s) == true) {
|
||||||
|
result = techTreeStringsAllLanguages[techNameLoaded][default_language].getString(s);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = techTreeStrings.getString(s);
|
result = techTreeStringsAllLanguages[techNameLoaded][this->language].getString(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(allowNativeLanguageTechtree == true &&
|
else if(allowNativeLanguageTechtree == true &&
|
||||||
techTreeStringsDefault.hasString(s) == true) {
|
techTreeStringsAllLanguages[techNameLoaded][default_language].hasString(s) == true) {
|
||||||
result = techTreeStringsDefault.getString(s);
|
result = techTreeStringsAllLanguages[techNameLoaded][default_language].getString(s);
|
||||||
}
|
}
|
||||||
else if(defaultValue != NULL) {
|
else if(defaultValue != NULL) {
|
||||||
result = defaultValue;
|
result = defaultValue;
|
||||||
|
@ -523,7 +526,7 @@ string Lang::getTechTreeString(const string &s,const char *defaultValue) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
catch(exception &ex) {
|
catch(exception &ex) {
|
||||||
if(techTreeStrings.getpath() != "") {
|
if(techTreeStringsAllLanguages[techNameLoaded][this->language].getpath() != "") {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
|
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
|
||||||
}
|
}
|
||||||
return "???" + s + "???";
|
return "???" + s + "???";
|
||||||
|
|
|
@ -32,20 +32,17 @@ using Shared::Util::Properties;
|
||||||
|
|
||||||
class Lang {
|
class Lang {
|
||||||
private:
|
private:
|
||||||
string language;
|
|
||||||
bool is_utf8_language;
|
|
||||||
|
|
||||||
Properties gameStringsMainLanguage;
|
bool is_utf8_language;
|
||||||
std::map<string,Properties> gameStringsOtherLanguages;
|
string language;
|
||||||
|
std::map<string,Properties> gameStringsAllLanguages;
|
||||||
|
|
||||||
Properties scenarioStrings;
|
Properties scenarioStrings;
|
||||||
|
|
||||||
Properties techTreeStrings;
|
|
||||||
Properties techTreeStringsDefault;
|
|
||||||
|
|
||||||
Properties tilesetStrings;
|
Properties tilesetStrings;
|
||||||
Properties tilesetStringsDefault;
|
Properties tilesetStringsDefault;
|
||||||
|
|
||||||
|
std::map<string, std::map<string, Properties> > techTreeStringsAllLanguages;
|
||||||
string techNameLoaded;
|
string techNameLoaded;
|
||||||
bool allowNativeLanguageTechtree;
|
bool allowNativeLanguageTechtree;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user