GWT i18n,更改metaTag并重新加载应用程序

时间:2013-01-16 16:55:06

标签: html gwt localization internationalization

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

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

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

我的目标是在菜单登录屏幕上,用户选择语音,然后重新加载。 我设法通过在网址中添加区域设置来实现这一点。[对我来说很丑陋]

我读到Html文件中可能有meta标签。 所以我试着把它放在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();

1 个答案:

答案 0 :(得分:6)

您可以使用Cookie来读取/写入有关您的语言区域的信息,而不是元标记或网址。

在.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