]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
* fix memleak in non-threadded locale case
[citadel.git] / webcit / gettext.c
index 1a2346378d172c34eae994594c8d1977b1c3b70d..0246bfd10cc29af89e2fbd981ad048def4effac5 100644 (file)
@@ -21,6 +21,7 @@ const char *AvailLang[] = {
        "pt_BR",
        "hu_HU",
        "et_EE",
+       "ru_RU",
        ""
 };
 
@@ -294,20 +295,21 @@ void initialize_locales(void) {
                        (((i > 0) && (wc_locales[0] != NULL)) ? wc_locales[0] : Empty_Locale)
                );
                if (wc_locales[nLocalesLoaded] == NULL) {
-                       lprintf(1, "Error configuring locale for "LOCALEDIR"locale/%s: %s\n",
+                       lprintf(1, "locale for "LOCALEDIR"locale/%s: %s; disabled\n",
                                buf,
                                strerror(errno)
                        );
                }
                else {
-                       lprintf(3, "Configured available locale: %s\n", buf);
+                       lprintf(3, "Found locale: %s\n", buf);
                        AvailLangLoaded[nLocalesLoaded] = AvailLang[i];
                        nLocalesLoaded++;
                }
 #else
-               if (language != NULL) {
+               if ((language != NULL) && (strcmp(language, AvailLang[i]) == 0)) {
                        setenv("LANG", buf, 1);
                        AvailLangLoaded[nLocalesLoaded] = AvailLang[i];
+                       setlocale(LC_MESSAGES, AvailLang[i]);
                        nLocalesLoaded++;
                }
                else if (nLocalesLoaded == 0) {
@@ -358,8 +360,8 @@ ServerShutdownModule_GETTEXT
                        freelocale(wc_locales[i]);
        }
        free(wc_locales);
-       free(AvailLangLoaded);
 #endif
+       free(AvailLangLoaded);
 }
 
 #else  /* ENABLE_NLS */