# HG changeset patch # User tron # Date 2005-08-01 01:12:21 # Node ID d808654285b2fbdf0619a592ff66aef52966b670 # Parent 0d0828bd5ebdb16d479e6380ed81c00b8683ccee (svn r2777) -Feature: When starting without a config file determine the language on basis of the current locale diff --git a/strings.c b/strings.c --- a/strings.c +++ b/strings.c @@ -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");