- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 20 Mar 2010 17:02:12 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/action In directory hutz:/tmp/cvs-serv30249/src/org/w3c/unicorn/action Modified Files: Action.java Log Message: updated getLanguage function to use the new Language functions. + updated instantiations of Message objects to use ULocale objects instead of Strings Index: Action.java =================================================================== RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/action/Action.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Action.java 12 Oct 2009 15:25:24 -0000 1.19 +++ Action.java 20 Mar 2010 17:02:10 -0000 1.20 @@ -6,7 +6,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Locale; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -22,11 +21,13 @@ import org.w3c.unicorn.util.MessageList; import org.w3c.unicorn.util.Property; +import com.ibm.icu.util.ULocale; + public abstract class Action extends HttpServlet { private static final long serialVersionUID = -7503310240481494239L; - private static Log logger = LogFactory.getLog(Action.class); + protected static Log logger = LogFactory.getLog(Action.class); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) @@ -61,39 +62,34 @@ return StringEscapeUtils.escapeHtml(queryString); } - public String getLanguage(String langParameter, HttpServletRequest req, ArrayList<Message> messages) { - - String lang; - if (langParameter == null || !Framework.getLanguageProperties().containsKey(langParameter)) { - lang = Language.negociate(req.getLocales()); - } else - lang = langParameter; - - if (messages == null) - return lang; + public ULocale getLanguage(String langParameter, HttpServletRequest req, ArrayList<Message> messages) { + ULocale parameterLocale; + ULocale browserLocale; + ULocale matchedLocale; - if (langParameter != null && !Framework.getLanguageProperties().containsKey(langParameter)) { - if (Language.isISOLanguageCode(langParameter)) { - Locale locale = Language.getLocale(langParameter); - if (locale == null) { - logger.warn("Missing locale: " + langParameter + ". This locale should be installed on the system in order to translate Unicorn in this language."); - messages.add(new Message(Message.INFO, "$message_unavailable_requested_language", null, langParameter, "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + langParameter)); - } - else - messages.add(new Message(Message.INFO, "$message_unavailable_requested_language", null, locale.getDisplayLanguage(locale), "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + langParameter)); - } else { - messages.add(new Message(Message.INFO, "$message_invalid_requested_language", null, langParameter)); + if (langParameter != null) { + parameterLocale = Language.getAvailableLocale(langParameter); + matchedLocale = Language.getUILocale(langParameter); + if (messages != null && parameterLocale != matchedLocale) { + messages.add(new Message(Message.INFO, "$message_unavailable_requested_language", null, parameterLocale.getDisplayName(parameterLocale), "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + parameterLocale.getName())); + return matchedLocale; } - } else if (!Framework.getLanguageProperties().containsKey(req.getLocale().getLanguage()) && Property.get("SHOW_LANGUAGE_UNAVAILABLE_MESSAGE").equals("true")) - messages.add(new Message(Message.INFO, "$message_unavailable_language", null, req.getLocale().getDisplayLanguage(req.getLocale()), "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + req.getLocale().getLanguage())); - else if (!Language.isComplete(lang)) - messages.add(new Message(Message.INFO, "$message_incomplete_language", null, "", "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + lang)); + } else { + browserLocale = Language.getAvailableLocale(req.getHeader("Accept-Language")); + matchedLocale = Language.getUILocale(req.getHeader("Accept-Language")); + if (messages != null && browserLocale != matchedLocale) { + messages.add(new Message(Message.INFO, "$message_unavailable_language", null, browserLocale.getDisplayName(browserLocale), "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + browserLocale.getName())); + return matchedLocale; + } + } - return lang; + if (messages != null && !Language.isComplete(matchedLocale)) + messages.add(new Message(Message.INFO, "$message_incomplete_language", null, "", "?" + Property.get("UNICORN_PARAMETER_PREFIX") + "lang=" + matchedLocale.getName())); + + return matchedLocale; } public static String getTask(String taskParameter, MessageList messages) { - String task; if (taskParameter == null || !Framework.mapOfTask.containsKey(taskParameter)) task = Framework.mapOfTask.getDefaultTaskId(); @@ -104,10 +100,10 @@ return task; if (taskParameter == null) { - Message mess = new Message(Message.WARNING, "$message_no_task", null, Framework.getDefaultTask().getLongName(messages.getLang())); + Message mess = new Message(Message.WARNING, "$message_no_task", null, Framework.getDefaultTask().getLongName(messages.getLocale().getName())); messages.add(mess); } else if (!Framework.mapOfTask.containsKey(taskParameter)) { - Message mess = new Message(Message.WARNING, "$message_unknown_task", null, taskParameter, Framework.getDefaultTask().getLongName(messages.getLang())); + Message mess = new Message(Message.WARNING, "$message_unknown_task", null, taskParameter, Framework.getDefaultTask().getLongName(messages.getLocale().getName())); messages.add(mess); }
Received on Saturday, 20 March 2010 17:02:13 UTC