]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
calling newlocale() with wc_locales[0] as the third argument causes a segfault; chang...
[citadel.git] / webcit / gettext.c
index 25474e810c5b8f68eb2f521cdc90de0be6dbb3ad..d8b48f1b123ec68ead662c7c7d6544a2f7f024de 100644 (file)
 #define SEARCH_LANG 20         /* how many langs should we parse? */
 
 #ifdef ENABLE_NLS
-/* actual supported locales */
-const char *AvailLang[] = {
-       "C",
-       "bg_BG",
-       "cs_CZ",
-       "en_US",
-       "da_DK",
-       "de_DE",
-       "el_GR",
-       "en_GB",
-       "es_ES",
-       "et_EE",
-       "fi_FI",
-       "fr_FR",
-       "hu_HU",
-       "it_IT",
-       "nl_NL",
-       "pt_BR",
-       "ru_RU",
-       "zh_CN",
-       "he_IL",
-       "kk_KK",
-       "ro_RO",
-       "sl_SL",
-       "tr_TR",
-       ""
-};
+#include "language_list.h"
 
 const char **AvailLangLoaded;
 long nLocalesLoaded = 0;
@@ -209,25 +183,12 @@ void httplang_to_locale(StrBuf *LocaleString, wcsession *sess)
  */
 void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
 {
+#ifdef HAVE_USELOCALE
        int i;
-#ifndef HAVE_USELOCALE
-       char *Lang = getenv("LANG");
-       
-       if (Lang == NULL)
-               Lang = "C";
-#endif
-
-       if (nLocalesLoaded == 1) {
-               wc_printf("<p>%s</p>", AvailLangLoaded[0]);
-               return;
-       }
 
        wc_printf("<select name=\"language\" id=\"lname\" size=\"1\" onChange=\"switch_to_lang($('lname').value);\">\n");
 
        for (i=0; i < nLocalesLoaded; ++i) {
-#ifndef HAVE_USELOCALE
-               if (strcmp(AvailLangLoaded[i], Lang) == 0)
-#endif
                wc_printf("<option %s value=%s>%s</option>\n",
                        ((WC->selected_language == i) ? "selected" : ""),
                        AvailLangLoaded[i],
@@ -236,6 +197,9 @@ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
        }
 
        wc_printf("</select>\n");
+#else
+       wc_printf("%s", (getenv("LANG") ? getenv("LANG") : "C"));
+#endif
 }
 
 /*
@@ -319,15 +283,10 @@ void initialize_locales(void) {
                wc_locales[nLocalesLoaded] = newlocale(
                        (LC_MESSAGES_MASK|LC_TIME_MASK),
                        AvailLang[i],
-                       wc_locales[0]
+                       NULL
                );
                if (wc_locales[nLocalesLoaded] == NULL) {
-                       syslog(1, "locale for %s disabled: %s (domain: %s, path: %s)",
-                               AvailLang[i],
-                               strerror(errno),
-                               textdomain(NULL),
-                               bindtextdomain(textdomain(NULL), NULL)
-                       );
+                       syslog(1, "locale for %s disabled: %s", AvailLang[i], strerror(errno));
                }
                else {
                        syslog(3, "Found locale: %s", AvailLang[i]);