summaryrefslogtreecommitdiff
path: root/strings.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2005-07-19 06:47:07 +0000
committertron <tron@openttd.org>2005-07-19 06:47:07 +0000
commitbce6f5c0a529469e9576cc30e56dc881d153fd2b (patch)
tree93d6951cb75032c0fc278defaf8dc3e7926aa050 /strings.c
parent3428e4e4b0793a4c697f7a06fc7b8b87fd1a9870 (diff)
downloadopenttd-bce6f5c0a529469e9576cc30e56dc881d153fd2b.tar.xz
(svn r2631) Move screenshot related variables from variables.h to screenshot.[ch]
Diffstat (limited to 'strings.c')
-rw-r--r--strings.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/strings.c b/strings.c
index dba6f79f4..86b47824a 100644
--- a/strings.c
+++ b/strings.c
@@ -1078,13 +1078,32 @@ void InitializeLanguagePacks(void)
int n;
int m;
int def;
+ int fallback;
LanguagePack hdr;
FILE *in;
char *files[32];
+ uint j;
+
+ char lang[] = "en";
+ static const char* env[] = {
+ "LANGUAGE",
+ "LC_ALL",
+ "LC_MESSAGES",
+ "LANG"
+ };
+
+ for (j = 0; j < lengthof(env); j++) {
+ const char* envlang = getenv(env[j]);
+ if (envlang != NULL) {
+ snprintf(lang, lengthof(lang), "%.2s", envlang);
+ break;
+ }
+ }
n = GetLanguageList(files, lengthof(files));
- def = 0; // default language file
+ def = -1;
+ fallback = 0;
// go through the language files and make sure that they are valid.
for (i = m = 0; i != n; i++) {
@@ -1104,10 +1123,12 @@ void InitializeLanguagePacks(void)
dl->ent[m].file = files[i];
dl->ent[m].name = strdup(hdr.name);
- if (strcmp(hdr.name, "English") == 0) def = m;
+ if (strcmp(hdr.name, "English") == 0) fallback = m;
+ if (strcmp(hdr.isocode, lang) == 0) def = m;
m++;
}
+ if (def == -1) def = fallback;
if (m == 0)
error(n == 0 ? "No available language packs" : "Invalid version of language packs");