]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
* fix memleak in non-threadded locale case
[citadel.git] / webcit / gettext.c
index fd2d04c472ff085073272761106314640636cb97..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,13 +360,13 @@ ServerShutdownModule_GETTEXT
                        freelocale(wc_locales[i]);
        }
        free(wc_locales);
-       free(AvailLangLoaded);
 #endif
+       free(AvailLangLoaded);
 }
 
 #else  /* ENABLE_NLS */
-const char *AvailLang[NUM_LANGS] = {
-       "C"};
+const char *AvailLang[] = {
+       "C", ""};
 
 /** \brief dummy for non NLS enabled systems */
 void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)