在我的应用程序中,在Login page上,页面顶部有一个语言选项。
如果我选择中文,一切都会完美地翻译成中文。
如果点击Refresh
按钮或Ctrl + R
,该页面仍为中文。但是,如果我打开另一个选项卡转到同一个网址,即使语言选项仍然显示已选择Chinese
,所有内容都将再次为英文。
尽管如此,如果您点击About us
或Methodology
,下一页将会再次显示中文版本。
如果你能告诉我这里做错了什么,我将非常感激。
致以最诚挚的问候,
答案 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代码。我也会这样做:)