【问题标题】:GWT i18n, change metaTag and reload applicationGWT i18n,更改 metaTag 并重新加载应用程序
【发布时间】:2013-01-16 16:55:06
【问题描述】:

我正在尝试国际化我的 GWT 应用程序。

我阅读了教程并查看了一些示例。

有没有办法在不添加标签“?locale=de”的情况下更改语言

我的目标是在菜单登录屏幕上,用户选择语言,然后重新加载。 我设法通过将语言环境添加到 url 来做到这一点。[对我来说丑陋的方式]

我在读到 Html 文件中的元标记是可能的。 所以我试图把它放在 html 文件中

它以该语言加载,但我无法再更改该语言。

是否可以仅使用元标记来更改语言?

在代码中,我可以读取和更改元标记值,但是当我刷新时,我所做的更改会丢失

    NodeList<Element> tags = Document.get().getElementsByTagName("meta");
    for (int i = 0; i < tags.getLength(); i++) {
        MetaElement metaTag = ((MetaElement) tags.getItem(i));
        System.out.println("metaTag.getName() = " + metaTag.getName());
        System.out.println("metaTag.getContent = " + metaTag.getContent());
        if (metaTag.getName().equals("gwt:property")) {
            metaTag.setContent("locale=de");
        }
    }
    Window.Location.reload();

【问题讨论】:

  • 据我所知,gwt 会加载一组特定于所选语言环境的 js 文件。这就是为什么需要重新加载并且无法进行动态更改的原因。

标签: html gwt localization internationalization


【解决方案1】:

您可以使用 cookie 来读取/写入有关您的语言环境的信息,而不是元标记或 url。

在您的 .gwt.xml 文件中

<set-configuration-property name="locale.cookie"
    value="GWT_LOCALE" />

在你的 java 代码中读取语言环境信息

final String cookieName = LocaleInfo.getLocaleCookieName();
String cookie = Cookies.getCookie( cookieName );

在你的 java 代码中编写语言环境信息

private void setLocaleCookie( String locale )
{
    final String cookieName = LocaleInfo.getLocaleCookieName();
    if ( cookieName != null )
    {
        Date expires = new Date();
        expires.setYear( expires.getYear() + 1 );
        Cookies.setCookie( cookieName, locale, expires );
    }
    if ( !control )
    {
        com.google.gwt.user.client.Window.Location.reload();
    }
}

另作参考

1) https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

2) http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html

【讨论】:

  • 实际上,在调用 onModuleLoad() 之前,GWT 会读取“locale.cookie”属性。将查找并加载 cookie(如果存在) - 因此应用程序将在加载时进行本地化,无需额外操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
相关资源
最近更新 更多