如何在GWT应用程序上获取语言环境信息

时间:2008-08-19 18:48:11

标签: url gwt locale

在GWT中,我必须指定我的应用程序支持哪些语言环境。代码在各种文件中编译,每个文件位置一个(在其他版本旁边),但我必须为我的客户端提供一个唯一的URL。此URL应该是应根据浏览器首选的区域设置显示的页面。 我不想为语言环境提供HTTP参数,因为我想更糟糕的浏览器首选的语言环境。 如何在GWT中编码?

我应该尝试使用apache重写规则吗?我骗了它,但我认为我无法在重写规则中轻松访问这样的参数。

非常感谢, 朱塞佩

5 个答案:

答案 0 :(得分:13)

我遇到了和你一样的问题,但是我真的需要知道当前的语言环境(我要求第二台服务器提供我想要可本地化的数据)我找到了这个类: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()。这应该会给你GWT当前使用的内容。

答案 1 :(得分:5)

GWT对国际化有很好的支持。见linki18nCreator命令可以帮助您设置国际化基础架构,类似于projectCreator和applicationCreator设置GWT应用程序的方式。

如果你有需要国际化的静态字符串(即无效条目!),你不需要任何额外的标志来i18nCreator命令来创建属性文件和基础设施。

如果您有需要接受参数的字符串(即Hello {0}),则需要将-createMessages标志传递给i18nCreator命令以创建属性文件和基础结构。

现在您的模块需要在MyApplication.gwt.xml中包含i18n模块:

<inherits name="com.google.gwt.i18n.I18N"/>

在与扩展常量或消息的属性文件相同的包中定义Java接口,并定义所有返回字符串的方法(名称与属性条目匹配)。

MyConstants.properties包含:

errorMessage=Invalid Entry!

MyConstants.java包含:

import com.google.gwt.i18n.client.Constants;

public interface myConstants extends Constants {
    String errorMessage();
}

现在从您的应用程序访问这些国际化的字符串:

public class MyApplication implements EntryPoint {
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class);

    public void onModuleLoad() {
        final Label errorMessage = new Label(constants.errorMessage);
    }
}

GWT自动为您实现界面。

您可以以类似的方式获取消息。

希望这可以帮助您入门。

答案 2 :(得分:3)

除非我错误地阅读文档,否则我认为你不必做任何事情。

GWT and Locale

  

通过将locale设置为客户端属性,gwt.js中的标准启动过程会选择适当的应用程序本地化版本,从而提供易用性(它比听起来更容易!),优化的性能和最小的脚本大小。

我读它的方式,只要你的模块添加了所有的语言环境选择,它应该是自动的吗?

答案 3 :(得分:3)

检查此com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()

答案 4 :(得分:2)

<inherits name="com.google.gwt.i18n.I18N"/>

<!-- Use browser-specified locale for i18n -->
<set-configuration-property name="locale.useragent" value="Y"/>

<!-- Specify locales your application support -->
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="de_DE"/>
<extend-property name="locale" values="ru_RU"/>