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