> Konstantin,
> Done. Please cross-check. If all's well, i will remove the old one.
Ok, I'll check in a few minutes. (I have to turn off the proxy and restart
the computer to get access to CVS :( )
Btw, I've noticed a strange thing while building the webapp: one letter in
Russian (the first letter in the word 'Spanish') was incorrectly encoded
during coping. I mean, I have a correct dictionary in the
xml-cocoon2/webapp/i18n/translations directory, then I run build.bat
(exactly as written in the INSTALL file) and I see, that the dictionary in
build/cocoon/webapp/i18n/translations has incorrect letter in the first
position of the russian word 'Spanish'.
Anybody knows where is it come from?
>
> Thanks,
> dims
>
> --- "Piroumian, Konstantin" <[EMAIL PROTECTED]> wrote:
> > > All your samples are working now. Can you please resubmit all the
patches
> > against the latest CVS.
> >
> > Fine! Changes are attached.
> >
> > For Windows users' information, the correct new line character in UTF-8
is
> > LF (#10). I've got a lot of differences in the dictionary file, because
of
> > the wrong character. It was CRLF (#13#10), then I changed it to LF only
> > (#10) and differences disappeared.
> >
> > > dims
> >
> > Kot.
> >
> >
> >
> >
> > > ? build
> > ? i18n_diff.txt
> > Index: src/org/apache/cocoon/transformation/I18nTransformer2.java
> > ===================================================================
> > RCS file:
> >
/home/cvspublic/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransfo
rmer2.java,v
> > retrieving revision 1.9
> > diff -u -r1.9 I18nTransformer2.java
> > --- src/org/apache/cocoon/transformation/I18nTransformer2.java
2001/06/01 16:14:57 1.9
> > +++ src/org/apache/cocoon/transformation/I18nTransformer2.java
2001/06/15 13:19:21
> > @@ -37,8 +37,15 @@
> > import java.util.StringTokenizer;
> > import java.util.ArrayList;
> > import java.util.Locale;
> > +import java.util.Date;
> >
> > +import java.text.Format;
> > import java.text.MessageFormat;
> > +import java.text.DateFormat;
> > +import java.text.SimpleDateFormat;
> > +import java.text.NumberFormat;
> > +import java.text.DecimalFormat;
> > +import java.text.ParseException;
> >
> > import java.net.URL;
> > import java.net.MalformedURLException;
> > @@ -132,23 +139,43 @@
> > public final static String I18N_DATE_ELEMENT = "date";
> > public final static String I18N_NUMBER_ELEMENT = "number";
> >
> > + // number and date formatting attributes
> > + public final static String I18N_SRC_PATTERN_ATTRIBUTE =
"src-pattern";
> > + public final static String I18N_PATTERN_ATTRIBUTE = "pattern";
> > + public final static String I18N_VALUE_ATTRIBUTE = "value";
> > + /**
> > + * <code>sub-type</code> attribute is used with
<code>i18:number</code> to indicate
> > + * a sub-type: <code>currency</code> or <code>percent</code>.
> > + */
> > + public final static String I18N_SUB_TYPE_ATTRIBUTE = "sub-type";
> > + /**
> > + * <code>type</code> attribute is used with <code>i18:param</code>
to indicate
> > + * the parameter type: <code>date</code> or <code>number</code>.
> > + * If <code>type</code> is <code>number</code> then a
<code>sub-type</code>
> > + * can be used.
> > + */
> > + public final static String I18N_TYPE_ATTRIBUTE = "type";
> > +
> > // States of the transformer
> > private final static int STATE_OUTSIDE = 0;
> > private final static int STATE_INSIDE_TEXT = 1;
> > private final static int STATE_INSIDE_PARAM = 2;
> > private final static int STATE_INSIDE_TRANSLATE = 3;
> > -// private final static int STATE_INSIDE_PARAM_TEXT = 4;
> > - private final static int STATE_INSIDE_TRANSLATE_TEXT = 5;
> > - private final static int STATE_TRANSLATE_KEY = 6;
> > - private final static int STATE_TRANSLATE_TEXT_KEY = 7;
> > + private final static int STATE_INSIDE_TRANSLATE_TEXT = 4;
> > + private final static int STATE_TRANSLATE_KEY = 5;
> > + private final static int STATE_TRANSLATE_TEXT_KEY = 6;
> > + private final static int STATE_INSIDE_DATE = 7;
> > + private final static int STATE_INSIDE_NUMBER = 8;
> >
> > /**
> > * Current state of the transformer.
> > + * The value is STATE_OUTSIDE by default.
> > */
> > private int current_state = STATE_OUTSIDE;
> >
> > /**
> > - * Previous state. Used to translate text inside params and
translate elements.
> > + * Previous state.
> > + * Used to translate text inside params and translate elements.
> > */
> > private int prev_state = STATE_OUTSIDE;
> >
> > @@ -205,13 +232,33 @@
> > * Also, different encodings can be specified: ru_RU_koi8
> > */
> > private Locale locale;
> > +
> > + /**
> > + * Date element attributes and their values.
> > + */
> > + private HashMap formattingParams;
> > +
> > + public static Locale parseLocale(String locale) {
> > + StringTokenizer st = new StringTokenizer(locale, "_");
> > + String lang = null;
> > + String country = null;
> > + String variant = null;
> > + if (!st.hasMoreTokens()) {
> > + return Locale.ENGLISH;
> > + }
> > + else {
> > + lang = st.nextToken();
> > + }
> >
> > - public void setLang(String lang) {
> > - this.lang = lang;
> > + country = st.hasMoreTokens() ? st.nextToken() : "";
> > + variant = st.hasMoreTokens() ? st.nextToken() : "";
> > +
> > + return new Locale(lang, country, variant);
> > }
> >
> > public void setLocale(Locale locale) {
> > this.locale = locale;
> > + this.lang = locale.getLanguage();
> > }
> >
> > /**
> > @@ -228,26 +275,8 @@
> > if (lang == null) {
> > lang = LangSelect.getLang(objectModel, parameters);
> > }
> > - setLang(lang);
> >
> > - Locale locale = null;
> > - int ind = lang.indexOf("_");
> > - if (ind != -1) {
> > - int lind = lang.lastIndexOf("_");
> > - if (ind == lind) {
> > - locale = new Locale(lang.substring(0, ind - 1),
> > - lang.substring(ind + 1));
> > - }
> > - else {
> > - locale = new Locale(lang.substring(0, ind - 1),
> > - lang.substring(ind + 1, lind - 1),
> > - lang.substring(lind + 1));
> > - }
> > - }
> > - else {
> > - locale = new Locale(lang, "");
> > - }
> > - setLocale(locale);
> > + setLocale(parseLocale(lang));
> > formatter.setLocale(locale);
> >
> > // FIXME (KP)
> > @@ -307,51 +336,126 @@
> > private void startI18NElement(String name, Attributes attr)
> > throws SAXException {
> > this.getLogger().debug("Start i18n element: " + name);
> > - if (I18N_TEXT_ELEMENT.equals(name)) {
> > - if (current_state != STATE_OUTSIDE
> > - && current_state != STATE_INSIDE_PARAM
> > - && current_state != STATE_INSIDE_TRANSLATE) {
> > - throw new SAXException(this.getClass().getName()
> > - + ": nested i18n:text elements are not allowed.
Current state: " +
> > current_state);
> > + try {
> > + if (I18N_TEXT_ELEMENT.equals(name)) {
> > + if (current_state != STATE_OUTSIDE
> > + && current_state != STATE_INSIDE_PARAM
> > + && current_state != STATE_INSIDE_TRANSLATE) {
> > + throw new SAXException(this.getClass().getName()
> > + + ": nested i18n:text elements are not allowed.
Current state: " +
> > current_state);
> > + }
> > + prev_state = current_state;
> > + current_state = STATE_INSIDE_TEXT;
> > + current_key = attr.getValue(I18N_NAMESPACE_URI,
I18N_KEY_ATTRIBUTE);
> > }
> > - prev_state = current_state;
> > - current_state = STATE_INSIDE_TEXT;
> > - current_key = attr.getValue(I18N_NAMESPACE_URI,
I18N_KEY_ATTRIBUTE);
> > - }
> > - else if (I18N_TRANSLATE_ELEMENT.equals(name)) {
> > - if (current_state != STATE_OUTSIDE) {
> > -// throw new SAXException(this.getClass().getName()
> > -// + ": i18n:translate element must be used "
> > -// + "outside of other i18n elements. Current state:
" + current_state);
> > + else if (I18N_TRANSLATE_ELEMENT.equals(name)) {
> > + if (current_state != STATE_OUTSIDE) {
> > + throw new SAXException(this.getClass().getName()
> > + + ": i18n:translate element must be used "
> > + + "outside of other i18n elements. Current
state: " + current_state);
> > + }
> > + current_state = STATE_INSIDE_TRANSLATE;
> > }
> > - current_state = STATE_INSIDE_TRANSLATE;
> > - }
> > - else if (I18N_PARAM_ELEMENT.equals(name)) {
> > - if (current_state != STATE_INSIDE_TRANSLATE) {
> > - throw new SAXException(this.getClass().getName()
> > - + ": i18n:param element can be used only inside "
> > - + "i18n:translate element. Current state: " +
current_state);
> > + else if (I18N_PARAM_ELEMENT.equals(name)) {
> > + if (current_state != STATE_INSIDE_TRANSLATE) {
> > + throw new SAXException(this.getClass().getName()
> > + + ": i18n:param element can be used only inside
"
> > + + "i18n:translate element. Current state: " +
current_state);
> > + }
> > + setFormattingParams(attr);
> > + current_state = STATE_INSIDE_PARAM;
> > }
> > - current_state = STATE_INSIDE_PARAM;
> > + else if (I18N_DATE_ELEMENT.equals(name)) {
> > + if (current_state != STATE_OUTSIDE) {
> > + throw new SAXException(this.getClass().getName()
> > + + ": i18n:date elements are not allowed "
> >
> === message truncated
===> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, email: [EMAIL PROTECTED]
>
>
> =====
> Davanum Srinivas, JNI-FAQ Manager
> http://www.jGuru.com/faq/JNI
>
> __________________________________________________
> Do You Yahoo!?
> Spot the hottest trends in music, movies, and more.
> http://buzz.yahoo.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]