You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Jens Maukisch <co...@maukisch.net> on 2005/05/24 16:43:29 UTC
Re[2]: portal tools i18n only work the first time in 2.1.7.
Hi,
>> It works only when you access it at the first time,when you
>> access again ,it returns to English.
I've had a short look at the i18n-stuff in the portal tools
and it seems as it does not work correctly.
I will look into this problem in more detail on thursday
or friday and try to provide a patch.
--
* best regards
* Jens Maukisch
Re: portal tools i18n only work the first time in 2.1.7.
Posted by Christian Könitzer <ch...@otego.com>.
Hi
I had had a similar problem so I've changed the I18nCatalogueGenerator.java
My problem was that the generator was not able to serve the i18n
transformer with the right messages. E.g. if the user-language was
Arabic, then the generator delivered not the default messages.
I made a workaround which works for me:
/*
* Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed 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.cocoon.portal.tools.generation;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.ServiceableGenerator;
import org.apache.cocoon.portal.tools.PortalToolCatalogue;
import org.apache.cocoon.portal.tools.PortalToolManager;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.xml.sax.SAXParser;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
/**
*
* @version CVS $Id: I18nCatalogueGenerator.java 157071 2005-03-11
11:16:05Z cziegeler $
*/
public class I18nCatalogueGenerator extends ServiceableGenerator {
private SAXParser parser;
private PortalToolManager ptm;
private final String CATALOGUE_TAG = "catalogue";
private String lang = ".xml";
private StringBuffer i18n = new StringBuffer();
/* (non-Javadoc)
* @see org.apache.cocoon.generation.Generator#generate()
*/
public void generate() throws IOException, SAXException,
ProcessingException {
this.xmlConsumer.startDocument();
this.xmlConsumer.startElement("", CATALOGUE_TAG, CATALOGUE_TAG,
new AttributesImpl());
List cats = ptm.getI18n();
// parse default catalogue
for(Iterator it = cats.iterator(); it.hasNext();) {
PortalToolCatalogue ptc = (PortalToolCatalogue) it.next();
try {
Source cat;
cat = resolver.resolveURI(ptc.getLocation() +
ptc.getName() + ".xml");
//System.err.println( "i18nCatalogue 1: " +cat.getURI() );
IncludeXMLConsumer ixc = new
IncludeXMLConsumer(this.xmlConsumer);
ixc.setIgnoreRootElement(true);
this.parser.parse(new
InputSource(cat.getInputStream()), ixc);
} catch (MalformedURLException e) {
System.err.println( "i18nCatalogue 1ea: "+e);
// ignore
} catch (IOException e) {
System.err.println( "i18nCatalogue 1eb: "+e);
// ignore
}
}
for(Iterator it = cats.iterator(); it.hasNext();) {
PortalToolCatalogue ptc = (PortalToolCatalogue) it.next();
try {
Source cat;
cat = resolver.resolveURI(ptc.getLocation() +
ptc.getName() + lang);
//System.err.println( "i18nCatalogue 2: " +cat.getURI() + " lang: " +
lang + " i18n: " + i18n );
IncludeXMLConsumer ixc = new
IncludeXMLConsumer(this.xmlConsumer);
ixc.setIgnoreRootElement(true);
this.parser.parse(new
InputSource(cat.getInputStream()), ixc);
} catch (MalformedURLException e) {
System.err.println( "i18nCatalogue 2ea: "+e);
// ignore
} catch (IOException e) {
System.err.println( "i18nCatalogue 2eb: "+e);
// ignore
}
}
this.xmlConsumer.endElement("", CATALOGUE_TAG, CATALOGUE_TAG);
this.xmlConsumer.endDocument();
}
/* (non-Javadoc)
* @see
org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
java.util.Map, java.lang.String,
org.apache.avalon.framework.parameters.Parameters)
*/
public void setup(SourceResolver resolver, Map objectModel, String
src, Parameters par)
throws ProcessingException, SAXException,
IOException {
super.setup(resolver, objectModel, src, par);
//System.err.println( "i18nCatalogue src: " + src + " lang: "+lang);
if(src.indexOf("_") != -1) {
//use only language, but not country because in this Portal
the catalogue-files are only in de, fr, it, and default
if ( src.lastIndexOf("_") == src.indexOf("_") ) {
this.lang = src.substring(src.indexOf("_"), src.length());
}
else {
this.lang = src.substring(src.indexOf("_"),
src.lastIndexOf("_"));
}
this.lang = this.lang.toLowerCase();
if (this.lang.endsWith(":")) {
this.lang=this.lang.substring(0,this.lang.length()-1);
}
if (!this.lang.endsWith(".xml")) {
this.lang = this.lang + ".xml";
}
//System.err.println( "i18nCatalogue src changed lang to: "+lang);
}
}
/* (non-Javadoc)
* @see
org.apache.cocoon.generation.ServiceableGenerator#service(org.apache.avalon.framework.service.ServiceManager)
*/
public void service(ServiceManager manager) throws ServiceException {
super.service(manager);
this.parser = (SAXParser)this.manager.lookup(SAXParser.ROLE);
ptm = (PortalToolManager)
this.manager.lookup(PortalToolManager.ROLE);
}
/* (non-Javadoc)
* @see org.apache.cocoon.generation.ServiceableGenerator#dispose()
*/
public void dispose() {
super.dispose();
this.manager.release(this.parser);
this.manager.release(this.ptm);
}
}
Jens Maukisch wrote:
>Hi,
>
>
>
>>>It works only when you access it at the first time,when you
>>>access again ,it returns to English.
>>>
>>>
>
>I've had a short look at the i18n-stuff in the portal tools
>and it seems as it does not work correctly.
>I will look into this problem in more detail on thursday
>or friday and try to provide a patch.
>
>
>