rgo*_*mes 1 html gwt localization internationalization
我正在尝试将我的GWT应用程序国际化.
我阅读了教程并看了一些例子.
有没有办法在不添加标签"?locale = de"的情况下进行语言更改
我的目标是在菜单登录屏幕,用户选择语言,然后重新加载.我设法通过在网址中添加区域设置来实现这一点.[对我来说很丑陋]
我正在阅读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();
Run Code Online (Sandbox Code Playgroud)
您可以使用cookie来读取/写入有关您的语言环境的信息,而不是元标记或网址.
在.gwt.xml文件中
<set-configuration-property name="locale.cookie"
value="GWT_LOCALE" />
Run Code Online (Sandbox Code Playgroud)
在你的java代码中读取区域设置信息
final String cookieName = LocaleInfo.getLocaleCookieName();
String cookie = Cookies.getCookie( cookieName );
Run Code Online (Sandbox Code Playgroud)
在你的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();
}
}
Run Code Online (Sandbox Code Playgroud)
另请参考
1)https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale
2)http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html