diff --git a/source/glest_game/global/lang.cpp b/source/glest_game/global/lang.cpp index 1f051452..a3e84ef0 100644 --- a/source/glest_game/global/lang.cpp +++ b/source/glest_game/global/lang.cpp @@ -372,20 +372,15 @@ pair Lang::getNavtiveNameFromLanguageName(string langName) { //printf("looking for language [%s]\n",langName.c_str()); - map nativeList = Lang::getDiscoveredLanguageList(); - for(map::iterator iterMap = nativeList.begin(); - iterMap != nativeList.end(); ++iterMap) { - //printf("language [%s][%s]\n",iterMap->second.c_str(), iterMap->first.c_str()); - - if(iterMap->second == langName) { - result = make_pair(iterMap->first,iterMap->second); - break; - } + map nativeList = Lang::getDiscoveredLanguageList(true); + map::iterator iterMap = nativeList.find(langName); + if(iterMap != nativeList.end()) { + result = make_pair(iterMap->second,iterMap->first); } return result; } -map Lang::getDiscoveredLanguageList() { +map Lang::getDiscoveredLanguageList(bool searchKeyIsLangName) { map result; string data_path = getGameReadWritePath(GameConstants::path_data_CacheLookupKey); @@ -397,7 +392,12 @@ map Lang::getDiscoveredLanguageList() { string testLanguage = langResults[i]; string testLanguageFile = userDataPath + "data/lang/" + testLanguage + ".lng"; string nativeName = getNativeLanguageName(testLanguage, testLanguageFile); - result[nativeName] = testLanguage; + if(searchKeyIsLangName == false) { + result[nativeName] = testLanguage; + } + else { + result[testLanguage] = nativeName; + } } vector langResults2; @@ -412,7 +412,12 @@ map Lang::getDiscoveredLanguageList() { string testLanguageFile = data_path + "data/lang/" + testLanguage + ".lng"; string nativeName = getNativeLanguageName(testLanguage, testLanguageFile); - result[nativeName] = testLanguage; + if(searchKeyIsLangName == false) { + result[nativeName] = testLanguage; + } + else { + result[testLanguage] = nativeName; + } } } diff --git a/source/glest_game/global/lang.h b/source/glest_game/global/lang.h index 30c7776c..91cf42d3 100644 --- a/source/glest_game/global/lang.h +++ b/source/glest_game/global/lang.h @@ -55,7 +55,7 @@ public: string getLanguage() const { return language; } bool isLanguageLocal(string compareLanguage) const; bool isUTF8Language() const; - map getDiscoveredLanguageList(); + map getDiscoveredLanguageList(bool searchKeyIsLangName=false); pair getNavtiveNameFromLanguageName(string langName); }; diff --git a/source/glest_game/menu/menu_state_options.cpp b/source/glest_game/menu/menu_state_options.cpp index a607d63c..715b03cb 100644 --- a/source/glest_game/menu/menu_state_options.cpp +++ b/source/glest_game/menu/menu_state_options.cpp @@ -308,10 +308,10 @@ MenuStateOptions::MenuStateOptions(Program *program, MainMenu *mainMenu): // langResults.push_back(testLanguage); // } // } - languageList = Lang::getInstance().getDiscoveredLanguageList(); + languageList = Lang::getInstance().getDiscoveredLanguageList(true); for(map::iterator iterMap = languageList.begin(); iterMap != languageList.end(); ++iterMap) { - langResults.push_back(iterMap->second + "-" + iterMap->first); + langResults.push_back(iterMap->first + "-" + iterMap->second); } listBoxLang.setItems(langResults); @@ -1005,7 +1005,7 @@ void MenuStateOptions::saveConfig(){ map::iterator iterMap = languageList.begin(); std::advance(iterMap, listBoxLang.getSelectedItemIndex()); - config.setString("Lang", iterMap->second); + config.setString("Lang", iterMap->first); lang.loadStrings(config.getString("Lang")); int index= listBoxShadows.getSelectedItemIndex();