我们正在本地化在 Java 5 上运行的 Web 应用程序的用户界面文本,并且对于如何输出在属性文件中定义的消息(使用的类型)遇到了困境。java.util.Properties http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html.
有些消息包含一个占位符,将使用以下方式填充java.text.MessageFormat http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html。例如:
search.summary = Your search for {0} found {1} items.
MessageFormat 很烦人,因为单引号是一个特殊字符,尽管它在英文文本中很常见。您必须输入两个作为文字单引号:
warning.item = This item''s {0} is not valid.
然而,该应用程序的 1000 条左右消息中有四分之三不包含占位符。这意味着我们可以直接输出它们,避免 MessageFormat,并保留单引号:
help.url = The web page's URL
问题:我们应该对所有消息使用 MessageFormat 以保持语法一致,还是尽可能避免使用 MessageFormat,以便大多数消息不需要转义?
两种方式显然都有优点和缺点。
请注意,MessageFormat 的 API 文档承认了该问题并提出了一个非解决方案:
使用引号的规则
不幸的是消息格式模式
已经显示出有些混乱。
特别是,它并不总是显而易见的
本地化人员是否使用单引号
是否需要加倍。确保
告知本地化人员有关规则的信息,
并告诉他们(例如,通过使用
资源包源码中的注释
文件)将处理哪些字符串
通过消息格式。
只需编写您自己的 MessageFormat 实现即可,无需此烦人的功能。你可以看一下代码SLF4J记录仪 http://www.slf4j.org/api/org/slf4j/Logger.html.
他们有自己的消息格式化程序版本,可以按如下方式使用:
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
空占位符可以与默认排序一起使用,并在不同语言对单词或句子部分进行排列的某些本地化情况下进行编号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)