GWT动态字符串i18n与uibinder

时间:2012-01-11 09:15:08

标签: java gwt internationalization

我正在尝试使用动态字符串i18n将使用GWT UI Binder运行的应用程序国际化。 UI绑定器是否支持动态字符串i18n?请告诉我这是否可行。

3 个答案:

答案 0 :(得分:1)

  

UiBinder模板可以标记为本地化。你用的是   <ui:msg><ui:attribute>元素表示哪些部分   应该翻译模板,然后提供属性文件   构建应用时的消息的本地化版本。   More关于它

<强>更新 看到这个GWT Dynamic String Internationalization,我想你可以从那里找到解决方案。

答案 1 :(得分:0)

要回答您的问题 - 是,UI Binder支持i18n 。请参阅可用文档herehere。为了支持我的主张,这里是直接引用:

  

UiBinder ......直接支持国际化,与GWT的i18n设施配合良好;

您只需使用指定的语言环境制作一些* .properties文件,在gwt-xml中启用i18n模块,创建一个接口,可以在Java代码和ui-xml文件中访问方法(返回String)。

答案 2 :(得分:0)

我们使用Dictionary完成了这项工作。基本上,您使用动态主机页面(例如jsp)在主机页面中动态创建常量。要在UiBinder中使用它们你几乎没有选择,但最直接的是围绕字典创建包装类,例如

package org.gwt.dictionary.test

public class CurrentTheme {

    Dictionary theme = Dictionary.getDictionary("CurrentTheme");

    public String highlightColor() {
        return theme.get("highlightColor");
    }

    public String shadowColor() {
        return theme.get("shadowColor");
    }

    public String errorColor() {
        return theme.get("errorColor");
    }

    public String errorIconSrc() {
        return theme.get("errorIconSrc");
    }

    public String errorLabel() {
        return theme.get("errorLabel");
    }

    public String someTextContent() {
        return theme.get("someTextContent");
    }
}

然后你可以在gwt.xml中使用它,就像这样

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:with field="themeConstants" type="org.gwt.dictionary.test.CurrentTheme"/>
    <g:HTMLPanel>
        <g:Label text="{themeConstants.errorLabel}" styleName="{themeConstants.errorColor}"/>
        <div class="aler alert-info"><ui:text from="{themeConstants.someTextContent}"/></div>
    </g:HTMLPanel>
</ui:UiBinder>

希望有所帮助