strings.c
changeset 4505 f87e0c7fdda1
parent 4503 70d61e331efa
child 4602 36e779efee9a
--- a/strings.c	Fri Sep 01 02:56:02 2006 +0000
+++ b/strings.c	Fri Sep 01 08:06:11 2006 +0000
@@ -1217,18 +1217,20 @@
 	int n;
 	int m;
 	int def;
+	int def2;
 	int fallback;
 	LanguagePack hdr;
 	FILE *in;
 	char *files[32];
+	const char* lang;
 
-	char lang[] = "en";
-	const char *env = GetCurrentLocale("LC_MESSAGES");
+	lang = GetCurrentLocale("LC_MESSAGES");
+	if (lang == NULL) lang = "en_GB";
 
-	if (env != NULL) snprintf(lang, lengthof(lang), "%.2s", env);
 	n = GetLanguageList(files, lengthof(files));
 
 	def = -1;
+	def2 = -1;
 	fallback = 0;
 
 	// go through the language files and make sure that they are valid.
@@ -1249,12 +1251,13 @@
 		dl->ent[m].file = files[i];
 		dl->ent[m].name = strdup(hdr.name);
 
-		if (strcmp(hdr.name, "English") == 0) fallback = m;
-		if (strncmp(hdr.isocode, lang, 2) == 0) def = m;
+		if (strcmp(hdr.isocode, "en_GB")  == 0) fallback = m;
+		if (strncmp(hdr.isocode, lang, 2) == 0) def2 = m;
+		if (strncmp(hdr.isocode, lang, 5) == 0) def = m;
 
 		m++;
 	}
-	if (def == -1) def = fallback;
+	if (def == -1) def = (def2 != -1 ? def2 : fallback);
 
 	if (m == 0)
 		error(n == 0 ? "No available language packs" : "Invalid version of language packs");