我尝试使用 LocaleInfo 类和 getCurrentLocale() 方法获取客户端上的当前语言环境。但是,无论我在客户端计算机上有什么区域和语言环境设置,它总是返回值默认语言环境。
Date 类 toLocaleString() 方法返回特定于区域设置的字符串,但 LocaleInfo 似乎无法获取系统区域设置。
要让您的 GWT 应用程序自动检测您的语言环境,只需将您的基本 index.html 文件(包含“nocache.js”脚本的文件)重命名为 index.jsp 并将以下行添加到该部分:
<meta name="gwt:property" content="locale=<%=request.getLocale()%>">
GWT 的语言环境不会自动从系统/浏览器设置中获取。根据GET 语言环境文档,可以通过以下两种方式之一设置运行时使用的语言环境:
locale
通过在应用程序的 URL 中指定请求参数。IEhttp://www.myapplication.com/?locale=es
通过在主机页面中包含gwt:property
元标记:
<meta name="gwt:property" content="locale=es" />
这是生产应用的首选方法。您的主机页面可以通过多种方式确定用户的语言环境,包括但不限于允许用户配置本地或根据Accept-Language
请求标头检测他们的首选语言环境。
在 JavaScript 中准确获取用户的语言环境几乎是不可能的,因此 GWT 甚至没有尝试 [1]。
LocaleInfo
返回有关您在应用程序中编译的语言环境中选择的语言环境的信息;也就是说,您<extend-property name="locale" ... />
在*.gwt.xml
.
请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale
[1] 好吧,在最近的版本中,它确实尝试(使用浏览器的编译时语言环境),但只选择其中一个编译的语言环境,因此不会改变LocaleInfo
.