Ehm, a zjistil jsem, že se to tu už probíralo - viz.
http://java.cz/konference/2006-December/010163.html
A jsou tam mnohem pregnantnější odpovědi, než píšu já ;-)
Honza
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------
Rodina Novotných napsal(a):
Ahoj,
tak na tohle jsem se nachytal už nesčetněkrát, ale v kombinaci s
ReloadableResourceBundleMessageSource. Ten má totiž metodu
setFallbackToSystemLocale
<http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/context/support/ReloadableResourceBundleMessageSource.html#setFallbackToSystemLocale%28boolean%29>:
setFallbackToSystemLocale
public void *setFallbackToSystemLocale*(boolean fallbackToSystemLocale)
Set whether to fall back to the system Locale if no files for a
specific Locale have been found. Default is "true"; if this is turned
off, the only fallback will be the default file (e.g.
"messages.properties" for basename "messages").
Falling back to the system Locale is the default behavior of
|java.util.ResourceBundle|. However, this is often not desirable in an
application server environment, where the system Locale is not
relevant to the application at all: Set this flag to "false" in such a
scenario.
Tzn. díky default hodnotě setFallbackToSystemLocale=true bude
Spring na systému, kde je defaultní locale EN (např. anglické windows,
anglické Ubuntu apod.), hledat resourcy v pořadí:
* globallmessages-cs_CZ.properties
* globallmessages-cs.properties
* globallmessages-en.properties
* globallmessages.properties
Když se tato properta nastaví na false, pak se to teprve začne
chovat, jak by člověk čekal - tzn. cs_CZ, cs a pak fallback ke
globálnímu resource bundle. Vůbec jsem nepochopil účel tohoto nastavení.
Když ale koukám do příkladu, ty tam používáš standardní
ResourceBundleMessageSource a ten podobnou metodu (podle JavaDocu)
nemá. Chování by ale mohl mít stejné. No snad tě moje rada, alespoň
posune blíž řešení.
Honza
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------
[email protected] napsal(a):
Zdravím konferenci
v aplikaci se Springem 2.5 mám v aplikačním kontextu definované zdroje zpráv
(viz doleji). Třídu MessageSourceAccessor si potom injektuju do tříd, kde je
potřeba. Problém je, že pokud změním Locale z defaultní (en) na jinou, stále
dostávám anglické zprávy:
Locale loc = new Locale("cs", "CZ");
String message = messageSourceAccessor.getMessage("engine.support", loc) ;
//vrací en hodnotu pro klíč engine.support
v aplikaci jsou 2 soubory zpráv:
globallmessages.properties //obsahuje české hodnoty
globallmessages-en.properties //obsahuje anglické hodnoty
applicationContext.xml
-----------------------------
<bean id="messageSourceAccessor"
class="org.springframework.context.support.MessageSourceAccessor">
<constructor-arg>
<ref local="messageSource" />
</constructor-arg>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>globalmessages</value>
</list>
</property>
</bean>
děkuji za pomoc
Tomáš Jurman