GWT动态本地化而不在URL中附加参数

时间:2013-03-14 22:18:46

标签: gwt internationalization

根据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中获取区域设置信息。是否可以这样做?

2 个答案:

答案 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应用程序。