GWT gwt i18n杜松子酒模块

时间:2010-10-12 15:04:26

标签: gwt internationalization guice

我的问题如下:

我有一个运行GWT的应用程序。 在应用程序启动时,会加载一个扩展AbstractGinModule或另一个GWTClientModule的GWTClientModule。

基于那个开关我想设置本地。 有没有办法通过以下方式直接在.html中设置本地:

<meta name="gwt:property" content="locale=fr">

但是直接在一个选定的GWTClientModule中?

非常感谢您的帮助; - )

2 个答案:

答案 0 :(得分:1)

如果使用static String internationalization,则不能这样做,因为它使用deferred binding:GWT编译器为每个语言环境生成一个JavaScript文件,并且在加载页面时,GWT引导脚本会查找在加载适当版本的代码之前,页面内(或URL中)的“locale”属性。

以编程方式(在GWTClientModule中)选择语言环境是不可能的,因为代码的本地化版本在代码执行后加载...

如果确实需要在运行时选择语言环境,可能需要查看dynamic String internationalization,但性能较差,并且会丢失静态类型检查。

答案 1 :(得分:0)

我们使用基于this的解决方法根据客户端浏览器语言设置区域设置。

只需将以下Javascript添加到.html:

<script type="text/javascript"> 
var search = location.search;  
if(search.indexOf("locale") == -1){  
    var lang = navigator.language!= null ? navigator.language : navigator.browserLanguage;  
    lang = lang.replace("-", "_");
    var metaTag = document.createElement('meta');
    metaTag.name = "gwt:property";
    metaTag.content = "locale=" + lang;
    document.getElementsByTagName('head')[0].appendChild(metaTag);
}
</script>

查看是否未设置与区域设置对应的元标记,如果不是,则查找浏览器语言并添加正确的元标记,EG:

<meta name="gwt:property" content="locale=fr">