在GWT中,我必须指定我的应用程序支持哪些语言环境。代码在各种文件中编译,每个文件位置一个(在其他版本旁边),但我必须为我的客户端提供一个唯一的URL。此URL应该是应根据浏览器首选的区域设置显示的页面。 我不想为语言环境提供HTTP参数,因为我想更糟糕的浏览器首选的语言环境。 如何在GWT中编码?
我应该尝试使用apache重写规则吗?我骗了它,但我认为我无法在重写规则中轻松访问这样的参数。
非常感谢, 朱塞佩
答案 0 :(得分:13)
我遇到了和你一样的问题,但是我真的需要知道当前的语言环境(我要求第二台服务器提供我想要可本地化的数据)我找到了这个类:
com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()
。这应该会给你GWT当前使用的内容。
答案 1 :(得分:5)
GWT对国际化有很好的支持。见link。 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自动为您实现界面。
您可以以类似的方式获取消息。
希望这可以帮助您入门。
答案 2 :(得分:3)
除非我错误地阅读文档,否则我认为你不必做任何事情。
通过将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"/>