You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Nathan Quirynen <na...@pensionarchitects.be> on 2015/09/03 17:33:23 UTC

Re: Localized messages based on property value

Hey,

I'm now using my own implementation of AbstractMessages as I described 
in my previous mail. I do exactly the same as in MessagesImpl. The only 
difference is that I add something to the baseName argument used in 
ResourceBundle.getBundle(baseName, ...).

The selecting of the correct resource bundle works as it should, only 
now I'm experiencing something wrong with encoding. All my resource 
bundles have UTF-8 set as encoding (languages like German and French use 
characters that aren't supported by the default encoding). When using 
the binding prefix that I created which uses my implementation of 
AbstractMessages for some reason the special characters are not shown 
correctly as opposed to the regular binding prefix (${message: ... }).

Anyone an idea what could be happening here that in my implementation 
the files are not handled as UTF-8 encoded?

Nathan


On 12/08/15 16:37, Nathan Quirynen wrote:
> Hi Thiago,
>
> That's actually a clever solution, but seems a bit "hacky" and I'm not 
> sure how it will also use the usual Index(_en).properties files?
>
> I solved it at the moment with adding a new binding prefix where i 
> pass the key and property value like following: 
> ${messagebasedonpropertyvalue:messagekey=property}
> Then in the binding implementation I get the resourcebundle based on 
> the property value and retrieve the message by given key.
> This works as I hoped.
>
> I am starting to doubt that having this many properties files for just 
> 1 page/component is the way to go though. Maybe I'll have to move it 
> to the database or somewhere else.
>
> Thanks for your insight!
>
> Nathan
>
> On 11/08/15 16:33, Thiago H de Paula Figueiredo wrote:
>> On Tue, 11 Aug 2015 03:29:13 -0300, Nathan Quirynen 
>> <na...@pensionarchitects.be> wrote:
>>
>>> So I want to have the usual properties file for the page and besides
>>> this for each possible value of a property an extra properties files in
>>> which specific localized messages are located.
>>>
>>> So for example an Index page it can have the following:
>>>
>>> - Index.properties
>>> - Index_en.properties
>>> - Index_120.properties
>>> - Index_120_en.properties
>>> - Index_130.properties
>>> - Index_130_en.properties
>>> - ...
>>>
>>>
>>> But when the page loads the value of the property is for example 120
>>> then Index.properties and Index_120.properties wil have to be used.
>>>
>>> I hope it is more clear now. So i need to load the messages catalogs
>>> depending on the property value.
>>
>> I'd try this: @Inject ThreadLocale threadLocale, then in your page's 
>> onActivate() method call threadLocale(new Locale("[current language 
>> code]", [property value]), then use ${message:xxx} or @Inject 
>> Messages as usual. You'd need to revert the naming convention: 
>> instead of Index_130_en.properties, Index_en_130.properties. The idea 
>> is using locale country or even variant, as supported in 
>> Locale(String language, String country) and Locale(String language, 
>> String country, String variant) constructors of java.util.Locale.
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org