open posting internationalizable again...
authorzapata <zapata>
Sun, 16 Mar 2003 13:10:45 +0000 (13:10 +0000)
committerzapata <zapata>
Sun, 16 Mar 2003 13:10:45 +0000 (13:10 +0000)
source/OpenMir.java

index 066e183..5600288 100755 (executable)
@@ -57,7 +57,7 @@ import freemarker.template.SimpleScalar;
  *  OpenMir.java - main servlet for open posting and comment feature to articles
  *
  *  @author RK 1999-2001, the mir-coders group
- *  @version $Id: OpenMir.java,v 1.28 2003/03/15 02:07:35 idfx Exp $
+ *  @version $Id: OpenMir.java,v 1.29 2003/03/16 13:10:45 zapata Exp $
  *
  */
 
@@ -80,17 +80,7 @@ public class OpenMir extends AbstractServlet {
 
     session = aRequest.getSession();
 
-    if(session.getAttribute("Language")==null){
-      if (aRequest.getParameter("language")!=null) {
-        setLanguage(session, aRequest.getParameter("language"));
-      }
-      else {
-        setLanguage(session, getAcceptLanguage(aRequest));
-      }
-    }
-
-    if (session.getAttribute("language")!=null)
-      setLocale(session, new Locale((String) session.getAttribute("language"), "") );
+    checkLanguage(session, aRequest);
 
     //make sure client browsers don't cache anything
     setNoCaching(aResponse);
@@ -157,5 +147,21 @@ public class OpenMir extends AbstractServlet {
     return "OpenMir "+configuration.getString("Mir.Version");
   }
 
+  private void checkLanguage(HttpSession session, HttpServletRequest aRequest) {
+    // a lang parameter always sets the language
+    String lang = aRequest.getParameter("language");
+
+    if (lang != null) {
+      logger.info("selected language " + lang + " overrides accept-language");
+      setLanguage(session, lang);
+      setLocale(session, new Locale(lang, ""));
+    }
+    // otherwise store language from accept header in session
+    else if (session.getAttribute("Language") == null) {
+      logger.info("accept-language is " + aRequest.getLocale().getLanguage());
+      setLanguage(session, aRequest.getLocale().getLanguage());
+      setLocale(session, aRequest.getLocale());
+    }
+  }
 }