- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 20 Mar 2010 17:06:07 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/action
In directory hutz:/tmp/cvs-serv30900/src/org/w3c/unicorn/action
Modified Files:
LanguageAction.java
Log Message:
updated with the new Language.class functions
+ cleanup
Index: LanguageAction.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/action/LanguageAction.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- LanguageAction.java 5 Mar 2010 15:13:18 -0000 1.22
+++ LanguageAction.java 20 Mar 2010 17:06:04 -0000 1.23
@@ -11,10 +11,7 @@
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
-import java.util.Properties;
-import java.util.TreeMap;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
@@ -22,7 +19,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.VelocityContext;
@@ -39,28 +35,18 @@
import org.w3c.unicorn.util.Mail;
import org.w3c.unicorn.util.UCNProperties;
-/**
- * Servlet implementation class LanguageServlet
- */
+import com.ibm.icu.util.ULocale;
+
public class LanguageAction extends Action {
private static final long serialVersionUID = 1L;
private static Log logger = LogFactory.getLog(LanguageAction.class);
- private static TreeMap<String, Properties> languageProperties;
-
- private static TreeMap<String, Properties> metadataProperties;
-
- private static TreeMap<String, String> defaultProperties = new TreeMap<String, String>();
-
- private static TreeMap<String, String> defaultMetadatas = new TreeMap<String, String>();
+ private static Hashtable<ULocale, UCNProperties> languageProperties = new Hashtable<ULocale, UCNProperties>();
- private static TreeMap<String, String> availableLocales;
+ private static Hashtable<ULocale, UCNProperties> metadataProperties = new Hashtable<ULocale, UCNProperties>();
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (!Framework.isUcnInitialized) {
@@ -74,28 +60,30 @@
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
- String defaultLang = Property.get("DEFAULT_LANGUAGE");
MessageList messages;
-
if (req.getAttribute("messages") != null && req.getAttribute("messages") instanceof MessageList)
messages = (MessageList) req.getAttribute("messages");
else
messages = new MessageList();
- VelocityContext velocityContext = new VelocityContext(Language.getContext(defaultLang));
+ VelocityContext velocityContext = new VelocityContext(Language.getContext(Language.getDefaultLocale()));
velocityContext.put("queryString", "./");
velocityContext.put("messages", messages);
velocityContext.put("baseUri", "./");
- velocityContext.put("availableLocales", availableLocales);
- velocityContext.put("native_lang", req.getLocale().getLanguage());
+ velocityContext.put("availableLocales", Language.getAvailableLocales());
+ velocityContext.put("native_lang", Language.getAvailableLocale(req.getHeader("Accept-Language")).getName());
velocityContext.put("translator_name", req.getAttribute("translator_name"));
velocityContext.put("translator_mail", req.getAttribute("translator_mail"));
velocityContext.put("translator_comments", req.getAttribute("translator_comments"));
+ velocityContext.put("uiLocales", Language.getUiLocales());
- Hashtable<String, String> languages = new Hashtable<String, String>();
- languages.put(defaultLang, defaultProperties.get("language"));
+ ArrayList<ULocale> languages = new ArrayList<ULocale>();
+ languages.add(Language.getDefaultLocale());
velocityContext.put("languages", languages);
+ UCNProperties defaultProperties = languageProperties.get(Language.getDefaultLocale());
+ UCNProperties defaultMetadatas = metadataProperties.get(Language.getDefaultLocale());
+
velocityContext.put("languageProps", languageProperties);
velocityContext.put("defaultProps", defaultProperties);
@@ -104,58 +92,52 @@
PrintWriter writer = resp.getWriter();
String langParameter = req.getParameter(Property.get("UNICORN_PARAMETER_PREFIX") + "lang");
+
if (langParameter == null || req.getAttribute("submitted") != null)
Templates.write("language.vm", velocityContext, writer);
else {
- if (Framework.getLanguageProperties().containsKey(langParameter)) {
- if (langParameter.equals(Property.get("DEFAULT_LANGUAGE"))) {
- messages.add(new Message(Message.INFO, "You cannot edit the default language"));
+ ULocale locale = Language.getAvailableLocale(langParameter);
+ ULocale requestedLocale = Language.getLocale(langParameter);
+ if (requestedLocale != locale) {
+ messages.add(new Message(Message.INFO, "The requested language \"" + requestedLocale.getDisplayName(requestedLocale) + "\" has been changed to the fallback language \"" +
+ locale.getDisplayName(locale) + "\" instead. If you think this is not right please make a request on <a href=\"mailto:public-qa-dev@w3.org\">our public mailing-list</a>."));
+ }
+ if (Language.getUiLocales().contains(locale)) {
+ if (locale.equals(Language.getDefaultLocale())) {
+ messages.add(new Message(Message.ERROR, "The language you are trying to edit is either the default language or is unknown. " +
+ "If it is the latter and you think we are wrong please make a request on <a href=\"mailto:public-qa-dev@w3.org\">our public mailing-list</a>."));
Templates.write("language.vm", velocityContext, writer);
writer.close(); return;
} else {
- int missings = defaultProperties.size() - languageProperties.get(langParameter).size() + defaultMetadatas.size() - metadataProperties.get(langParameter).size();
-
+ int missings = defaultProperties.size() + defaultMetadatas.size() - languageProperties.get(locale).size() - metadataProperties.get(locale).size();
if (missings > 0)
- messages.add(new Message(Message.INFO, "This translation lacks " + missings + " properties. Help us to improve it."));
+ messages.add(new Message(Message.INFO, "This translation lacks " + missings + " properties on " + (defaultProperties.size() + defaultMetadatas.size()) + ". Help us to improve it."));
else
messages.add(new Message(Message.INFO, "This translation is complete but you can help us to improve it if needed."));
}
if (req.getAttribute("submitted_props") != null) {
- Properties submittedProps = (Properties) req.getAttribute("submitted_props");
+ UCNProperties submittedProps = (UCNProperties) req.getAttribute("submitted_props");
velocityContext.put("prop", submittedProps);
} else
- velocityContext.put("prop", languageProperties.get(langParameter));
+ velocityContext.put("prop", languageProperties.get(locale));
if (req.getAttribute("submitted_metas") != null) {
- Properties submittedMetas = (Properties) req.getAttribute("submitted_metas");
+ UCNProperties submittedMetas = (UCNProperties) req.getAttribute("submitted_metas");
velocityContext.put("metadatas", submittedMetas);
} else
- velocityContext.put("metadatas", metadataProperties.get(langParameter));
- } else if (Language.isISOLanguageCode(langParameter)) {
- Locale locale = Language.getLocale(langParameter);
- if (locale == null) {
- messages.add(new Message(Message.WARNING, "The language code you requested is valid but the coresponding locale seems not to be installed on our system. Please make a request on public-qa-dev@w3.org."));
- Templates.write("language.vm", velocityContext, writer);
- writer.close(); return;
- } else {
- messages.add(new Message(Message.INFO, "Thank you for translating Unicorn in "
- + Language.getLocale(langParameter).getDisplayLanguage(Locale.ENGLISH)
- + ". You can submit a full or a partial translation."));
- velocityContext.put("prop", createProperties(langParameter));
- velocityContext.put("metadatas", createProperties(langParameter));
- }
+ velocityContext.put("metadatas", metadataProperties.get(locale));
} else {
- messages.add(new Message(Message.ERROR, "$message_invalid_requested_language", null, langParameter));
- Templates.write("language.vm", velocityContext, writer);
- writer.close(); return;
+ messages.add(new Message(Message.INFO, "Thank you for translating Unicorn in "
+ + locale.getDisplayName(Language.getDefaultLocale())
+ + ". You can submit a full or a partial translation."));
+ velocityContext.put("prop", new UCNProperties());
+ velocityContext.put("metadatas", new UCNProperties());
}
+ velocityContext.put("transLocale", locale);
Templates.write("language.form.vm", velocityContext, writer);
writer.close();
}
}
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (!Framework.isUcnInitialized) {
@@ -180,12 +162,12 @@
UCNProperties metaProps;
if (languageProperties.get(languageParameter) == null || metadataProperties.get(languageParameter) == null) {
if (languageProperties.get(languageParameter) == null) {
- langProps = createProperties(languageParameter);
+ langProps = new UCNProperties();
contextObjects.put("new_interface_translation", true);
} else
langProps = (UCNProperties) languageProperties.get(languageParameter).clone();
if (metadataProperties.get(languageParameter) == null) {
- metaProps = createProperties(languageParameter);
+ metaProps = new UCNProperties();
contextObjects.put("new_tasklist_translation", true);
} else
metaProps = (UCNProperties) metadataProperties.get(languageParameter).clone();
@@ -286,17 +268,12 @@
contextObjects.put("translator_name", req.getParameter("translator_name"));
contextObjects.put("translator_mail", req.getParameter("translator_mail"));
contextObjects.put("translator_comments", req.getParameter("translator_comments"));
- contextObjects.put("language", Language.getLocale(languageParameter).getDisplayLanguage(Locale.ENGLISH));
+ contextObjects.put("language", Language.getLocale(languageParameter).getDisplayLanguage(Language.getDefaultLocale()));
contextObjects.put("interfaceChangeLog", interfaceChangeLog);
contextObjects.put("tasklistChangeLog", tasklistChangeLog);
contextObjects.put("interfaceChanged", interfaceChanged);
contextObjects.put("tasklistChanged", tasklistChanged);
- langProps.remove("lang");
- langProps.remove("language");
- metaProps.remove("lang");
- metaProps.remove("language");
-
if (interfaceChanged) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(baos, "UTF-8");
@@ -350,77 +327,28 @@
}
}
- private UCNProperties createProperties(String langParameter) {
- UCNProperties props = new UCNProperties();
- Locale locale = Language.getLocale(langParameter);
- if (locale == null)
- return null;
- props.put("lang", locale.getLanguage());
- props.put("language", StringUtils.capitalize(locale.getDisplayLanguage(locale)));
- return props;
- }
-
- public static void addLanguageProperties(Properties props) {
- if (!props.getProperty("lang").equals(Property.get("DEFAULT_LANGUAGE")))
- languageProperties.put(props.getProperty("lang"), (Properties) props.clone());
+ public static void addLanguageProperties(ULocale locale, UCNProperties props) {
+ languageProperties.put(locale, (UCNProperties) props.clone());
}
- public static TreeMap<String, Properties> getLanguageProperties() {
+ public static Hashtable<ULocale, UCNProperties> getLanguageProperties() {
return languageProperties;
}
- public static void setLanguageProperties(TreeMap<String, Properties> languageProperties) {
+ public static void setLanguageProperties(Hashtable<ULocale, UCNProperties> languageProperties) {
LanguageAction.languageProperties = languageProperties;
}
-
- public static TreeMap<String, String> getDefaultProperties() {
- return defaultProperties;
- }
-
- public static void setDefaultProperties(TreeMap<String, String> defaultProperties) {
- LanguageAction.defaultProperties = defaultProperties;
- }
- public static void setDefaultProperties(Properties defaultProperties) {
- for (Object obj : defaultProperties.keySet()) {
- String key = (String) obj;
- LanguageAction.defaultProperties.put(key, defaultProperties.getProperty(key));
- }
- }
-
- public static TreeMap<String, String> getAvailableLocales() {
- return availableLocales;
- }
-
- public static void setAvailableLocales(TreeMap<String, String> availableLocales) {
- LanguageAction.availableLocales = availableLocales;
- }
-
- public static TreeMap<String, Properties> getMetadataProperties() {
+ public static Hashtable<ULocale, UCNProperties> getMetadataProperties() {
return metadataProperties;
}
- public static void setMetadataProperties(
- TreeMap<String, Properties> metadataProperties) {
+ public static void setMetadataProperties(Hashtable<ULocale, UCNProperties> metadataProperties) {
LanguageAction.metadataProperties = metadataProperties;
}
-
- public static TreeMap<String, String> getDefaultMetadatas() {
- return defaultMetadatas;
- }
-
- public static void setDefaultMetadatas(TreeMap<String, String> defaultMetadatas) {
- LanguageAction.defaultMetadatas = defaultMetadatas;
- }
-
- public static void setDefaultMetadatas(Properties defaultProperties) {
- for (Object obj : defaultProperties.keySet()) {
- String key = (String) obj;
- LanguageAction.defaultMetadatas.put(key, defaultProperties.getProperty(key));
- }
- }
- public static void addMetadatasProperties(String lang, Properties props) {
- metadataProperties.put(lang, (Properties) props.clone());
+ public static void addMetadatasProperties(ULocale locale, UCNProperties props) {
+ metadataProperties.put(locale, (UCNProperties) props.clone());
}
+
}
Received on Saturday, 20 March 2010 17:06:08 UTC