GWT GWT i18n Gin模块

GWT GWT i18n Gin模块,gwt,internationalization,guice,Gwt,Internationalization,Guice,我的问题如下: 我有一个应用程序运行GWT。 在应用程序启动时,将加载一个扩展AbstractGinModule的GWTClientModule或另一个GWTClientModule 基于该开关,我想设置本地。 是否有一种方法可以通过以下操作直接在.html中设置local not: <meta name="gwt:property" content="locale=fr"> 但是直接在一个选定的GWTClientModule中 非常感谢您的帮助;-) 如果使用,则无法执行此操

我的问题如下:

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

基于该开关,我想设置本地。 是否有一种方法可以通过以下操作直接在.html中设置local not:

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

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


非常感谢您的帮助;-)

如果使用,则无法执行此操作,因为它使用:GWT编译器会为每个语言环境生成一个JavaScript文件,并且在加载页面时,GWT引导脚本会在页面(或URL)中查找“locale”属性,然后再加载相应版本的代码

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


如果您真的需要在运行时选择区域设置,您可能需要查看,但它的性能较低,并且会丢失静态类型检查。

如果使用,则无法执行此操作,因为它使用:GWT编译器会为每个区域设置生成一个JavaScript文件,并且在加载页面时,GWT引导脚本会查找“区域设置”属性,然后再加载相应版本的代码

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


如果您确实需要在运行时选择区域设置,您可能需要查看,但它的性能较低,并且会丢失静态类型检查。

我们在这里使用了一种基于的解决方法来根据客户端浏览器语言设置区域设置

只需将以下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>

var search=location.search;
如果(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);
}
它查看是否未设置与区域设置对应的元标记,如果未设置,则查找浏览器语言并添加适当的元标记,例如:

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

我们在这里使用了一种基于的解决方法,根据客户端浏览器语言设置语言环境

只需将以下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>

var search=location.search;
如果(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);
}
它查看是否未设置与区域设置对应的元标记,如果未设置,则查找浏览器语言并添加适当的元标记,例如:

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


显然,只有两种方法可以指定区域设置:1/在我们定义的主机页中。2/在url中放入“?locale=fr”。这是真的吗?在服务器端或使用web.xml或gwtclientmodule中不可能有其他方法,或者……显然,只有两种方法可以指定区域设置:1/在我们定义的主机页中。2/在url中放入“?locale=fr”。这是真的吗?在服务器端或使用web.xml或gwtclientmodule中不可能有其他方法,或者…谢谢您的帖子。我将第一眼看到动态字符串国际化。或者我可以在生成过程中替换.properties文件。无论如何,感谢您的解释:-)当您谈到在构建过程中替换.properties文件时,我不得不问:您的最终目标是什么?您只是想编译一个特定的语言环境吗?因为通过在Module.gwt.xml中添加以下内容,您可以轻松做到这一点:这里有更多信息:谢谢您的帖子。我将第一眼看到动态字符串国际化。或者我可以在生成过程中替换.properties文件。无论如何,感谢您的解释:-)当您谈到在构建过程中替换.properties文件时,我不得不问:您的最终目标是什么?您只是想编译一个特定的语言环境吗?因为您可以通过在Module.gwt.xml中添加以下内容轻松做到这一点:此处的更多信息:由于Etienne Neveu上面解释的原因,这对gwt不起作用。使用静态字符串国际化时,其他语言环境的文本根本不可用。它被硬编码到生成的HTML/JS中,GWT编译是为特定的排列生成的。我们在我工作的内部项目中使用了它,您尝试过吗?我很确定您没有使用静态字符串方法。由于Etienne Neveu上面解释的原因,这对GWT不起作用。使用静态字符串国际化时,其他语言环境的文本根本不可用。它被硬编码到生成的HTML/JS中,GWT编译是为特定的排列生成的。我们在我工作的内部项目中使用了它,你试过了吗?我很确定你没有使用静态字符串方法。