gpt4 book ai didi

java - 国际化 JSF 2.0

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:49 25 4
gpt4 key购买 nike

我在女巫中有一个应用程序,我正在尝试设置国际化可用性。

这是我的 faces-config.xml:

<application>
<locale-config>
<default-locale>lt</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>de</supported-locale>
</locale-config>
<resource-bundle>
<base-name>application</base-name>
<var>msg</var>
</resource-bundle>
</application>

我有三个属性文件:

application_lt.properties
application_en.properties
application_de.properties

bean 类:

@ManagedBean(name = Beans.LOCALE_BEAN)
@SessionScoped
public class LocaleBean extends BaseBean implements Serializable {

private String lang;

public String getLang() {
return lang;
}

public void setLang(String lang) {
this.lang = lang;
}
}

Action 类:

@ManagedBean(name = "localeAction")
@SessionScoped
public class LocaleAction extends BaseAction implements Serializable {

public void changeLocale() {
LocaleBean localeBean = getBean(Beans.LOCALE_BEAN);
String language = localeBean.getLang();
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(language));
}

}

要更改语言环境,我正在使用 commandLink:

<h:commandLink action="#{localeAction.changeLocale}">
<f:setPropertyActionListener target="#{localeBean.lang}" value="en"/>
English
</h:commandLink>

<h:commandLink action="#{localeAction.changeLocale}">
<f:setPropertyActionListener target="#{localeBean.lang}" value="lt"/>
Lithuanian
</h:commandLink>

第一个问题:

我已经定义了我的默认语言环境是“lt”:lt。为什么当我启动我的应用程序时,文本值是从 application_en.properties 而不是从 application_lt.properties 加载的?

第二个问题:

当我执行 commandLink 操作时,区域设置会根据我选择的区域设置而改变。但是执行操作是单击一次,第二次单击应用程序的任何其他链接也可以,当我第三次单击应用程序的任何链接时,文本值位于 application_en.properties 中。似乎语言环境发生了某种变化......

有什么想法吗?

最佳答案

I have defined that my default locale is "lt": lt. Why when I start up my application text values is loaded from application_en.properties and not from application_lt.properties?

显然是因为您的浏览器使用区域设置来标识自己 en作为 Accept-Language 的首选语言环境请求 header 。 JSF 将自动使用它,因为它是受支持的语言之一。您需要在浏览器设置中更改首选语言。


When I execute commandLink action, the locale changes depending on which locale I have selected. But executing the action was one click, the second click on any other link of application is OK as well and when I click on any link of application for a third time, the text values are locaded from application_en.properties. It seems that locale changes somehow.

显然你改变了看法。您的操作方法仅更改当前 View 的语言环境。您需要确保从 LocaleBean 设置语言环境在<f:view>主模板或至少所有 View 。

<f:view locale="#{localeBean.lang}">

另见:

关于java - 国际化 JSF 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com