放置在资源包中时,撇号不会正确翻译。放置在资源包中时,撇号无法正确翻译
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
如果我格式化从java.util.ResourceBundle
上述关键可能是什么问题就在这里撇号可能会错过?
放置在资源包中时,撇号不会正确翻译。放置在资源包中时,撇号无法正确翻译
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
如果我格式化从java.util.ResourceBundle
上述关键可能是什么问题就在这里撇号可能会错过?
你应该逃避单引号
key = {0}''s brush is {1} centimeters tall
我强烈相信的,这个问题是不是的ressource束但MessageFormater您使用打印的邮件:
From MessageFormater java doc:
在一个字符串中,''(两个单引号)代表一个 单引号。一个QuotedString可以包含 任意字符,除了 单引号;周围的单个 报价被删除。 UnquotedString 可以包含任意字符 ,除了单引号和左括号 括号。因此,如果字符串 导致格式化消息 '{0}'可以写为'''{'0}'' 或'''{0}'''。
所以你需要写:
{0}''s brush is {1} centimeters tall
你需要加倍的单引号,即{0}“的刷{1}厘米高
在一个字符串中,“''”代表一个 单引号。一个QuotedString可以包含 任意字符,除了 单引号;周围的单个 报价被删除。 UnquotedString 可以包含任意字符 ,除了单引号和左括号 括号。因此,如果字符串应该为 或“'''{0}'''”,则应将格式为 的“{0}”格式的消息写入为“''''''''''”。
考虑使用属性编辑器插件(适用于Eclipse)
对于每个人都已经在Android的string.xml问题,请使用\ '\',而不是单引号。
添加到@拉尔夫的回答是: 你会意识到,这是一个MessageFormat
的事情,当你有一个像
text1=It's too late
与
text2={0}''s too late
text1
可能不会通过MessageFormater运行文本(例如,如果参数被传递,spring将使用不同的代码路径),而text2
会。 因此,如果您在text1
中使用了两个单引号,则它们可能会显示。所以你需要检查是否有参数被格式化,并相应地使用一个或两个单引号。
如果你完全卡住了,像我一样(以上都没有工作),你可以使用Unicode代替撇号:\ u0027。请记住,您始终可以在属性文件中使用UTF符号。
+1我自己遇到这个问题,并写了一篇关于它的小博客文章。也许它可以为运行此功能的用户提供更多信息:http://www.mscharhag.com/2013/10/single-quote-escaping-in-java-resource.html – micha 2013-10-04 17:30:15