- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 09 Oct 2009 06:48:08 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/action In directory hutz:/tmp/cvs-serv27757/src/org/w3c/unicorn/action Modified Files: LanguageAction.java Log Message: up Index: LanguageAction.java =================================================================== RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/action/LanguageAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- LanguageAction.java 7 Oct 2009 15:55:55 -0000 1.6 +++ LanguageAction.java 9 Oct 2009 06:48:06 -0000 1.7 @@ -1,9 +1,25 @@ package org.w3c.unicorn.action; +import java.io.CharArrayWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.io.Writer; +import java.net.URLDecoder; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +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; @@ -11,9 +27,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.velocity.VelocityContext; import org.w3c.unicorn.Framework; import org.w3c.unicorn.exceptions.UnicornException; +import org.w3c.unicorn.output.AttachmentOutputFormater; +import org.w3c.unicorn.output.OutputFormater; import org.w3c.unicorn.output.SimpleOutputFormater; import org.w3c.unicorn.util.Language; import org.w3c.unicorn.util.Message; @@ -75,13 +94,21 @@ if (langParameter == null) Templates.write("language.vm", velocityContext, writer); else { - if (Framework.getLanguageProperties().containsKey(langParameter)) + if (Framework.getLanguageProperties().containsKey(langParameter)) { + messages.add(new Message(Message.INFO, "This translation lacks " + (defaultProperties.size() - languageProperties.get(langParameter).size()) + " properties. Help us to improve it.")); velocityContext.put("prop", languageProperties.get(langParameter)); - else if (Language.isISOLanguageCode(langParameter)) { - 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)); + } 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)); + } } else { messages.add(new Message(Message.ERROR, "$message_invalid_requested_language", null, langParameter)); Templates.write("language.vm", velocityContext, writer); @@ -107,22 +134,85 @@ req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8"); + + //resp.getWriter().println(new String(req.getParameter("ja_universal_checker").getBytes("UTF-8"), "UTF-8")); + + /*File file = new File(Property.get("UPLOADED_FILES_REPOSITORY") + "/test.txt"); + file.createNewFile(); + FileOutputStream fileStream = new FileOutputStream(file); + OutputStreamWriter os = new OutputStreamWriter(fileStream, "UTF-8"); + os.write(req.getParameter("ja_universal_checker")); + os.close();*/ - if (req.getParameter("translation_language") == null) { + String languageParameter = req.getParameter("translation_language"); + Map<String, Object> contextObjects = new Hashtable<String, Object>(); + + if (languageParameter == null) { doGet(req, resp); return; } else { + Properties langProps = languageProperties.get(languageParameter); + if (langProps == null) { + langProps = createProperties(languageParameter); + if (langProps == null) { + doGet(req, resp); + return; + } + } + + StringBuilder changeLog = new StringBuilder(); + + for (Object obj : req.getParameterMap().keySet()) { + String paramKey = (String) obj; + String key; + if (!paramKey.startsWith(languageParameter + "_")) + continue; + else + key = paramKey.replace(languageParameter + "_", ""); + + if (!req.getParameter(paramKey).equals("") && !req.getParameter(paramKey).equals(langProps.getProperty(key))) { + changeLog.append(key + ":\n"); + changeLog.append("\t + " + req.getParameter(paramKey) + "\n"); + if (langProps.getProperty(key) != null) + changeLog.append("\t - " + langProps.getProperty(key) + "\n"); + + langProps.put(key, req.getParameter(paramKey)); + } + + + } + + + + //contextObjects.put("changeLog", changeLog); + + //Writer os = new CharArrayWriter(); + + + //langProps.store(new OutputStreamWriter(new ByteArrayOutputStream(), "UTF-8"), ""); + + //contextObjects.put("properties", os.toString()); + MessageList messages = new MessageList(); - messages.add(new Message(Message.INFO, "Thank you for your submition.")); + messages.add(new Message(Message.INFO, "Thank you for your submission.")); req.setAttribute("messages", messages); + if (req.getParameterMap().containsKey("ucn_lang")) + req.getParameterMap().remove("ucn_lang"); doGet(req, resp); // From now on the response is committed, careful - String[] recipients = {"thomas.gambet@gmail.com"}; + String[] recipients = {"thomas.gambet@orange.fr"}; + + OutputFormater mainOutputFormater = new SimpleOutputFormater("language.mail", Property.get("DEFAULT_LANGUAGE"), "text/plain"); + OutputFormater attachmentOutputFormater = new AttachmentOutputFormater("language.properties", Property.get("DEFAULT_LANGUAGE"), "text/plain", "test.txt"); + + List<OutputFormater> outputFormaters = new ArrayList<OutputFormater>(); + outputFormaters.add(mainOutputFormater); + //outputFormaters.add(attachmentOutputFormater); Mail mailer = new Mail(); try { - mailer.sendMail(recipients, "test subject", new SimpleOutputFormater("text", Property.get("DEFAULT_LANGUAGE")), null); + mailer.sendMail(recipients, "test subject", outputFormaters, contextObjects); } catch (UnicornException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -136,34 +226,12 @@ private Properties createProperties(String langParameter) { Properties props = new Properties(); Locale locale = Language.getLocale(langParameter); + if (locale == null) + return null; props.put("lang", locale.getLanguage()); - props.put("language", locale.getDisplayLanguage(Locale.ENGLISH)); + props.put("language", locale.getDisplayLanguage(locale)); return props; } - - private void checkParameters(HttpServletRequest req) { - - /*String languageParameter = req.getParameter("translation_language"); - - for (Object obj : req.getParameterMap().keySet()) { - - String paramKey = (String) obj; - String key; - - if (!paramKey.startsWith(languageParameter + "_")) - continue; - else - key = paramKey.replace(languageParameter + "_", ""); - - Properties langProps = languageProperties.get(languageParameter); - - if (langProps.getProperty(key) == null || !req.getParameter(paramKey).equals(langProps.getProperty(key))) { - - } - - }*/ - - } public static void addLanguageProperties(Properties props) { languageProperties.put(props.getProperty("lang"), (Properties) props.clone());
Received on Friday, 9 October 2009 06:48:13 UTC