如何在 MessageFormat 中使用单引号

AbV*_*Vog 8 java localization properties-file

在我当前的项目中,我们使用字符串的属性文件。然后使用 MessageFormat 对这些字符串进行“格式化”。不幸的是,MessagFormat 处理了单引号,这在使用大量撇号的语言(例如法语)中有点障碍。

例如,假设我们有这个条目

login.userUnknown=User {0} does not exist
Run Code Online (Sandbox Code Playgroud)

当这被翻译成法语时,我们得到:

login.userUnknown=L'utilisateur {0} n'existe pas
Run Code Online (Sandbox Code Playgroud)

这个,MessageFormat 不喜欢...

而我,不喜欢以下内容,即必须使用双引号:

login.userUnknown=L''utilisateur {0} n''existe pas
Run Code Online (Sandbox Code Playgroud)

我不喜欢它的原因是它到处都会导致拼写检查错误。

问题:我正在寻找以下说明的替代方法,即不需要双引号但仍使用位置占位符({0}、{1}...)的替代方法。还有什么我可以使用的吗?

MessageFormat.format(Messages.getString("login.userUnkown"), username);
Run Code Online (Sandbox Code Playgroud)

Nic*_*tto 5

不,没有其他方法,因为它是我们根据 javadoc 应该如何做的。

单引号本身必须由整个字符串中的双引号 '' 表示

作为解决方法,您可以使用replace("'", "''")以编程方式执行此操作,或者对于此特定用例,您可以使用撇号字符代替,这实际上比使用单引号更正确。