Hi all,
I have Japanese(L10n) Jetspeed project at sourceforge.jp in Japan.
The target of this project is to add a feature/fix for Japanese environment.
DefaultJetspeedParameterParser and JetspeedTemplatePage patch were created
as I18n fix in the project. I describe it below.
Jetspeed 1.4b3 has 2 issue:
1) The page encoding is specified by content.defaultencoding in
JetspeedResources.properties.
Applying the JetspeedTemplatePage patch, Jetspeed uses the encoding by the
following
priorities.
1. character-set parameter in media.xreg
2. content.defaultencoding in JetspeedResources.properties
3. UTF-8
Using this encoding order, Jetspeed uses UTF-8 when media-type is text/html.
Therefore Jetspeed can display a multibyte character(ex. Japanese) correctly in the
default environment. (For Jetspeed 1.4b3, user must change content.defaultencoding
in order to display the multibyte character correctly.)
2) The form data is not parsed correctly.
For example, in the HelloVelocity portlet, a multibyte character is displayed as
"?" or garbage if user submits it. So the portlet developer needs to add a code
for handling the correct encoding into the portlet. The cause is to parse the form
data by 8859_1. Therefore, using DefaultJetspeedParameterParser, the form data
is parsed by correct encoding.(The portlet developer does not need to add the
special
code) DefaultJetspeedParameterParser applies the following priorities when
determining
a encoding information.
1. the character encoding used in the body of the request.
2. character-set parameter in media.xreg
3. content.defaultencoding in JetspeedResources.properties
4. US-ASCII
In many cases, it will use the character-set parameter in media.xreg.
Please let me know if you have any comment about DefaultJetspeedParameterParser and
JetspeedTemplatePage patch.
I think that Jetspeed has the I18n issues, such as #14464, #13286(Please fix this
bugzilla bugs.
I attached info for fixing it.) and the L10n properties file(since all messages are
not picked up
to the properties file, I cannot localize Jetspeed...).
Japanese Jetspeed project would like to contribute to Jetspeed from the point of view
of I18n and L10n.
Best regards,
shinsuke
--
Jetspeed for Japanese (sorry, Japanese only...)
http://sourceforge.jp/projects/jetspeed-japan/
[EMAIL PROTECTED] wrote:
> taylor 2003/02/12 21:56:02
>
> Modified: src/java/org/apache/jetspeed/modules/pages
> JetspeedTemplatePage.java
> Added: src/java/org/apache/jetspeed/util/parser
> DefaultJetspeedParameterParser.java
> Log:
> Added new Parameter Parser for i18n support
> Patch to JetspeedTemplatePage for i18n support
>
> Revision Changes Path
> 1.20 +16 -3
>jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java
>
> Index: JetspeedTemplatePage.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java,v
> retrieving revision 1.19
> retrieving revision 1.20
> diff -u -r1.19 -r1.20
> --- JetspeedTemplatePage.java 11 Nov 2002 13:01:17 -0000 1.19
> +++ JetspeedTemplatePage.java 13 Feb 2003 05:56:00 -0000 1.20
> @@ -68,6 +68,9 @@
> import org.apache.turbine.services.*;
>
> // Jetspeed Classes
> +import org.apache.jetspeed.util.MimeType;
> +import org.apache.jetspeed.om.registry.MediaTypeEntry;
> +import org.apache.jetspeed.services.Registry;
> import org.apache.jetspeed.capability.CapabilityMap;
> import org.apache.jetspeed.services.TemplateLocator;
> import org.apache.jetspeed.services.rundata.JetspeedRunData;
> @@ -156,8 +159,18 @@
>
> //Set the ContentType of the page
> CapabilityMap cm = ((JetspeedRunData)data).getCapability();
> - data.setContentType( cm.getPreferredType().getContentType() );
> - data.setCharSet(
>JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"utf-8") );
> + MimeType mime = cm.getPreferredType();
> + String characterSet =
>JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"utf-8");
> + data.setContentType( mime.getContentType());
> + if ( mime != null )
> + {
> + MediaTypeEntry media =
>(MediaTypeEntry)Registry.getEntry(Registry.MEDIA_TYPE, mime.getCode());
> + if ( media != null && media.getCharacterSet() != null)
> + {
> + characterSet = media.getCharacterSet();
> + }
> + }
> + data.setCharSet( characterSet );
>
> if (Log.getLogger().isDebugEnabled())
> {
>
>
>
> 1.1
>jakarta-jetspeed/src/java/org/apache/jetspeed/util/parser/DefaultJetspeedParameterParser.java
>
> Index: DefaultJetspeedParameterParser.java
> ===================================================================
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in
> * the documentation and/or other materials provided with the
> * distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> * if any, must include the following acknowledgment:
> * "This product includes software developed by the
> * Apache Software Foundation (http://www.apache.org/)."
> * Alternately, this acknowledgment may appear in the software itself,
> * if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> * "Apache Jetspeed" must not be used to endorse or promote products
> * derived from this software without prior written permission. For
> * written permission, please contact [EMAIL PROTECTED]
> *
> * 5. Products derived from this software may not be called "Apache" or
> * "Apache Jetspeed", nor may "Apache" appear in their name, without
> * prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation. For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
> package org.apache.jetspeed.util.parser;
>
> import javax.servlet.http.HttpServletRequest;
>
> import org.apache.turbine.util.Log;
> import org.apache.turbine.util.parser.DefaultParameterParser;
>
> import org.apache.jetspeed.om.registry.MediaTypeEntry;
> import org.apache.jetspeed.services.Registry;
> import org.apache.jetspeed.capability.CapabilityMap;
> import org.apache.jetspeed.capability.CapabilityMapFactory;
> import org.apache.jetspeed.services.resources.JetspeedResources;
>
> /**
> * DefaultJetspeedParameterParser is a utility object to handle parsing and
> * retrieving the data passed via the GET/POST/PATH_INFO arguments.
> *
> * <p>NOTE: The name= portion of a name=value pair may be converted
> * to lowercase or uppercase when the object is initialized and when
> * new data is added. This behaviour is determined by the url.case.folding
> * property in TurbineResources.properties. Adding a name/value pair may
> * overwrite existing name=value pairs if the names match:
> *
> * <pre>
> * ParameterParser pp = data.getParameters();
> * pp.add("ERROR",1);
> * pp.add("eRrOr",2);
> * int result = pp.getInt("ERROR");
> * </pre>
> *
> * In the above example, result is 2.
> *
> * @author <a href="mailto:[EMAIL PROTECTED]">Shinsuke SUGAYA</a>
> */
> public class DefaultJetspeedParameterParser extends DefaultParameterParser {
>
> /**
> * Sets the servlet request to be parser. This requires a
> * valid HttpServletRequest object. It will attempt to parse out
> * the GET/POST/PATH_INFO data and store the data into a Hashtable.
> * There are convenience methods for retrieving the data as a
> * number of different datatypes. The PATH_INFO data must be a
> * URLEncoded() string.
> *
> * <p>To add name/value pairs to this set of parameters, use the
> * <code>add()</code> methods.
> *
> * @param req An HttpServletRequest.
> */
> public void setRequest(HttpServletRequest req)
> {
> super.setRequest(req);
>
> String enc =
>JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"US-ASCII");
> CapabilityMap cm = CapabilityMapFactory.getCapabilityMap(
>req.getHeader("User-Agent") );
> String mimeCode = cm.getPreferredType().getCode();
> if ( mimeCode != null )
> {
> MediaTypeEntry media =
>(MediaTypeEntry)Registry.getEntry(Registry.MEDIA_TYPE, mimeCode);
> if ( media != null && media.getCharacterSet() != null)
> {
> enc = media.getCharacterSet();
> }
>
> }
> if ( req.getCharacterEncoding() != null )
> {
> enc = req.getCharacterEncoding();
> }
> setCharacterEncoding( enc );
> }
>
> /**
> * Return a String for the given name. If the name does not
> * exist, return null.
> *
> * @param name A String with the name.
> * @return A String.
> */
> public String getString(String name)
> {
> String str = super.getString(name);
> if (str == null) return null;
>
> try
> {
> return new String(str.getBytes("8859_1"), getCharacterEncoding());
> }
> catch (Exception e)
> {
> Log.warn("DefaultJetspeedParameterParser: Exception: " + e.toString());
> return str;
> }
>
> }
>
> }
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]