(svn r2777) -Feature: When starting without a config file determine the language on basis of the current locale

This commit is contained in:
tron 2005-08-01 01:12:21 +00:00
parent 49c399fa83
commit 0226e0799d
1 changed files with 23 additions and 2 deletions

View File

@ -1084,13 +1084,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++) {
@ -1110,10 +1129,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");