在我当前的项目中,我们使用属性文件作为字符串.然后使用MessageFormat“格式化”这些字符串.不幸的是,MessagFormat处理单引号会成为语言中的一个障碍,例如法语,它使用了大量的撇号.
例如,假设我们有这个条目
login.userUnknown=User {0} does not exist
当这被翻译成法语时,我们得到:
login.userUnknown=L'utilisateur {0} n'existe pas
这个,MessageFormat不喜欢……
我不喜欢以下内容,即必须使用双引号:
login.userUnknown=L''utilisateur {0} n''existe pas
我不喜欢它的原因是它在任何地方都会导致拼写错误.
问题:我正在寻找下面说明的替代方案,这是一种不需要加倍引号但仍使用位置占位符({0},{1} …)的替代方法.还有什么我可以使用的吗?
MessageFormat.format(Messages.getString("login.userUnkown"), username);
最佳答案 不,没有别的办法,因为根据javadoc,我们应该怎么做.
A single quote itself must be represented by doubled single quotes ” throughout a String
作为解决方法,您可以做的是使用replace(“’”,“””)以编程方式执行此操作,或者对于此特定用例,您可以使用撇号字符,即“它实际上比使用单个字符更正确”引用.