vgritsenko 02/02/07 06:23:15 Modified: src/java/org/apache/cocoon/transformation I18nTransformer.java Log: Applied patch from Piroumian, Konstantin [[EMAIL PROTECTED]] Revision Changes Path 1.11 +28 -38 xml-cocoon2/src/java/org/apache/cocoon/transformation/I18nTransformer.java Index: I18nTransformer.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/I18nTransformer.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- I18nTransformer.java 7 Feb 2002 07:41:24 -0000 1.10 +++ I18nTransformer.java 7 Feb 2002 14:23:15 -0000 1.11 @@ -229,7 +229,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Marcus Crafter</a> * @author <a href="mailto:[EMAIL PROTECTED]">Michael Enke</a> * @author <a href="mailto:[EMAIL PROTECTED]">Lassi Immonen</a> - * @version CVS $Id: I18nTransformer.java,v 1.10 2002/02/07 07:41:24 cziegeler Exp $ + * @version CVS $Id: I18nTransformer.java,v 1.11 2002/02/07 14:23:15 vgritsenko Exp $ * * @todo Move all formatting/parsing routines to I18nUtils */ @@ -588,6 +588,9 @@ // Date pattern types map: short, medium, long, full private static final Map datePatterns; + + // String buffer + private StringBuffer strBuffer; static { // initialize date types set @@ -899,6 +902,8 @@ throws SAXException { debug("Start i18n element: " + name); + //initialize the string buffer + strBuffer = new StringBuffer(); if (I18N_TEXT_ELEMENT.equals(name)) { if (current_state != STATE_OUTSIDE @@ -1028,40 +1033,11 @@ private void endI18NElement(String name) throws SAXException { debug("End i18n element: " + name); - switch (current_state) { - case STATE_INSIDE_TEXT: - endTextElement(); - break; - - case STATE_INSIDE_TRANSLATE: - endTranslateElement(); - break; - - case STATE_INSIDE_PARAM: - endParamElement(); - break; - - case STATE_INSIDE_DATE: - case STATE_INSIDE_DATE_TIME: - case STATE_INSIDE_TIME: - endDate_TimeElement(); - break; - - case STATE_INSIDE_NUMBER: - endNumberElement(); - break; - } - } - - private void i18nCharacters(char[] ch, int start, int len) - throws SAXException { - - String textValue = new String(ch, start, len).trim(); - if (textValue == null || textValue.length() == 0) { + + if (strBuffer.length() == 0) { return; } - - debug( "i18n message text = '" + textValue + "'" ); + debug( "i18n message text = '" + strBuffer.toString() + "'" ); switch (current_state) { case STATE_INSIDE_TEXT: @@ -1070,39 +1046,46 @@ // If no translation found and untranslated param is null if (translated_text == null) { - translated_text = textValue; // use the key + translated_text = strBuffer.toString(); // use the key } // reset the key holding variable current_key = null; } else { // use text value as dictionary key - translated_text = getString(textValue, (untranslated == null) ? textValue : untranslated); + translated_text = getString(strBuffer.toString(), + (untranslated == null) ? strBuffer.toString(): untranslated); } + endTextElement(); break; case STATE_INSIDE_TRANSLATE: // Store text for param substitution (do not translate) if (substitute_text == null) { - substitute_text = textValue; + substitute_text = strBuffer.toString(); } + endTranslateElement(); break; case STATE_INSIDE_PARAM: // Store translation for param substitution if (param_value == null) { - param_value = textValue; + param_value = strBuffer.toString(); } + endParamElement(); break; case STATE_INSIDE_DATE: case STATE_INSIDE_DATE_TIME: case STATE_INSIDE_TIME: + endDate_TimeElement(); + break; case STATE_INSIDE_NUMBER: if (formattingParams.get(I18N_VALUE_ATTRIBUTE) == null) { - formattingParams.put(I18N_VALUE_ATTRIBUTE, textValue); + formattingParams.put(I18N_VALUE_ATTRIBUTE, strBuffer.toString()); } else { ; // ignore the text inside of date element } + endNumberElement(); break; default: @@ -1112,6 +1095,12 @@ } } + private void i18nCharacters(char[] ch, int start, int len) + throws SAXException { + + strBuffer.append(new String(ch, start, len).trim()); + } + // Translate all attributes that are listed in i18n:attr attribute private Attributes translateAttributes(String name, Attributes attr) throws SAXException { @@ -1519,6 +1508,7 @@ factory.release(dictionary); dictionary = null; + strBuffer = null; } public void dispose() {
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]