我的问题是以下内容:GWT gwt i18n杜松子酒模块
我得到一个应用程序与GWT运行。 在应用程序启动时,加载一个扩展AbstractGinModule或另一个GWTClientModule的GWTClientModule。
基于那个开关我想设置本地。 有没有办法做如下设置本地不直接以html:
<meta name="gwt:property" content="locale=fr">
而是直接在选择GWTClientModule之一?
非常感谢你的善意帮助;-)
我的问题是以下内容:GWT gwt i18n杜松子酒模块
我得到一个应用程序与GWT运行。 在应用程序启动时,加载一个扩展AbstractGinModule或另一个GWTClientModule的GWTClientModule。
基于那个开关我想设置本地。 有没有办法做如下设置本地不直接以html:
<meta name="gwt:property" content="locale=fr">
而是直接在选择GWTClientModule之一?
非常感谢你的善意帮助;-)
你不能这样做,如果你使用static String internationalization,因为它使用deferred binding:GWT编译器生成每个区域的一个JavaScript文件,而当你的页面加载,在加载适当版本的代码之前,GWT引导脚本在页面(或URL中)内查找“locale”属性。
选择编程语言环境(您GWTClientModule内)是不可能的,因为你的代码的本地化版本已经一次加载代码执行...
如果你真的需要在运行时选择的语言环境,你可能想看看dynamic String internationalization,但它性能较差,你失去了静态类型检查。
感谢您的回复。我将首先看到动态的String国际化。或者我可以在构建过程中替换.properties文件。无论如何,感谢您的解释:-) – AbstractMan 2010-10-13 07:43:21
当您在构建期间讨论替换.properties文件时,我必须问:您的最终目标是什么?你只是想编译一个特定的区域? 因为您可以通过将以下内容添加到Module.gwt.xml中来实现这一点:
我们在此基于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>
它看起来如果对应于区域设置META标记未设定,如果没有它查找浏览器语言,并添加适当的meta标签,EG:
<meta name="gwt:property" content="locale=fr">
显然只有两种方法来指定区域设置:1 /在主机页面我们定义。 2 /在网址中加入“?locale = fr”。真的吗?服务器端或使用web.xml或gwtclientmodule或其他方式都不可能... – AbstractMan 2010-10-12 15:23:10