相关疑难解决方法(0)

我应该将java.text.MessageFormat用于没有占位符的本地化消息吗?

我们正在为在Java 5上运行的Web应用程序本地化用户界面文本,并且我们如何输出在属性文件中定义的消息(java.util.Properties使用的类型)的困境.

某些消息包含将使用java.text.MessageFormat填充的占位符.例如:

search.summary = Your search for {0} found {1} items.
Run Code Online (Sandbox Code Playgroud)

MessageFormat很烦人,因为单引号是一个特殊字符,尽管在英文文本中很常见.您必须输入两个文字单引号:

warning.item = This item''s {0} is not valid.
Run Code Online (Sandbox Code Playgroud)

但是,应用程序1000个左右的消息中有四分之三不包含占位符.这意味着我们可以直接输出它们,避免使用MessageFormat,并保留单引号:

help.url = The web page's URL
Run Code Online (Sandbox Code Playgroud)

问题:我们应该为所有消息使用MessageFormat,以获得一致的语法,还是尽可能避免使用MessageFormat,因此大多数消息都不需要转义?

无论哪种方式都有明显的优点和缺点.

请注意,MessageFormat的API文档确认了该问题,并提出了一个非解决方案:

遗憾的是,在消息格式模式中使用引号的规则显示有些令人困惑.特别是,对于本地化者来说,单引号是否需要加倍并不总是显而易见的.确保通知本地化程序有关规则,并告诉他们(例如,通过使用资源包源文件中的注释)MessageFormat将处理哪些字符串.

java localization messageformat

11
推荐指数
1
解决办法
5997
查看次数

标签 统计

java ×1

localization ×1

messageformat ×1