allow language toggle to switch faction names in menus

This commit is contained in:
Mark Vejvoda 2013-10-29 21:13:44 +00:00
parent 958872cacf
commit c04a73017c
4 changed files with 31 additions and 12 deletions

View File

@ -819,6 +819,8 @@ void MenuStateCustomGame::reloadUI() {
labelScenario.setText(lang.getString("Scenario"));
reloadFactions(true,(checkBoxScenario.getValue() == true ? scenarioFiles[listBoxScenario.getSelectedItemIndex()] : ""));
// write hint to console:
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));

View File

@ -43,7 +43,7 @@ void FactionType::load(const string &factionName, const TechTree *techTree, Chec
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
string techTreePath = techTree->getPath();
string techTreeName=techTree->getName();
string techTreeName=techTree->getNameUntranslated();
string currentPath = "";
//open xml file

View File

@ -45,17 +45,26 @@ TechTree::TechTree(const vector<string> pathList) {
attackTypes.clear();
translatedTechNames.clear();
translatedTechFactionNames.clear();
languageUsedForCache = "";
}
string TechTree::getName(bool translatedValue) const {
if(translatedValue == false) return name;
string TechTree::getNameUntranslated() const {
return name;
}
string TechTree::getName(bool translatedValue) {
if(translatedValue == false) {
return getNameUntranslated();
}
Lang &lang = Lang::getInstance();
if(lang.getTechNameLoaded() != name) {
if(lang.getTechNameLoaded() != name ||
lang.getLanguage() != languageUsedForCache) {
//printf("Line: %d Tech [%s]\n",__LINE__,name.c_str());
lang.loadTechTreeStrings(name,false);
//translatedTechFactionNames.erase(name);
lang.loadTechTreeStrings(name,lang.getLanguage() != languageUsedForCache);
languageUsedForCache = lang.getLanguage();
translatedTechFactionNames.erase(name);
}
return lang.getTechTreeString("TechTreeName",name.c_str());
@ -66,8 +75,10 @@ string TechTree::getTranslatedName(string techName, bool forceLoad, bool forceTe
//printf("Line: %d Tech [%s] forceLoad = %d forceTechtreeActiveFile = %d\n",__LINE__,techName.c_str(),forceLoad,forceTechtreeActiveFile);
Lang &lang = Lang::getInstance();
if(forceTechtreeActiveFile == false &&
translatedTechNames.find(techName) != translatedTechNames.end()) {
translatedTechNames.find(techName) != translatedTechNames.end() &&
lang.getLanguage() != languageUsedForCache) {
result = translatedTechNames[techName];
}
else {
@ -79,8 +90,8 @@ string TechTree::getTranslatedName(string techName, bool forceLoad, bool forceTe
treePath = currentPath;
name= lastDir(currentPath);
Lang &lang = Lang::getInstance();
lang.loadTechTreeStrings(name,forceLoad);
lang.loadTechTreeStrings(name,lang.getLanguage() != languageUsedForCache);
languageUsedForCache = lang.getLanguage();
translatedTechFactionNames.erase(name);
@ -97,10 +108,13 @@ string TechTree::getTranslatedFactionName(string techName, string factionName) {
//printf("Line: %d Tech [%s] name [%s] factionName [%s]\n",__LINE__,techName.c_str(),name.c_str(),factionName.c_str());
Lang &lang = Lang::getInstance();
if(lang.getTechNameLoaded() != techName) {
if(lang.getTechNameLoaded() != techName ||
lang.getLanguage() != languageUsedForCache) {
//printf("Line: %d Tech [%s] name [%s] lang.getTechNameLoaded() [%s] factionName [%s]\n",__LINE__,techName.c_str(),name.c_str(),lang.getTechNameLoaded().c_str(),factionName.c_str());
lang.loadTechTreeStrings(techName,false);
lang.loadTechTreeStrings(techName,lang.getLanguage() != languageUsedForCache);
languageUsedForCache = lang.getLanguage();
translatedTechFactionNames.erase(techName);
}
@ -172,6 +186,7 @@ void TechTree::load(const string &dir, set<string> &factions, Checksum* checksum
Lang &lang = Lang::getInstance();
lang.loadTechTreeStrings(name, true);
languageUsedForCache = lang.getLanguage();
char szBuf[8096]="";
snprintf(szBuf,8096,Lang::getInstance().getString("LogScreenGameLoadingTechtree","",true).c_str(),formatString(getName(true)).c_str());

View File

@ -53,6 +53,7 @@ private:
DamageMultiplierTable damageMultiplierTable;
Checksum checksumValue;
string languageUsedForCache;
std::map<string,string> translatedTechNames;
std::map<string,std::map<string,string> > translatedTechFactionNames;
@ -73,7 +74,8 @@ public:
int getTypeCount() const {return factionTypes.size();}
const FactionType *getType(int i) const {return &factionTypes[i];}
const ResourceType *getResourceType(int i) const {return &resourceTypes[i];}
string getName(bool translatedValue=false) const;
string getName(bool translatedValue=false);
string getNameUntranslated() const;
string getTranslatedName(string techName, bool forceLoad=false, bool forceTechtreeActiveFile=false);
string getTranslatedFactionName(string techName, string factionName);