2010-11-25 31 views
3

J'ai quelques problèmes avec l'adaptation de mon application web aux paramètres de langue des navigateurs d'utilisateurs distants. J'ai utilisé ResourceBundleMessageSource pour cela. Il ressemble à ceci:printemps données locales sensibles

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basename" value="resources/messages" /> </bean> 

Et j'ai deux fichiers .properties:

  • messages.properties

  • messages_ru.properties

Ils sont situés dans src/resources/messages. Je veux configurer mon application de telle manière, que lorsque les paramètres de langue du navigateur des utilisateurs distants contiennent le russe, mon application devrait utiliser les messages russes (messages_ru), sinon (si la langue n'est pas configurée ou non russe), elle devrait utiliser .properties (contient des messages en anglais). Lorsque je configure russe dans mon navigateur, cela fonctionne très bien. Lorsque j'efface tous les paramètres, il affiche également russe (je pense que cela dépend des paramètres régionaux du système). Et quand je mets une autre langue, ça me montre aussi des messages russes.

Le seul moyen de faire en sorte que mon application affiche les messages en anglais est de renommer messages.properties en messages_en.properties et de les définir dans browser english lang. Mais je veux que mon application soit adoptée pour tous les paramètres de langue (quand il utilise le russe, s'il le faut, et l'anglais pour tous les autres paramètres et tous les autres pays).

Des idées?

Répondre

5

Vous devez définir

<bean id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="resources/messages" /> 
    <property name="fallbackToSystemLocale" value="false" /> 
</bean> 

Dans ce printemps de cas utilisera messages.properties comme solution de repli, il devrait donc contenir des messages dans les paramètres régionaux « par défaut » pour votre application.

+0

ResourceBundleMessageSource ne possède pas de propriété fallbackToSystemLocale. J'ai également essayé d'utiliser ReloadableResourceBundleMessageSource, qui contient cette propriété. Mais la spécification indique: «Retour au système Les paramètres régionaux sont le comportement par défaut de java.util.ResourceBundle.Cependant, cela n'est souvent pas souhaitable dans un environnement de serveur d'applications, où le paramètre régional du système n'est pas du tout pertinent pour l'application: drapeau à "faux" dans un tel scénario. ". – Ilnur

+0

Et mon essai ne reçoit pas non plus de résultats. Maintenant, lorsque le navigateur est configuré en russe, il affiche les messages russes, sinon il montre une erreur, ce fichier messages_ (nom de la langue) (par exemple messages_de) n'existe pas. – Ilnur

+0

@llnur: Mis à jour. – axtavt