我正在使用 GWT 国际化消息。复数形式的文档说这应该有效:
@DefaultMessage("{0} {1,number} hours {2}")
@PluralText({"one", "an hour"})
String hours(String prefix, @PluralCount int count, String suffix);
好吧,它没有。无论count
它的价值如何DefaultMessage
(例如“1 小时前”)。如果我使用 .properties 文件,则相同:
hours[one]=an hour
hours[few]=some hours
hours={0} {1,number} hours {2}
文档或 GWT(我正在使用 GWT 2.0.3)或我是否有错误?如果前两者中的任何一个,有人知道解决方法吗?
编辑:这个谜团的更多线索。如果我不依赖默认语言环境处理,我可以让复数处理工作。也就是说,我需要:
在我模块的 gwt.xml 文件中:
<extend-property name="locale" values="en"/>
在我的消息扩展中:
@DefaultLocale("en")
public interface MyMessages extends Messages { ...
通过附加到 URL 显式加载“en”语言环境
&locale=en
请参阅http://groups.google.com/group/google-web-toolkit/browse_thread/thread/80ae300213cc6adb我已经交叉发布了这个问题。
编辑 2:我进入这个 GWT 复数领域的原因是我正在创建一个“GWT 人类可读的相对时间戳”模块。在 GitHub 上开源:http: //github.com/PEZ/GWT-Relative-Time请查看。它很快就会有正确的单数形式并支持某些语言。=)