Jsf 2 <;默认区域设置>;似乎不起作用,而是<;支持的区域设置>;正在使用
我想将JSFWeb项目的默认位置设置为英语,所以 我做了以下工作: faces-config.xmlJsf 2 <;默认区域设置>;似乎不起作用,而是<;支持的区域设置>;正在使用,jsf-2,localization,Jsf 2,Localization,我想将JSFWeb项目的默认位置设置为英语,所以 我做了以下工作: faces-config.xml <application> <locale-config> <default-locale>en_EN</default-locale> <supported-locale>de_DE</supported-locale> </locale-config>
<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>
我在一个小的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>
并在表单中尝试使用以下按钮:
<p:commandButton id="english" value="English" action="#{languageService.changeLanguage('en')}" immediate="true" />
<p:commandButton id="german" value="Deutsch" action="#{languageService.changeLanguage('de')}" immediate="true" />
但当我使用它们时,什么也没发生
<default-locale>en_EN</default-locale>
使用适当的消息\u en.properties
文件
如何设置默认语言?faces-config.xml默认区域设置似乎不起作用
仅在客户端未以接受语言HTTP请求头的形式提供本地语言环境,或未提供应用程序不支持的本地语言环境时使用
。许多(正常的)客户端实际上设置了Accept Language
头。使用HTTP流量监视器,您可以看到它们
(屏幕显示:en-US
是第一个首选项(默认“权重”为1),en
是第二个首选项,权重为0.8;nl
是第三个首选项,权重为0.6;chrome://settings/languages
通过添加/删除/重新排序语言)
如果您想防止这种情况发生,并且出于某些不明确的原因想要强制使用“默认”区域设置,那么您需要显式地将
设置为所需的“默认”区域设置(注意:您实际上覆盖了客户端程序中配置的首选区域设置-webbrowser)
例如:
我还需要知道如何更改我的本地化
在这个特定示例中,您的错误在于调用操作后没有更新视图。您需要向命令按钮添加update=“@all”
。但还有一个错误:您没有记住后续请求的区域设置。它将再次回到“默认”语言环境。您需要使用此属性设置
。这一点以前已经得到了详细的回答:。您的浏览器是否将默认区域设置为DE?即使我将浏览器的默认本地设置更改为英语,我的web应用程序也会加载所有德语消息您确定存在en_en区域设置吗?我90%确信使用en_US或en_GB时一切都会正常工作。当然还有重命名属性文件。如果用户在表单中输入一些信息,然后用“英语”或“德语”按钮更改语言,是否有办法保留用户已经输入的信息?
<p:commandButton id="english" value="English" action="#{languageService.changeLanguage('en')}" immediate="true" />
<p:commandButton id="german" value="Deutsch" action="#{languageService.changeLanguage('de')}" immediate="true" />
<default-locale>en_EN</default-locale>
<default-locale>en</default-locale>
<f:view locale="#{languageService.language}">
@Named
@SessionScoped
public class LanguageService implements Serializable {
private Locale locale;
@PostConstruct
public void init() {
locale = FacesContext.getCurrentInstance().getApplication().getDefaultLocale();
}
// ...
}