1

根据 GWT 文档,有两种方法可以使我的 GWT 应用程序国际化。一种是通过标签在 HTML 本身中声明语言(硬编码)meta,另一种是在 URL 中使用查询参数(如&locale=de)。

我的 webapp 是动态的,来自不同地区的不同用户将使用它,所以第一个选项不可行。第二个选项很好,但不知何故,将查询参数附加到 URL 是我的宠儿。我试图通过做类似$("head).append("<meta name='gwt:property' content='locale=de'>");第一件事的事情来使其动态化onModuleLoad,但它不起作用。

我的应用程序实际上将是一个重定向,其他一些网页将包含一个重定向,例如foo.com&locale=de. 基于此,它将加载所需的语言环境。但在那之后,我想再次重新加载它而不在 URL 中显示查询参数,从可以在第一次加载时设置的 cookie 中获取语言环境信息。有可能这样做吗?

4

2 回答 2

3

还有第三个选项使用cookie.

参考 -动态生成内容的 GWT 国际化

在用户选择他的语言环境之前,请确保您为 cookie 设置了语言环境值或为您的 cookie 设置了默认值。在我们的例子中,用户在登录前选择一种语言(我在其中为用户设置 cookie 区域设置值)并在加载时将其读入 gwt 应用程序。

于 2013-03-15T03:32:20.863 回答
3

将参数添加到模型(在 a 中Controller)并在客户端(在 a 中*.jsp)获取它对您有用吗?

<meta name="gwt:property" content="locale=${locale}">  

然后你只需要刷新页面并重置控制器中的区域设置值。在您的页面中添加元标记代码html/jsp,它应该在页面加载之前存在。

onModuleLoad适用于已经加载到浏览器窗口的代码,因此meta加载后追加将不起作用。

于 2013-03-15T00:27:45.797 回答