(svn r9373) -Fix (r9271): the chosen language was not stored nor read properly in/from the cfg.
authorrubidium
Tue, 20 Mar 2007 14:01:21 +0000
changeset 6344 e5edb531b27e
parent 6343 76d17f784c13
child 6345 d04400b59b30
(svn r9373) -Fix (r9271): the chosen language was not stored nor read properly in/from the cfg.
src/strings.cpp
src/variables.h
--- a/src/strings.cpp	Tue Mar 20 13:47:00 2007 +0000
+++ b/src/strings.cpp	Tue Mar 20 14:01:21 2007 +0000
@@ -1116,7 +1116,8 @@
 	free(_langpack_offs);
 	_langpack_offs = langpack_offs;
 
-	ttd_strlcpy(_dynlang.curr_file, _dynlang.ent[lang_index].file, lengthof(_dynlang.curr_file));
+	const char *c_file = strrchr(_dynlang.ent[lang_index].file, PATHSEPCHAR) + 1;
+	ttd_strlcpy(_dynlang.curr_file, c_file, lengthof(_dynlang.curr_file));
 
 	_dynlang.curr = lang_index;
 	SetCurrentGrfLangID(_langpack->isocode);
@@ -1165,7 +1166,7 @@
 static bool UniqueLanguageFile(const Language *langs, uint max, const char *language)
 {
 	for (uint i = 0; i < max; i++) {
-		const char *f_name = strrchr(langs[i].file, PATHSEPCHAR);
+		const char *f_name = strrchr(langs[i].file, PATHSEPCHAR) + 1;
 		if (strcmp(f_name, language) == 0) return false; // duplicates
 	}
 
@@ -1268,7 +1269,8 @@
 		/* We are trying to find a default language. The priority is by
 		 * configuration file, local environment and last, if nothing found,
 		 * english. If def equals -1, we have not picked a default language */
-		if (strcmp(dl->ent[dl->num].file, dl->curr_file) == 0) chosen_language = dl->num;
+		const char *lang_file = strrchr(dl->ent[dl->num].file, PATHSEPCHAR) + 1;
+		if (strcmp(lang_file, dl->curr_file) == 0) chosen_language = dl->num;
 
 		if (chosen_language == -1) {
 			if (strcmp (hdr.isocode, "en_GB") == 0) en_GB_fallback    = dl->num;
--- a/src/variables.h	Tue Mar 20 13:47:00 2007 +0000
+++ b/src/variables.h	Tue Mar 20 14:01:21 2007 +0000
@@ -325,7 +325,7 @@
 struct DynamicLanguages {
 	int num;                         ///< Number of languages
 	int curr;                        ///< Currently selected language index
-	char curr_file[MAX_PATH];        ///< Currently selected language file (needed for saving the filename of the loaded language
+	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
 	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
 	Language ent[MAX_LANG];          ///< Information about the languages
 };