tags 502240 + patch thanks On Tue, Oct 14, 2008 at 09:39:36PM +0200, Frans Pop wrote: > When localechooser sets debconf/language to a set of languages (preferred > + fall-back languages, e.g. se_NO:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en for > Northern Sami), cdebconf should ensure that *all* relevant translations > are kept when translations are dropped with DEBCONF_DROP_TRANSLATIONS > set. Indeed, cdebconf was only keeping translation for the first language of the set. The attached patch should fix this, but as I am currently lacking a proper environment to do a full d-i test, it would be great if someone could verify that it really fixes the issue. Cheers, -- Jérémy Bobbio .''`. lunar@debian.org : :Ⓐ : # apt-get install anarchism `. `'` `-
diff --git a/packages/cdebconf/src/template.c b/packages/cdebconf/src/template.c index dd8240a..de93b65 100644 --- a/packages/cdebconf/src/template.c +++ b/packages/cdebconf/src/template.c @@ -466,7 +466,7 @@ void template_lset(struct template *t, const char *lang, char *orig_field; char *altlang; char *cp; - const char *curlang; + const char *curlang = NULL; if (strcasecmp(field, "tag") == 0) { @@ -530,24 +530,26 @@ void template_lset(struct template *t, const char *lang, strcmp(lang, "C") == 0 || strncmp(lang, "en", 2) == 0) curlang = lang; else { - const char *wantlang_full = getlanguage(); char *wantlang; char *p; + struct cache_list_lang *cl; - 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); + getlanguage(); + for (cl = cache_list_lang_ptr; cl != NULL; cl = cl->next) { + wantlang = strdup(cl->lang); + p = strpbrk(wantlang, "_.@"); + if (p) + *p = '\0'; + if (strncmp(lang, wantlang, strlen(wantlang)) == 0) { + curlang = lang; + break; + } free(wantlang); + } + if (curlang == NULL) { + INFO(INFO_VERBOSE, "Dropping %s/%s for %s", t->tag, field, lang); return; } - free(wantlang); } p = t->fields;
Attachment:
signature.asc
Description: Digital signature