我的问题如下:
我有一个运行GWT的应用程序。 在应用程序启动时,会加载一个扩展AbstractGinModule或另一个GWTClientModule的GWTClientModule。
基于那个开关我想设置本地。 有没有办法通过以下方式直接在.html中设置本地:
<meta name="gwt:property" content="locale=fr">
但是直接在一个选定的GWTClientModule中?
非常感谢您的帮助; - )
答案 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">