<la valeur par défaut-paramètres régionaux> ne semble pas fonctionner, au lieu du <pris en charge des paramètres régionaux> est utilisé
je voulais définir l'emplacement par défaut de mon jsf projet web à l'anglais, donc
j'ai fait la suivante:
faces-config.xml
<application>
<locale-config>
<default-locale>en_EN</default-locale>
<supported-locale>de_DE</supported-locale>
</locale-config>
<resource-bundle>
<base-name>de.hof.tschuwwa.resources.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
j'ai un paquet dans mon dossier src de.hof.tschuwwa.resources
et à l'intérieur
du paquet que j'ai deux fichiers de propriétés:
messages_de_DE.properties
messages_en_EN.properties
et je l'ai testé dans un petit fichier xhtml:
<h:body>
<ui:composition template="/templates/master.xhtml">
<ui:define name="header">
<h:form>
<h:commandButton action="#{navigationService.toLogin}" value="#{msg['login']}" />
<h:commandButton action="#{navigationService.toRegister}" value="#{msg['register']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
Lorsque je démarre mon application, il montre les valeurs allemandes et pas
les valeurs en anglais. je voulais la langue par défaut est l'anglais.
Comment puis-je mettre ma langue par défaut? L'faces-config.xml par défaut-paramètres régionaux
ne semble pas fonctionner.
Aussi j'ai besoin de savoir comment je peux changer ma localisation. j'ai écrit ce petit
service:
@Named
@SessionScoped
public class LanguageService implements Serializable {
private static final long serialVersionUID = 1L;
public void changeLanguage(String language) {
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(language));
}
}
et essayé avec les boutons suivants à l'intérieur d'un formulaire:
<p:commandButton id="english" value="English" action="#{languageService.changeLanguage('en')}" immediate="true" />
<p:commandButton id="german" value="Deutsch" action="#{languageService.changeLanguage('de')}" immediate="true" />
mais rien ne s'est passé quand je les ai utilisés.
- Est la configuration de votre navigateur les paramètres régionaux par défaut de?
- Même si je change mon navigateur par défaut local de l'anglais mon web app charge tous les messages en allemand
- Êtes-vous sûr en_EN locale existe? Je suis à 90% sûr que tout fonctionnera correctement lors de l'utilisation de en_US ou fr au lieu de. Et le renommage des fichiers de propriétés de cours.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous avez il y a une erreur dans l'identificateur de paramètres régionaux
en_EN
. Les deux premiers caractères représentent le ISO 693-1 le code de langue. Il est facultatif et n'est nécessaire que lorsque le code de pays est présent. Les deux dernières en majuscule des caractères représentent le La norme ISO 3166-1 Alpha-2 code de pays. Il est facultatif et est souvent utilisé pour distinguer entre les pays de langue propres dialectes, comme L'Anglais Américain (en_US
) et L'Anglais Britannique (en_GB
). Il n'y a pas de tels pays comme "l'Angleterre", doncen_EN
est certainement pas valide. Probablement vous voulez utiliseren
ou peut-êtreen_US
ici.Donc,
avec un
messages_en.properties
fichier.La
<default-locale>
est utilisé uniquement lorsque le client n'a pas fourni les paramètres régionaux par lui-même dans la saveur de laAccept-Language
- tête de requête HTTP, ou fourni à un, ce qui n'est pas pris en charge par l'application comme il est défini dans<supported-locale>
. Beaucoup de (sane) clients fait leAccept-Language
en-tête. Avec un trafic HTTP moniteur, vous pouvez les voir.(l'écran indique:
en-US
est le premier choix (par défaut avec un "poids" de l'1), leen
est le deuxième de préférence avec un "poids" de 0,8, lanl
est le troisième de préférence avec un "poids" de 0,6; dans Chrome, vous pouvez changer cela danschrome://settings/languages
par l'ajout, la suppression et réorganisation des langues).Si vous voulez éviter cela et veulent forcer le "par défaut" paramètres régionaux pour quelque obscure raison, vous devez définir explicitement le
<f:view locale>
à l'option "par défaut" locale (note: vous êtes donc en réalité primordiale du client locale préférée comme configuré dans son programme — le webbrowser).E. g.:
(il suffit de mettre dans modèle master, enveloppant les
<h:head>
et<h:body>
)avec cette nouvelle propriété dans le backing bean:
Votre erreur dans cet exemple particulier, c'est que vous n'êtes pas la mise à jour de la vue après avoir invoqué l'action. Vous devez ajouter
update="@all"
à des boutons de commande. Mais il y a une autre erreur: vous n'êtes pas de rappeler les paramètres régionaux pour les demandes suivantes. Il devrait revenir à l' "par défaut" paramètres régionaux de nouveau. Vous devez définir le<f:view locale>
avec cette propriété. C'est déjà répondu en détail avant: Localisation dans le JSF, façon de rappeler les paramètres régionaux sélectionnés par session au lieu de par demande/afficher.