根据GWT文档,有两种方式可以使我的GWT应用程序国际化。一种是,通过meta
标签在HTML本身(硬编码)中声明语言,另一种是在URL中使用查询参数(如&locale=de
)。
我的webapp是动态的,来自不同语言环境的不同用户将使用它,因此第一个选项不可行。第二个选项很好,但不知何故,将查询参数附加到URL是我的烦恼。我尝试通过在$("head).append("<meta name='gwt:property' content='locale=de'>");
上执行类似onModuleLoad
的第一件事来使其变得动态,但它不起作用。
我的应用程序实际上是重定向,其他一些网页将包含重定向,如foo.com&locale=de
。基于此,它将加载所需的区域设置。但之后,我想重新加载它而不在URL中显示查询参数,从第一次加载中设置的cookie中获取区域设置信息。是否可以这样做?
答案 0 :(得分:3)
将参数添加到模型中(在Controller
中)并在客户端上(在*.jsp
中)将其提取对您有用吗?
<meta name="gwt:property" content="locale=${locale}">
然后,您只需刷新页面并重置控制器中的区域设置值即可。在html/jsp
页面中添加元标记代码,它应该在页面加载之前存在。
onModuleLoad
适用于已加载到浏览器窗口的代码,因此加载后附加meta
将无效。
答案 1 :(得分:3)
cookie
有第三种选择。参考 - GWT Internationalization for dynamically generated content
确保在用户选择其语言环境之前,将语言环境值设置为cookie或具有cookie的默认值。在我们的例子中,用户在登录前选择一种语言(我为用户设置了cookie语言环境值)并在加载时将其读入gwt应用程序。