我在处理以多种语言显示文本时遇到了问题。我通过使用资源包相当容易地实现了该语言,但使问题变得更加复杂的是需要在运行时将某些计算值注入(inject)到文本中。
例如
You have earned 15 badges out of 39
其中 15 和 39 是在运行时计算的。
最初我通过在文本中添加占位符标签解决了这个问题,如下所示
badgeMessage_en=You have earned ${earned_badge} badges out of ${total_badge}
然后在运行时使用正则表达式替换它们。但现在的问题是我们需要添加对字符集中没有 ${
的其他语言的支持。我被困住了
我该怎么办?是否有一个在所有字符集中通用的占位符字符?
预先感谢您的帮助。
最佳答案
您应该看看 Java 的 MessageFormat类:
String pattern = resourceBundle.getString(key);
String message = MessageFormat.format(pattern, args);
MessageFormat
自动替换 {
和 }
之间的占位符
例如:
properties:
my.message=You have earned {0} badges out of {0}
Java:
String pattern = bundle.getString("my.message");
String message = MessageFormat.format(pattern, 15, 39); // You have earned 15 badges out of 39
MessageFormat
还支持更复杂的选项,例如格式化日期、时间或数字。
关于java - Java 中多种语言的文本占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409203/