在 GWT 中,我必须指定我的应用程序支持哪些语言环境。代码在各种文件中编译,每个语言环境一个(在其他版本旁边),但我必须给我的客户一个唯一的 URL。该 URL 应该是应该根据浏览器首选的语言环境显示的页面。我不想为语言环境设置 HTTP 参数,因为我想设置浏览器首选的语言环境。这如何在 GWT 中编码?
我应该尝试使用 apache 重写规则吗?我偷了它,但我认为我不能在重写规则中轻松访问这样的参数。
非常感谢,朱塞佩
我和你有同样的问题,但是因为我真的需要知道当前的语言环境(我正在请求第二台服务器来获取我想要本地化的数据),所以我找到了这个类:
com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()
. 那应该给你 GWT 目前使用的东西。
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 自动为您实现接口。
您可以通过类似的方式获取消息。
希望这可以帮助您入门。
除非我错误地阅读了文档,否则我认为您不必做任何事情。
通过将 locale 设置为客户端属性,gwt.js 中的标准启动过程会选择应用程序的适当本地化版本,从而提供易用性(它比听起来容易!)、优化的性能和最小的脚本大小。
我读它的方式,只要你的模块添加了所有的语言环境选择,它应该是自动的?
检查这个 com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()
<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"/>