]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
* just calculate the language for non-static requests; else we will run this useless...
[citadel.git] / webcit / gettext.c
index 0246bfd10cc29af89e2fbd981ad048def4effac5..e38d269ac25bb35c76ce31ec798bdf9c60a2f928 100644 (file)
@@ -180,24 +180,24 @@ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
 
 
        if (nLocalesLoaded == 1) {
-               wprintf("<p>%s</p>", AvailLangLoaded[0]);
+               wc_printf("<p>%s</p>", AvailLangLoaded[0]);
                return;
        }
 
-       wprintf("<select name=\"language\" id=\"lname\" size=\"1\">\n");
+       wc_printf("<select name=\"language\" id=\"lname\" size=\"1\">\n");
 
        for (i=0; i < nLocalesLoaded; ++i) {
 #ifndef HAVE_USELOCALE
                if (strcmp(AvailLangLoaded[i], Lang) == 0)
 #endif
-               wprintf("<option %s value=%s>%s</option>\n",
+               wc_printf("<option %s value=%s>%s</option>\n",
                        ((WC->selected_language == i) ? "selected" : ""),
                        AvailLangLoaded[i],
                        AvailLangLoaded[i]
                );
        }
 
-       wprintf("</select>\n");
+       wc_printf("</select>\n");
 }
 
 /**
@@ -371,7 +371,7 @@ const char *AvailLang[] = {
 /** \brief dummy for non NLS enabled systems */
 void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP)
 {
-       wprintf("English (US)");
+       wc_printf("English (US)");
 }
 
 /** \brief dummy for non NLS enabled systems */
@@ -411,12 +411,23 @@ const char *get_selected_language(void) {
 #endif
 }
 
+
+void Header_HandleAcceptLanguage(StrBuf *Line, ParsedHttpHdrs *hdr)
+{
+       hdr->HR.browser_language = Line;
+}
+
 void 
 InitModule_GETTEXT
 (void)
 {
        initialize_locales();
-       RegisterNamespace("LANG:SELECT", 0, 0, tmplput_offer_languages, CTX_NONE);
+       
+       RegisterHeaderHandler(HKEY("ACCEPT-LANGUAGE"), 
+                             Header_HandleAcceptLanguage);
+                             
+       RegisterNamespace("LANG:SELECT", 0, 0, 
+                         tmplput_offer_languages, NULL, CTX_NONE);
 }
 
 
@@ -425,15 +436,9 @@ SessionNewModule_GETTEXT
 (wcsession *sess)
 {
 #ifdef ENABLE_NLS
-       OneHttpHeader *vLine = NULL;
-
-       if (    (sess->Hdr->HTTPHeaders != NULL)
-               && GetHash(sess->Hdr->HTTPHeaders, HKEY("ACCEPT-LANGUAGE"), (void *)&vLine)
-               && (vLine != NULL)
-               && (vLine->Val != NULL)
-       ) {
-               StrBuf *accept_language = vLine->Val;
-               httplang_to_locale(accept_language, sess);
+       if (!sess->Hdr->HR.Static && 
+           (sess->Hdr->HR.browser_language != NULL)) {
+               httplang_to_locale(sess->Hdr->HR.browser_language, sess);
        }
 #endif
 }