* use the new regular way to get the accept language header
authorWilfried Göesgens <willi@citadel.org>
Wed, 28 Oct 2009 22:32:40 +0000 (22:32 +0000)
committerWilfried Göesgens <willi@citadel.org>
Wed, 28 Oct 2009 22:32:40 +0000 (22:32 +0000)
webcit/gettext.c
webcit/setup.c
webcit/webcit.h

index ced6c7ed3e4aa4289f298957e510642bccca8939..9d50582f14b5ac4cad0f0f3b98586627fc57efe8 100644 (file)
@@ -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, NULL, CTX_NONE);
+       
+       RegisterHeaderHandler(HKEY("ACCEPT-LANGUAGE"), 
+                             Header_HandleAcceptLanguage);
+                             
+       RegisterNamespace("LANG:SELECT", 0, 0, 
+                         tmplput_offer_languages, NULL, CTX_NONE);
 }
 
 
@@ -425,15 +436,8 @@ 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.browser_language != NULL) {
+               httplang_to_locale(sess->Hdr->HR.browser_language, sess);
        }
 #endif
 }
index 91a979411d51f959aae51290dd3fcfa263f23a34..f93abb22dc25942e38ba1279fc01bf856e84bf60 100644 (file)
@@ -31,6 +31,7 @@ void RegisterNS(const char *NSName, long len,
                WCHandlerFunc HandlerFunc,
                WCPreevalFunc PreEvalFunc,
                int ContextRequired){}
+void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F){}
 pthread_key_t MyConKey;
 
 #ifdef ENABLE_NLS
index 94e6c8d363be56f4fd239a651776f5e205bbda45..745b152a312a26e247d069b084c15541fcbea042 100644 (file)
@@ -386,6 +386,7 @@ typedef struct _HdrRefs {
        StrBuf *ReqLine;
        StrBuf *http_host;                      /* HTTP Host: header */
        StrBuf *browser_host;
+       StrBuf *browser_language;
        StrBuf *user_agent;
        StrBuf *plainauth;
        StrBuf *dav_ifmatch;