| 1 16 package org.outerj.daisy.frontend; 17 18 import org.apache.cocoon.acting.Action; 19 import org.apache.cocoon.environment.*; 20 import org.apache.cocoon.i18n.I18nUtils; 21 import org.apache.avalon.framework.thread.ThreadSafe; 22 import org.apache.avalon.framework.parameters.Parameters; 23 24 import java.util.Map ; 25 import java.util.Locale ; 26 27 39 public class LocaleAction implements Action, ThreadSafe { 40 41 public Map act(Redirector redirector, SourceResolver sourceResolver, Map objectModel, String s, Parameters parameters) throws Exception { 42 Request request = ObjectModelHelper.getRequest(objectModel); 43 Session session = request.getSession(false); 44 45 Locale locale = session != null ? (Locale )session.getAttribute("locale") : null; 46 String localeParam = request.getParameter("locale"); 47 if (localeParam != null) { 48 locale = I18nUtils.parseLocale(localeParam); 51 } else if (locale == null) { 52 Cookie[] cookies = request.getCookies(); 53 if (cookies != null) { 54 for (int i = 0; i < cookies.length; i++) { 55 if (cookies[i].getName().equals("locale")) { 56 String value = cookies[i].getValue(); 57 if (value != null) { 58 locale = I18nUtils.parseLocale(value); 59 } 60 break; 61 } 62 } 63 } 64 65 if (locale == null) { 67 locale = I18nUtils.parseLocale(parameters.getParameter("default")); 68 } 69 70 if (session != null) 72 session.setAttribute("locale", locale); 73 } 74 75 WikiHelper.changeLocale(locale, request); 76 return null; 77 } 78 } 79 | Popular Tags |