[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#502244: cdebconf: fall-back languages not working; mechanism to drop translations broken?



Please try the following patch.

Ben.

diff -Nru cdebconf-0.137/src/template.c cdebconf-0.137+nmu1/src/template.c
--- cdebconf-0.137/src/template.c	2008-09-14 15:28:22.000000000 +0100
+++ cdebconf-0.137+nmu1/src/template.c	2008-11-29 18:32:20.000000000 +0000
@@ -530,24 +530,20 @@
              strcmp(lang, "C") == 0 || strncmp(lang, "en", 2) == 0)
         curlang = lang;
     else {
-        const char *wantlang_full = getlanguage();
-        char *wantlang;
-        char *p;
-
-        if (!wantlang_full)
-            wantlang_full = "C";
-        wantlang = strdup(wantlang_full);
-        p = strpbrk(wantlang, "_.@");
-        if (p)
-            *p = '\0';
-        if (strncmp(lang, wantlang, strlen(wantlang)) == 0)
-            curlang = lang;
-        else {
-            INFO(INFO_VERBOSE, "Dropping %s/%s for %s (wantlang=%s)", t->tag, field, lang, wantlang);
-            free(wantlang);
-            return;
-        }
-        free(wantlang);
+	struct cache_list_lang *cl;
+
+	/* Could this language possibly be selected by template_lget()? */
+	getlanguage();
+	for (cl = cache_list_lang_ptr; cl != NULL; cl = cl->next)
+	    if (strcmp(cl->lang, lang) == 0 ||
+		(strlen(cl->lang) == 2 && strncmp(cl->lang, lang, 2) == 0))
+		break;
+	if (cl == NULL) {
+	    INFO(INFO_VERBOSE, "Dropping %s/%s for %s (cache_cur_lang=%s)", t->tag, field, lang, cache_cur_lang);
+	    return;
+	}
+
+	curlang = lang;
     }
 
     p = t->fields;
--- END ---

-- 
Ben Hutchings
Any smoothly functioning technology is indistinguishable from a rigged demo.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: