summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-03-20 14:01:21 +0000
committerrubidium <rubidium@openttd.org>2007-03-20 14:01:21 +0000
commit154c7c4bcfa6a82ee5ddbcf849cfe8107c15eb3a (patch)
treea511701d4a84dac3d56a45d745eac2bf67ec06d7
parent48f2bf9bb1bd7b8859d3527c6c205386471cc4e4 (diff)
downloadopenttd-154c7c4bcfa6a82ee5ddbcf849cfe8107c15eb3a.tar.xz
(svn r9373) -Fix (r9271): the chosen language was not stored nor read properly in/from the cfg.
-rw-r--r--src/strings.cpp8
-rw-r--r--src/variables.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/strings.cpp b/src/strings.cpp
index fd4b5b0f8..b855b7baa 100644
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -1116,7 +1116,8 @@ bool ReadLanguagePack(int lang_index)
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 int CDECL LanguageCompareFunc(const void *a, const void *b)
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 @@ void InitializeLanguagePacks()
/* 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;
diff --git a/src/variables.h b/src/variables.h
index 7f8771a87..c6c745974 100644
--- a/src/variables.h
+++ b/src/variables.h
@@ -325,7 +325,7 @@ struct Language {
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
};