[英]Setting locales in gwt.xml do not work
In my module xml file I have this: 在我的模块xml文件中,我有这个:
<module rename-to="UIGenerator">
<inherits name="com.google.gwt.http.HTTP" />
<inherits name="com.google.gwt.xml.XML" />
<inherits name="com.google.gwt.i18n.I18N" />
<inherits name="com.google.gwt.i18n.CldrLocales" />
<set-configuration-property name="locale.useragent"value="Y" />
<extend-property name="locale" values="de" />
<extend-property name="locale" values="fr" />
<set-property name="locale" value="de, fr" />
<set-property-fallback name="locale" value="de" />
<entry-pointclass="mypackage.UIGeneratorEntryPoint" />
</module>
But every time when I try to use locales it returns me default one which is English. 但每当我尝试使用语言环境时,它都会返回默认的英语。
LocaleInfo.getAvailableLocaleNames(); this return Array of String with only one value - default
IF I set It works but only for German without others! 如果我设置它可以工作,但只有德国没有其他人!
Thank you in advance! 先感谢您!
I got an error while running application because of invalid your gwt.xml. 由于gwt.xml无效,我在运行应用程序时出错。
[Fatal Error] :13:53: Element type "set-configuration-property" must be followed by either attribute specifications, ">" or "/>".
put a space before value
as shown below: 在
value
之前放置一个空格,如下所示:
<set-configuration-property name="locale.useragent" value="Y" />
I have posted a answer in the same context. 我在相同的背景下发布了一个答案。
Please have a look at How do I set locale to GWT DateBox 请查看如何将语言环境设置为GWT DateBox
Screenshot for German(de)
locale: German(de)
语言环境的屏幕截图:
Screenshot for French(fr)
locale: French(fr)
语言环境的屏幕截图:
Complete Code: 完整代码:
Note: just change com.gwt.test.client.GWTTestProject
it with you actual Entry Point clas in your gwt.xml file. 注意:只需将
com.gwt.test.client.GWTTestProject
更改为gwt.xml文件中的实际入口点条。
gwt.xml gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.0//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/2.5.0/distro-source/core/src/gwt-module.dtd">
<module rename-to='gwttestproject'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<inherits name="com.google.gwt.http.HTTP" />
<inherits name="com.google.gwt.xml.XML" />
<inherits name="com.google.gwt.i18n.CldrLocales" />
<inherits name='com.google.gwt.user.theme.clean.Clean' />
<inherits name="com.google.gwt.i18n.I18N" />
<set-configuration-property name="locale.searchorder"
value="cookie,queryparam" />
<set-configuration-property name="locale.useragent"
value="Y" />
<extend-property name="locale" values="de" />
<extend-property name="locale" values="fr" />
<set-property name="locale" value="de, fr" />
<set-property-fallback name="locale" value="de" />
<!-- Specify the app entry point class. -->
<entry-point class='com.gwt.test.client.GWTTestProject' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
</module>
Entry Point class 入口点类
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DefaultDateTimeFormatInfo;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_de;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_en;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_es;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_fr;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_ru;
import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_zh;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.datepicker.client.DateBox;
public class GWTTestProject implements EntryPoint {
public static final native String getLanguage() /*-{
return navigator.language;
}-*/;
public void onModuleLoad() {
System.out.println(Arrays.toString(LocaleInfo.getAvailableLocaleNames()));
loacleDate();
}
public void loacleDate() {
Map<String, DefaultDateTimeFormatInfo> formats = new HashMap<String, DefaultDateTimeFormatInfo>();
DefaultDateTimeFormatInfo formatDE = new DateTimeFormatInfoImpl_de();
DefaultDateTimeFormatInfo formatEN = new DateTimeFormatInfoImpl_en();
DefaultDateTimeFormatInfo formatFR = new DateTimeFormatInfoImpl_fr();
DefaultDateTimeFormatInfo formatES = new DateTimeFormatInfoImpl_es();
DefaultDateTimeFormatInfo formatZH = new DateTimeFormatInfoImpl_zh();
DefaultDateTimeFormatInfo formatRU = new DateTimeFormatInfoImpl_ru();
formats.put("de", formatDE);
formats.put("en", formatEN);
formats.put("fr", formatFR);
formats.put("es", formatES);
formats.put("zh", formatZH);
formats.put("ru", formatRU);
for (String key : formats.keySet()) {
System.out.println(key + " - " + formats.get(key).dateFormat());
}
String language = getLanguage();
DefaultDateTimeFormatInfo format = formats.get(language);
DateTimeFormat dateFormat = null;
if (format == null) {
dateFormat = DateTimeFormat.getFormat(LocaleInfo.getCurrentLocale()
.getDateTimeFormatInfo().dateFormatShort());
} else {
dateFormat = DateTimeFormat.getFormat(format.dateFormatFull());
}
System.out.println("Date formatted:" + dateFormat.format(new Date()));
DateBox dateBox = new DateBox();
dateBox.setFormat(new DateBox.DefaultFormat(dateFormat));
RootPanel.get().add(dateBox);
}
}
HTML HTML
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="GWTTestProject.css">
<title>Web Application Starter Project</title>
<script type="text/javascript" language="javascript"
src="gwttestproject/gwttestproject.nocache.js"></script>
</head>
<body>
</body>
</html>
Make sure that you set the locale for your app - either in HTML, or through a URL parameter. 确保为应用程序设置区域设置 - 以HTML格式或通过URL参数。 For example, you can include this in your HTML:
例如,您可以在HTML中包含此内容:
<meta name="gwt:property" content="locale=de">
Also, remove these lines: 另外,删除这些行:
<set-configuration-property name="locale.useragent"value="Y" />
<set-property name="locale" value="de, fr" />
I am following the examples offered in GWT guide , and I never had a problem with locales. 我正在关注GWT指南中提供的示例,我从未遇到过语言环境问题。
First keep in mind that i18n locale do not work well under gwt: run-codeserver
, so you must tested after full compilation. 首先请记住,i18n语言环境在
gwt: run-codeserver
下gwt: run-codeserver
不正常 ,因此必须在完全编译后进行测试。
And there is no reason for this two lines, just eliminate them to make it work: 并没有理由这两行,只是消除它们使其工作:
<set-configuration-property name="locale.useragent"value="Y" />
<set-property name="locale" value="de, fr" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.