]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
Revert "Simplified tmplput_offer_languages() behavior on non-locale systems"
[citadel.git] / webcit / gettext.c
index d8b48f1b123ec68ead662c7c7d6544a2f7f024de..25474e810c5b8f68eb2f521cdc90de0be6dbb3ad 100644 (file)
 #define SEARCH_LANG 20         /* how many langs should we parse? */
 
 #ifdef ENABLE_NLS
-#include "language_list.h"
+/* 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",
+       ""
+};
 
 const char **AvailLangLoaded;
 long nLocalesLoaded = 0;
@@ -183,12 +209,25 @@ 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],
@@ -197,9 +236,6 @@ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
        }
 
        wc_printf("</select>\n");
-#else
-       wc_printf("%s", (getenv("LANG") ? getenv("LANG") : "C"));
-#endif
 }
 
 /*
@@ -283,10 +319,15 @@ void initialize_locales(void) {
                wc_locales[nLocalesLoaded] = newlocale(
                        (LC_MESSAGES_MASK|LC_TIME_MASK),
                        AvailLang[i],
-                       NULL
+                       wc_locales[0]
                );
                if (wc_locales[nLocalesLoaded] == NULL) {
-                       syslog(1, "locale for %s disabled: %s", AvailLang[i], strerror(errno));
+                       syslog(1, "locale for %s disabled: %s (domain: %s, path: %s)",
+                               AvailLang[i],
+                               strerror(errno),
+                               textdomain(NULL),
+                               bindtextdomain(textdomain(NULL), NULL)
+                       );
                }
                else {
                        syslog(3, "Found locale: %s", AvailLang[i]);