# HG changeset patch # User tron # Date 1122858741 0 # Node ID ea9008cb49ecf632056742fa5b94a4c0c2ea33df # Parent 5ac46ba8165504114f3d0645c0705f42e9da99a3 (svn r2777) -Feature: When starting without a config file determine the language on basis of the current locale diff -r 5ac46ba81655 -r ea9008cb49ec strings.c --- a/strings.c Mon Aug 01 00:17:11 2005 +0000 +++ b/strings.c Mon Aug 01 01:12:21 2005 +0000 @@ -1084,13 +1084,32 @@ 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 @@ 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");