如何检测EntryPoint SmartGWT中的浏览器语言

时间:2013-08-23 11:11:00

标签: gwt internationalization smartgwt

我正在使用SmartGWT开发一个项目,我想让它变得国际化,但是如何在我的EntryPoint(onModuleLoad)中了解浏览器的语言? 我在服务器端使用Spring,在我的onModuleLoad中我向我的服务发送RPC调用,该服务从属性文件中收集数据并使用Map包含所有我的键值进行国际化响应,因此在创建IU Widgets时我正在使用像我这样的地图lables.get(“myLabel”)。 现在每个人都工作正常,我想检测浏览器的语言,并用它来查询正确的属性。 对不起,如果我的英语太差了

3 个答案:

答案 0 :(得分:1)

com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()

答案 1 :(得分:1)

然后我以一个肮脏的解决方案结束,我创建了一个javascript函数,因为Lt_Shade告诉我,它放了navigator.language,然后我在我的EntryPoint中检索它,感谢Document对象,问题是当我运行IE或FireFox,EntryPoint在我的HTML页面之前运行,所以在我的Javascript函数之前我找不到我的navigator.language,所以我做的是创建一个JSNI函数,在我的EntryPoint中调用我的javascript对象(从java调用Javascript函数:gwt所以我强调并坚持打电话然后我确定我的navigator.language已加载,我可以检索它。

在我的HTML页面

....
<script language="javascript">
    function loadLocaleLanguage(){
        document.getElementById("localeLanguage").setAttribute("value",(navigator.language).substring(0,2); // I don't need Country code
    }
</script>
...
<input type="hidden" id="localeLanguage" value="" />
....

在我的EntryPoint中

public static native void getLocaleLanguage() /*-{
      $wnd.loadLocaleLanguage();
}-*/;

public void onModuleLoad(){
    // I call my javascript function to ensure that the input have my localeLanguage
    getLocaleLanguage();
    // now I'm retreiving it using DOM thanks to Document object
    String localeLanguage = Document.get().getElementById("localeLanguage").getAttribute("value");
    ....
}

我确信这不是最好的解决方案,但至少它有效 如果有人可以帮我找到如何在EntryPoint中访问httpRequest(它包含accept语言)或者直接访问EntryPoint中的navigator.language,它会更好。 谢谢你们

答案 2 :(得分:0)

我不确定这是否有帮助,但是有一个像这样的问题,其中包含一些用于在Java servlet中获取语言的java代码。

Automatically selecting country and language for user in Java Servlet

你也可以尝试在你的EntryPoint中添加一个类似

的JavaScript函数
var userLang = (navigator.language) ? navigator.language : navigator.userLanguage; 
alert ("The language is: " + userLang);