为什么GWT会忽略浏览器区域设置?

时间:2008-10-01 06:09:32

标签: browser gwt

GWT从locale属性或locale查询字符串中获取区域设置。如果两者都未指定,则使用“默认”(即en_US)区域设置。

为什么不从浏览器设置中获取它?

似乎唯一的解决方案是用JSP读取浏览器语言环境并使用查询字符串设置语言环境或重定向等替换静态html启动页面。必须有一个比这更好的解决方案,或者只是简单地对区域设置进行硬编码?

6 个答案:

答案 0 :(得分:6)

您也可以将此开关放在* .gwt.xml

<set-configuration-property name="locale.useragent" value="Y"/>

这将根据浏览器中选择的语言添加语言选择。您还可以通过设置

来控制区域设置的搜索顺序
  <set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/>

但请注意,在IE中这不起作用 - 您应该根据IE发送的“Accept-Language”标题开发服务器端语言选择。

答案 1 :(得分:3)

如果您将可用语言列表放入* .gwt.xml文件,它将默认切换到列出的第一种语言。

<!-- Slovenian in Slovenia -->
<extend-property name="locale" values="sl"/>

<!-- English language, independent of country -->
<extend-property name="locale" values="en"/>

答案 2 :(得分:1)

您可以使用Cookie来保存并发送此值,但为此您必须首先添加 * .gwt.xml

<set-configuration-property name="locale.cookie" value="yourCookieName"/>
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/>

请注意,“queryparam”在此处具有最大优先级,允许使用http查询设置新的区域设置,并忽略Cookie上的值。

答案 3 :(得分:0)

如果您的输入页面是JSP,您可以检查请求的Accept-Language标头以动态设置区域设置。

答案 4 :(得分:0)

* .gwt.xml 文件中添加此条目以查看效果!

请查看以下行以获取更多信息!

<set-configuration-property name="locale.useragent" value="Y"/>

答案 5 :(得分:0)

这对我有用,我希望它也适合你。

我的问题是我没有在.gwt.xml模块描述符中声明任何语言环境值。在这种情况下,仅使用默认语言环境。 GWT就是这样做的,因为任何不同的受支持语言环境都意味着新的编译迭代/置换。因此,只使用声明的语言环境。

这是一个例子:

<!-- Locales -->
<extend-property name="locale" values="en_US"/>
<extend-property name="locale" values="es"/>    
<set-property-fallback name="locale" value="en_US"/>
<set-configuration-property name="locale.useragent" value="Y" />
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent" />

第一行和第二行设置可用/支持的语言环境(英语来自美国和西班牙语,在我的示例中没有特定国家/地区)。如果没有检测到任何一个,第三行设置默认语言环境(必须在extend-property行中声明默认值后设置此默认声明)。第四行通过浏览器发送的HTTP-Headers Accept-Language启用区域设置检测(可能默认启用,根本不需要设置)。最后一行设置了不同检测机制尝试检测语言环境的顺序:

  1. 作为网址查询中的参数
  2. 来自cookies
  3. 作为HTML页面中的元数据
  4. 来自浏览器发送的HTTP标头