正如标题所说,我需要帮助GWT的i18n与UiBinder一起使用。我想使用静态i18n将我的应用程序国际化。我用于学习的书只介绍了一种通过让编译器为常量/消息生成密钥和默认文件来国际化ui.xml文件的方法,但必须有一种更简单的方法。这就是为什么我尝试使用ui:with这样的标签来使用我的国际化常量(在upFace中):
<ui:with type="havis.ui.shared.resourcebundle.ConstantsResource" field="lang"></ui:with>
<g:ToggleButton ui:field="observeButton">
<g:upFace>{lang.observe}</g:upFace>
<g:downFace>Observing</g:downFace>
</g:ToggleButton>
这不起作用,按钮显示文本{lang.observe},这看似合乎逻辑,但现在我的问题是:有没有办法使用这样的常量?如果没有,有人可以解释我应该如何在UiBinder文件中使用常量(没有编译器生成文件和密钥)?
答案 0 :(得分:2)
随时随地接受HTML(例如T retrieve(int hashCode)
内),您可以使用upFace
,<ui:msg>
和<ui:text>
(在任何地方都可以使用纯文本,您可以使用{ {1}}和<ui:safehtml>
)。
所以在你的情况下:
<ui:msg>
关于<ui:text>
和<ui:with type="havis.ui.shared.resourcebundle.ConstantsResource" field="lang"></ui:with>
<g:ToggleButton ui:field="observeButton">
<g:upFace><ui:text from="{lang.observe}"/></g:upFace>
<g:downFace>Observing</g:downFace>
</g:ToggleButton>
,请参阅http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html#Hello_Text_Resources和http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html#Hello_Html_Resources。
答案 1 :(得分:0)
你可以使用这样的常量:
.ui.xml:
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
<ui:with field="constants" type="my.client.resources.AppResources.AppConstants"/>
<g:FlowPanel>
<g:Label text="{constants.label}"/>
</g:FlowPanel>
和AppResources界面:
public interface ApplicationResources extends ClientBundle {
public static final ApplicationConstants CONSTANTS = GWT.create(ApplicationConstants.class);
public interface ApplicationConstants extends com.google.gwt.i18n.client.Constants {
@DefaultStringValue("my label")
String label();
}
}
但对于i18n,你应该遵循GWT手册所说的,即那里 除了准备所有属性文件(每种语言一个)并生成所有必需的排列之外,没有其他(干净)方式。这主要是代表 到GWT所有与语言检测相关的东西,以及提供的解决方案 GWT在运行时表现很好。唯一的缺点是编译时间 更高一点(因为您将为您指定的每种语言的每个浏览器设置排列)。