At 02:39 PM 10/25/2001 +0200, you wrote:
>  b)Maybe a bit nicer sollution could be to have an
>
>     interface I18nDictonary {
>        public String lookup( String key );
>        public long getLastModified();
>     }
>
>    A helper class could delegate the lookup to the original
>    XMLResourceBundle. If the getLastModified() is available
>    making the I18nTransformer cacheable should be really easy,
>    too. Cacheability would only depend on the features of
>    the dictonary then.

I've already implemented something like that locally here, I just haven't 
had a chance to port it back to the C2 tree and send a patch. Looks like 
its needed tho :)

What I did:

I made an I18nResourceFactory component that returns XMLResourceBundles's :

XMLResourceBundle select(String name, Locale locale) throws ComponentException;

That component can be configured in cocoon.xconf with 2 parameters:
         catalogue-location - the base directory to search for catalogues
         cache-at-startup - same as XmlResourceBundle option

The I18nTransformer then uses the I18nResourceFactory to load its 
XMLResouceBundles, thus having a single instance of each XMLResourceBundle 
in memory.

I also gave the transformer some new options:
         untranslated-text - set the text to insert if no translation is 
found and no default. Can be an expression such as "[ut: $key]" where $key 
was the attempted lookup key.
         catalogue - this specifies which catalogue to request from the 
I18nResourceFactory
         ignore-no-catalogue - If the specified catalog cannot be found, 
supress the error.

This is all against the 2.0 branch, as that is what we've been tracking 
here. If interest is high I'll make a patch quicker :)
-pete


-- 
peter royal -> [EMAIL PROTECTED]
managing partners, inc. -> http://www.managingpartners.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to