【发布时间】:2016-02-26 18:26:59
【问题描述】:
我想知道当客户访问我的网站时使用什么语言,但我不知道该怎么做。大多数解决方案似乎有点过时,例如ClientLocation.
确定使用哪种语言以及如何使用 GWT 的最佳方法是什么?
我知道我可以从 servlet 获取客户端 IP,但如果我这样做,我不确定如何实际定位用户。
【问题讨论】:
我想知道当客户访问我的网站时使用什么语言,但我不知道该怎么做。大多数解决方案似乎有点过时,例如ClientLocation.
确定使用哪种语言以及如何使用 GWT 的最佳方法是什么?
我知道我可以从 servlet 获取客户端 IP,但如果我这样做,我不确定如何实际定位用户。
【问题讨论】:
最好的方法是从浏览器中发现要使用的语言环境。您应该关注documentation,并使用此属性:
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/>
您可以在the module definition 中查看 i18n 的所有可设置属性。默认情况下,GWT 使用此代码来确定用户代理语言环境,您可以使用新的属性提供程序更改它,或者使用服务器端发现:
var language = navigator.browserLanguage ? navigator.browserLanguage : navigator.language;
if (language) {
var parts = language.split(/[-_]/);
if (parts.length > 1) {
parts[1] = parts[1].toUpperCase();
}
locale = parts.join(\"_\");
}
如果您想发现用户的国家/地区/位置,您可以从 servlet 中使用 GeoIP 数据库。这种数据库具有从 IP 到国家/州/城市的映射。它通常易于使用并集成到应用程序中。参见例如Maxmind GeoIP Database。
【讨论】:
LocalInfo.getCurrentLocale(),但我似乎无法获得国家代码或更重要的语言之类的东西..