Fixed bug in loading lang files

This commit is contained in:
mathusummut
2018-06-29 22:02:49 +02:00
parent dfd4a658aa
commit 778eb71ab7

View File

@@ -533,10 +533,8 @@ namespace Glest {
} }
} }
bool Lang::hasString(const string & s, string uselanguage, bool Lang::hasString(const string & s, string uselanguage, bool fallbackToDefault) {
bool fallbackToDefault) { bool result;
bool result = false;
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 (gameStringsAllLanguages.find(uselanguage) == if (gameStringsAllLanguages.find(uselanguage) ==
@@ -545,32 +543,14 @@ namespace Glest {
gameStringsAllLanguages[uselanguage], gameStringsAllLanguages[uselanguage],
false); false);
} }
//string result2 = otherLanguageStrings[uselanguage].getString(s);
result = gameStringsAllLanguages[uselanguage].getString(s).length() != 0; result = gameStringsAllLanguages[uselanguage].getString(s).length() != 0;
//printf("#b result2 [%s]\n",result2.c_str());
} else { } else {
//string result2 = strings.getString(s);
result = gameStringsAllLanguages[this->language].getString(s).length() != 0; result = gameStringsAllLanguages[this->language].getString(s).length() != 0;
} }
if (!result && fallbackToDefault == true && uselanguage != DEFAULT_LANGUAGE if (!result && fallbackToDefault == true && uselanguage != DEFAULT_LANGUAGE
&& this->language != DEFAULT_LANGUAGE) { && this->language != DEFAULT_LANGUAGE) {
result = hasString(s, DEFAULT_LANGUAGE, false); result = hasString(s, DEFAULT_LANGUAGE, false);
} }
} catch (exception & ex) {
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());
}
//printf("#1 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 (fallbackToDefault == true && uselanguage != DEFAULT_LANGUAGE
&& this->language != DEFAULT_LANGUAGE) {
result = hasString(s, DEFAULT_LANGUAGE, false);
}
}
return result; return result;
} }
@@ -579,15 +559,14 @@ namespace Glest {
} }
string Lang::parseResult(const string & key, const string & value) { string Lang::parseResult(const string & key, const string & value) {
if (value != "$USE_DEFAULT_LANGUAGE_VALUE") { if (key.length() == 0 || value != "$USE_DEFAULT_LANGUAGE_VALUE") {
return value; return value;
} }
string result = Lang::getString(key, DEFAULT_LANGUAGE); string result = Lang::getString(key, DEFAULT_LANGUAGE);
return result; return result;
} }
string Lang::getString(const string & s, string uselanguage,
bool fallbackToDefault) { string Lang::getString(const string & s, string uselanguage, bool fallbackToDefault) {
try {
string result = ""; string result = "";
if (uselanguage != "") { if (uselanguage != "") {
@@ -603,123 +582,60 @@ namespace Glest {
result = gameStringsAllLanguages[this->language].getString(s); result = gameStringsAllLanguages[this->language].getString(s);
replaceAll(result, "\\n", "\n"); replaceAll(result, "\\n", "\n");
} }
if (result.length() != 0)
return parseResult(s, result);
return parseResult(s, result);;
} catch (exception & ex) {
if (gameStringsAllLanguages[this->language].getpath() != "") {
if (fallbackToDefault == false || SystemFlags::VERBOSE_MODE_ENABLED) {
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());
}
}
}
//printf("#2 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(fallbackToDefault == true && uselanguage != DEFAULT_LANGUAGE && this->language != DEFAULT_LANGUAGE) {
if (uselanguage != DEFAULT_LANGUAGE if (uselanguage != DEFAULT_LANGUAGE
&& this->language != DEFAULT_LANGUAGE) { && this->language != DEFAULT_LANGUAGE) {
return getString(s, DEFAULT_LANGUAGE, false); return getString(s, DEFAULT_LANGUAGE, false);
} }
}
return s; return s;
} }
string Lang::getScenarioString(const string & s) { string Lang::getScenarioString(const string & s) {
try {
string result = scenarioStrings.getString(s); string result = scenarioStrings.getString(s);
if (result.length() == 0)
return getTechTreeString(s);
replaceAll(result, "\\n", "\n"); replaceAll(result, "\\n", "\n");
return result; return result;
} catch (exception & ex) {
if (scenarioStrings.getpath() != "") {
SystemFlags::OutputDebug(SystemFlags::debugError,
"In [%s::%s Line: %d] Error [%s]\n",
__FILE__, __FUNCTION__, __LINE__,
ex.what());
}
return getTechTreeString(s);
}
} }
bool Lang::hasScenarioString(const string & s) { bool Lang::hasScenarioString(const string & s) {
bool result = false; return scenarioStrings.getString(s).length() != 0;
try {
result = scenarioStrings.getString(s).length() != 0;
} catch (exception & ex) {
if (scenarioStrings.getpath() != "") {
if (SystemFlags::VERBOSE_MODE_ENABLED)
SystemFlags::OutputDebug(SystemFlags::debugError,
"In [%s::%s Line: %d] Error [%s]\n",
__FILE__, __FUNCTION__, __LINE__,
ex.what());
}
}
return result;
} }
string Lang::getTechTreeString(const string & s, string Lang::getTechTreeString(const string & s, const char *defaultValue) {
const char *defaultValue) {
try {
string result = ""; string result = "";
string default_language = "default"; string default_language = "default";
//printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str()); //printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str());
if (allowNativeLanguageTechtree == true && if (allowNativeLanguageTechtree == true &&
(techTreeStringsAllLanguages[techNameLoaded][this->language]. (techTreeStringsAllLanguages[techNameLoaded][this->language].hasString(s) == true || defaultValue == NULL)) {
hasString(s) == true || defaultValue == NULL)) { if (techTreeStringsAllLanguages[techNameLoaded][this->language].hasString(s) == false &&
if (techTreeStringsAllLanguages[techNameLoaded][this->language]. techTreeStringsAllLanguages[techNameLoaded][default_language].hasString(s) == true) {
hasString(s) == false
&&
techTreeStringsAllLanguages[techNameLoaded][default_language].
hasString(s) == true) {
//printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str()); //printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str());
result = result = techTreeStringsAllLanguages[techNameLoaded][default_language].getString(s);
techTreeStringsAllLanguages[techNameLoaded][default_language].
getString(s);
} else { } else {
//printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str()); //printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str());
result = techTreeStringsAllLanguages[techNameLoaded][this->language].getString(s);
result =
techTreeStringsAllLanguages[techNameLoaded][this->language].
getString(s);
} }
} else if (allowNativeLanguageTechtree == true && } else if (allowNativeLanguageTechtree == true && techTreeStringsAllLanguages[techNameLoaded][default_language].hasString(s) == true) {
techTreeStringsAllLanguages[techNameLoaded]
[default_language].hasString(s) == true) {
//printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str()); //printf("Line: %d techNameLoaded = %s s = %s this->language = %s\n",__LINE__,techNameLoaded.c_str(),s.c_str(),this->language.c_str());
result = result = techTreeStringsAllLanguages[techNameLoaded][default_language].getString(s);
techTreeStringsAllLanguages[techNameLoaded][default_language].
getString(s);
} else if (defaultValue != NULL) { } else if (defaultValue != NULL) {
result = defaultValue; result = defaultValue;
} }
replaceAll(result, "\\n", "\n"); replaceAll(result, "\\n", "\n");
return result; return result.length() == 0 && defaultValue == NULL ? s : result;
} catch (exception & ex) {
if (techTreeStringsAllLanguages[techNameLoaded][this->language].
getpath() != "") {
SystemFlags::OutputDebug(SystemFlags::debugError,
"In [%s::%s Line: %d] Error [%s]\n",
__FILE__, __FUNCTION__, __LINE__,
ex.what());
}
}
return s;
} }
string Lang::getTilesetString(const string & s, const char *defaultValue) { string Lang::getTilesetString(const string & s, const char *defaultValue) {
try {
string result = ""; string result = "";
if (tilesetStrings.hasString(s) == true || defaultValue == NULL) { if (tilesetStrings.hasString(s) == true || defaultValue == NULL) {
@@ -735,16 +651,7 @@ namespace Glest {
result = defaultValue; result = defaultValue;
} }
replaceAll(result, "\\n", "\n"); replaceAll(result, "\\n", "\n");
return result; return result.length() == 0 && defaultValue == NULL ? s : result;
} catch (exception & ex) {
if (tilesetStrings.getpath() != "") {
SystemFlags::OutputDebug(SystemFlags::debugError,
"In [%s::%s Line: %d] Error [%s]\n",
__FILE__, __FUNCTION__, __LINE__,
ex.what());
}
}
return s;
} }
bool Lang::fileMatchesISO630Code(string uselanguage, bool Lang::fileMatchesISO630Code(string uselanguage,
@@ -812,24 +719,12 @@ namespace Glest {
} else { } else {
Properties stringsTest; Properties stringsTest;
stringsTest.load(testLanguageFile); stringsTest.load(testLanguageFile);
try {
result = stringsTest.getString("NativeLanguageName"); result = stringsTest.getString("NativeLanguageName");
if (result.length() == 0) {
if (SystemFlags::VERBOSE_MODE_ENABLED)
printf("ERROR Caching native language name for [%s] msg: [UNKNOWN]\n", testLanguageFile.c_str());
} else
cachedNativeLanguageNames[testLanguageFile] = result; cachedNativeLanguageNames[testLanguageFile] = result;
if (SystemFlags::VERBOSE_MODE_ENABLED)
printf("Caching native language name for [%s] = [%s]\n",
testLanguageFile.c_str(), result.c_str());
} catch (const exception & ex) {
if (SystemFlags::VERBOSE_MODE_ENABLED)
printf("ERROR Caching native language name for [%s] msg: [%s]\n",
testLanguageFile.c_str(), ex.what());
} catch (...) {
if (SystemFlags::VERBOSE_MODE_ENABLED)
printf
("ERROR Caching native language name for [%s] msg: [UNKNOWN]\n",
testLanguageFile.c_str());
}
} }
return result; return result;