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