L10N:为什么应用默认语言

时间:2012-06-05 09:26:06

标签: java jsf-2 localization

在我的应用程序中,在Login page上,页面顶部有一个语言选项。

Language option

如果我选择中文,一切都会完美地翻译成中文。

Chinese

如果点击Refresh按钮或Ctrl + R,该页面仍为中文。但是,如果我打开另一个选项卡转到同一个网址,即使语言选项仍然显示已选择Chinese,所有内容都将再次为英文。

English again

尽管如此,如果您点击About usMethodology,下一页将会再次显示中文版本。

如果你能告诉我这里做错了什么,我将非常感激。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:2)

如何设置UIViewRoot的区域设置显然存在问题。

应该在主模板中通过<f:view locale>进行,如果您对所有其他页面都有这个权限,但主页没有这个权限。

E.g。

<!DOCTYPE html>
<html lang="#{localeBean.language}"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    ...
>
    <f:view locale="#{localeBean.locale}">
        <h:head>
            ...
        </h:head>
        <h:body>
            ...
        </h:body>
    </f:view>
</html>

其中#{localeBean}是一个@SessionScoped,其外观类似this

顺便说一下,这个问题表明这些页面不共享一个公共的主模板,而且你在这里和那里都在复制XHTML代码。我也会这样做:)