【发布时间】:2011-09-26 03:12:39
【问题描述】:
我们在位于google.gwt.i18n.client 的单个属性文件LocalizableResource_xx.properties(每种语言一个)中定义所有国际化常量字符串。
这样可以通过常量接口访问Java代码中的常量
Window.alert(myConstants.helloWorld());
以及在 UiBinder 中使用它们.ui.xml
<ui:attribute key="some.key" name="text" description="useful info" />
如果字符串包含单引号 ('),则此方法效果不佳。这是因为 GWT 编译器在处理 .ui.xml 文件时会抛出 java.text.ParseException: Unterminated single quote:。如果我们对引号进行转义,即双引号(''),编译器会通过,但通过常量接口访问的字符串包含两个单引号(如You can''t do that)。
用 utf-8 编码 \u0027 替换单引号没有帮助(与上述相同的例外)。
是否有可能在 UiBinder 模板和 Java 代码中使用相同的属性文件而不会遇到烦人的单引号问题?
【问题讨论】:
-
你试过这样转义吗:\'?
-
(仅供参考:
java.util.Properties.load(Reader)的 Javadoc 说:“单引号和双引号不需要转义;但是,根据上面的规则,前面有反斜杠的单引号和双引号字符仍然产生分别是单引号和双引号字符。") -
@Paweł Dyda:是的,我试过了,但
java.text.ParseException仍然出现。 -
@Chris Lercher:感谢您的参考,但在我看来,这更有可能是与 GWT 相关的问题,与属性文件格式无关。
标签: gwt internationalization uibinder