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

Browser 为什么GWT忽略浏览器区域设置?,browser,gwt,Browser,Gwt,GWT从locale属性或locale查询字符串获取locale。如果两者都未指定,则使用“默认”(即en_US)区域设置 为什么它不能从浏览器设置中获取它 似乎唯一的解决方案是用类似JSP的东西替换静态html启动页面,该JSP读取浏览器区域设置并使用查询字符串设置区域设置或重定向。必须有比这更好的解决方案,或者简单地对区域设置进行硬编码,当然?如果将可用语言列表放入*.gwt.xml文件中,默认情况下将切换到列出的第一种语言 <!-- Slovenian in Slovenia --&

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

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


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

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

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

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

您也可以将此开关置于*.gwt.xml文件中

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

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

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


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

如果您的输入页面是JSP,您可以检查请求的
接受语言
标题以动态设置区域设置。

您可以使用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上的值。

将此项添加到*.gwt.xml文件中以查看效果

请检查以下行以了解更多信息


这对我有效,我希望对你也有效

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

下面是一个例子:


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

  • 作为URL查询中的参数
  • 从饼干
  • 作为HTML页面中的元值
  • 从浏览器发送的HTTP头

  • 我在这里添加了en_AU作为唯一的扩展属性,它仍然默认为“default”。需要使用locale查询参数或标记才能将其实际发送到en_AU。我无法想象仅仅是“恩”会有什么不同,但即使是这样,也无济于事。我不想伤害我们。