Struts 1.3: Comment définir une langue par défaut dans une application web?
J'ai deux ou trois i18n fichiers dans mes jambes de suspension de l'application. Je suis en mesure de passer par le réglage de la Global.LOCALE_KEY
variable dans la session.
Est-il un moyen de définir une langue par défaut de l'application (probablement dans le struts-config.xml fichier, je suppose) ? La séance le seul endroit où vous définissez les paramètres régionaux ?
Sûr, je pourrais intercepter l'appel à la première page et définissez la variable dans la session, mais c'est de plus en plus lourde.
Vous devez vous connecter pour publier un commentaire.
Dans votre web.xml vous pouvez définir un context-param:
Puis à l'avant dans votre webapp:
bien que vous aurez à modifier les propriétés de la ligne de la coller sur la session à la place. Vous pouvez avoir besoin de pirater une version de ActionComponentServlet qui ne pré-initialisation de ce genre.
Il y a probablement une meilleure façon de le faire, c'est juste le code que j'ai hérité.
Si vous souhaitez configurer une session comme il est créé, vous pouvez utiliser un HttpSessionListener. La configuration de la locale par défaut pour chaque nouvelle session ressemblerait à quelque chose comme ceci:
Puis vous ajouter cet élément à votre web.xml fichier:
Ou vous pouvez l'ajouter en "programmant" par la méthode de ServletContext.addListener
Hm, j'ai enfin résolu ce un par l'écriture de code Java au lieu d'utiliser struts-config.xml.
J'ai créé un contexte port d'écoute pour définir la valeur d'un champ statique dans les jambes de force de la classe.
Voir cette question: Est-il possible d'exécuter une méthode/classe uniquement sur le démarrage de tomcat?
Si vous avez juste besoin d'un fichier de ressources pour être sélectionné en tant que par défaut tout simplement omettre le code de la langue dans le nom de fichier:
EDIT:
Il y a un bug dans Struts 1.x en ce qui concerne les messages par défaut de manutention si vous définissez vos messages en mode par défaut (qui sera choisi si vous omettez le
mode
la propriété):et les paramètres régionaux par défaut n'est pas la même langue que dans les propriétés sans postfix:
Texts.properties
.Disons que notre
Texts.properties
fichier contient du texte en anglais. De plus, il existe une traduction allemande:Texts_de.properties
. Notre paramètres régionaux système par défaut est le français parce que nous sommes en cours d'exécution sur un serveur français (et nous n'avons pas la définir explicitement).Si votre première demande après le démarrage du serveur demandes de la traduction allemande d'une page toutes les demandes ultérieures de la même page sera servi en allemand si il n'est pas explicite fichier de propriétés pour le code de langue.
Si la première demande demande une page en anglais toutes les demandes ultérieures de la même page va être servis en anglais si il n'est pas explicite fichier de propriétés pour le code de la langue (qui est ce que nous voulons).
La solution de ce problème consiste à définir le mode de propriété pour chaque message de déclaration de ressources: