struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amine BADID <amineba...@yahoo.fr>
Subject Re: Problem with internationalisation of Struts2
Date Sun, 24 Aug 2014 18:20:20 GMT
Hi Dave.
I use two files for internationalisation and I use Struts2.
First I've no problem but after I've added just a line in the french file "global_fr.properties",
I can not display any value because this line contains a mistake which I've explained in the
previous message :
> I've found the problem.
> It was about an accentuated word. I've forget to add a number to the unicode word like
'\u00e9'.
> The class TextProviderHelper do not give the good message !
> Because it lacks only a letter in the document global_fr.properties, TextProviderHelper
do not see it !
The class org.apache.struts2.util.TextProviderHelper does not give the good message.
And it does not see the french file if there is only one mistake on one line !!!
Thank you.



Le Dimanche 24 août 2014 19h58, Dave Newton <davelnewton@gmail.com> a écrit :
 


Tell us how you really feel.

On Aug 24, 2014 1:04 PM, "Lukasz Lenart" <lukaszlenart@apache.org> wrote:

> 2014-08-24 13:42 GMT+02:00 Amine BADID <aminebadid@yahoo.fr>:
> > Hi Lukasz.
> > Thank you.
> > I've found the problem.
> > It was about an accentuated word. I've forget to add a number to the
> unicode word like '\u00e9'.
> > The class TextProviderHelper do not give the good message !
> > Because it lacks only a letter in the document global_fr.properties,
> TextProviderHelper do not see it !
>
> I rather suggest you should read how Resource bundles work in Java!!!!
> http://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html
>
> > I hope in the futurthat Struts team will modify the message.
>
> Sure thing, we are going to release our own JVM version!!!!!
>
> >
> > Here is the source code of this class !!!! :
> > /* * $Id$ * * Licensed to the Apache Software Foundation (ASF) under one
> * or more contributor license agreements.  See the NOTICE file *
> distributed with this work for additional information * regarding copyright
> ownership.  The ASF licenses this file * to you under the Apache License,
> Version 2.0 (the * "License"); you may not use this file except in
> compliance * with the License.  You may obtain a copy of the License at *
> *  http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by
> applicable law or agreed to in writing, * software distributed under the
> License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR
> CONDITIONS OF ANY * KIND, either express or implied.  See the License for
> the * specific language governing permissions and limitations * under the
> License. */ package org.apache.struts2.util; import
> com.opensymphony.xwork2.util.ValueStack;
> > import com.opensymphony.xwork2.util.logging.Logger;
> > import com.opensymphony.xwork2.util.logging.LoggerFactory;
> > import com.opensymphony.xwork2.TextProvider; import java.util.Iterator;
> > import java.util.List;
> > import java.util.LinkedList;
> > import java.util.Collections; /** * Helper methods to access text from
> TextProviders */
> > public class TextProviderHelper { private static final Logger LOG =
> LoggerFactory.getLogger(TextProviderHelper.class); /** * <p>Get a message
> from the first TextProvider encountered in the stack. * If the first
> TextProvider doesn't provide the message the default message is
> returned.</p> * The stack is searched if if no TextProvider is found, or
> the message is not found. * @param key             the message key in the
> resource bundle * @param defaultMessage  the message to return if not found
> (evaluated for OGNL) * @param args            an array args to be used in a
> {@link java.text.MessageFormat} message * @param stack           the value
> stack to use for finding the text * * @return the message if found,
> otherwise the defaultMessage */ public static String getText(String key,
> String defaultMessage, List<Object> args, ValueStack stack) { return
> getText(key, defaultMessage, args, stack, true); } /** * <p>Get a message
> from the first TextProvider
> >  encountered in the stack. * If the first TextProvider doesn't provide
> the message the default message is returned.</p> * <p>The search for a
> TextProvider is iterative from the root of the stack. * <p>This method was
> refactored from  {@link org.apache.struts2.components.Text} to use a *
> consistent implementation across UIBean components.</p> * @param key
>      the message key in the resource bundle * @param defaultMessage  the
> message to return if not found (evaluated for OGNL) * @param args
>   an array args to be used in a {@link java.text.MessageFormat} message *
> @param stack           the value stack to use for finding the text * @param
> searchStack     search stack for the key * * @return the message if found,
> otherwise the defaultMessage */ public static String getText(String key,
> String defaultMessage, List<Object> args, ValueStack stack, boolean
> searchStack) { String msg = null; TextProvider tp = null; for (Iterator
> iterator =
> >  stack.getRoot().iterator(); iterator.hasNext();) { Object o =
> iterator.next(); if (o instanceof TextProvider) { tp = (TextProvider) o;
> msg = tp.getText(key, null, args, stack); break; } } if (msg == null) { //
> evaluate the defaultMesage as an OGNL expression if (searchStack) msg =
> stack.findString(defaultMessage); if (msg == null) { // use the
> defaultMessage literal value msg = defaultMessage; } if
> (LOG.isWarnEnabled()) { if (tp != null) { LOG.warn("The first TextProvider
> in the ValueStack ("+tp.getClass().getName()+") could not locate the
> message resource with key '"+key+"'"); } else { LOG.warn("Could not locate
> the message resource '"+key+"' as there is no TextProvider in the
> ValueStack."); } if (msg.equals(defaultMessage)) { LOG.warn("The default
> value expression '"+defaultMessage+"' was evaluated and did not match a
> property.  The literal value '"+defaultMessage+"' will be used."); } else {
> LOG.warn("The default value expression '"+defaultMessage+"'
> >  evaluated to '"+msg+"'"); } } } return msg; } /** * <p>Get a message
> from the first TextProvider encountered in the stack. * If the first
> TextProvider doesn't provide the message the default message is
> returned.</p> * <p>The search for a TextProvider is iterative from the root
> of the stack. * <p>This method was refactored from  {@link
> org.apache.struts2.components.Text} to use a * consistent implementation
> across UIBean components.</p> * @param key             the message key in
> the resource bundle * @param defaultMessage  the message to return if not
> found * @param stack           the value stack to use for finding the text
> * * @return the message if found, otherwise the defaultMessage */ public
> static String getText(String key, String defaultMessage, ValueStack stack)
> { return getText(key, defaultMessage, Collections.emptyList(), stack); }
> > }
>
> Thanks a lot!!!!!!! Git is useless!!!!!!!!
>
>
> Kind regards
> --
> Łukasz
> + 48 606 323 122 http://www.lenart.org.pl/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message