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

Odpovedet emailem