9

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

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

非常感谢,朱塞佩

4

5 回答 5

13

我和你有同样的问题,但是因为我真的需要知道当前的语言环境(我正在请​​求第二台服务器来获取我想要本地化的数据),所以我找到了这个类: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale(). 那应该给你 GWT 目前使用的东西。

于 2009-08-27T19:12:19.443 回答
5

GWT 对国际化有很好的支持。请参阅此链接。i18nCreator命令可以帮助您设置国际化基础架构,类似于 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 自动为您实现接口。

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

希望这可以帮助您入门。

于 2008-09-02T20:25:26.623 回答
3

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

GWT 和语言环境

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

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

于 2008-08-19T19:18:40.690 回答
3

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

于 2010-12-18T03:39:20.007 回答
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"/>
于 2013-03-01T06:22:41.780 回答