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

9 url gwt locale

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

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

非常感谢,朱塞佩

小智 13

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


Llo*_*olz 5

GWT对国际化有很好的支持.看到这个链接.该i18nCreator命令可以帮助您设置了类似projectCreator和applicationCreator建立GWT应用程序的方式国际化的基础设施.

如果您有需要国际化的静态字符串(即无效条目!),则不需要任何其他标志来使用i18nCreator命令来创建属性文件和基础结构.

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

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

<inherits name="com.google.gwt.i18n.I18N"/>
Run Code Online (Sandbox Code Playgroud)

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

MyConstants.properties包含:

errorMessage=Invalid Entry!
Run Code Online (Sandbox Code Playgroud)

MyConstants.java包含:

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

public interface myConstants extends Constants {
    String errorMessage();
}
Run Code Online (Sandbox Code Playgroud)

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

GWT自动为您实现界面.

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

希望这可以帮助您开始.


Mic*_*rek 3

除非我错误地阅读了文档,否则我认为您不需要做任何事情。

GWT 和区域设置

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

按照我的理解,只要你的模块添加了所有区域设置选项,它就应该是自动的?