Tag: messageformat

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

我们正在为在Java 5上运行的Web应用程序本地化用户界面文本,并且我们如何输出在属性文件中定义的消息( java.util.Properties使用的类型)的困境。 某些消息包含将使用java.text.MessageFormat填充的占位符。 例如: 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将处理哪些字符串。

具有适当复数的Java国际化(i18n)

我打算使用Java的标准i18n系统和复数forms的ChoiceFormat类,但后来意识到它不能处理某些语言的复杂多元规则(例如波兰语)。 如果它只处理类似于英语的语言,那么它似乎有点无意义。 有什么选择来实现正确的复数forms? 使用它们的优点和缺点是什么?

如何使用JTable使用MessageFormat打印多个标题行

我有一个名为table ,它填充了数据,我还有一个MessageFormat头我想用作头来打印JTable这是MessageFormat : MessageFormat header = new MessageFormat(“Product: ” + task.getProductName() + ” Job: ” + task.getJobNumber() + ” Task: ” + task.getTaskID() ); 我想在标题中打印3行,一行用于Product,Job和Task 我打印这个table的方式是这样的: table.print(JTable.PrintMode.FIT_WIDTH, header, null); 我似乎无法弄清楚如何在3个单独的行中打印标题,我尝试使用\n创建一个新行,但这似乎不起作用。