如何处理消息包中变量的存在(本地化)

问题描述:

这是我第一次开发一个需要本地化为20多种语言的应用程序。问题是有很多消息包含一个变量。它不能被硬编码,因为如果它改变了,管理员将不得不在20个以上的属性文件中进行修改。如何处理消息包中变量的存在(本地化)

有没有已知的可能性如何处理它?我目前正在使用spring框架。

+1

这里有一个教程:http://download.oracle.com/javase/tutorial/i18n/format/messageintro.html – McDowell 2011-01-10 14:52:55

一种方法可能是用标记替换变量并使用String.Format方法(http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object ...))或其他类型的Formatter进行相应替换。

虽然我自己刚刚进入Spring并怀疑它可以提供更优雅的解决方案,但目前我会使用字符串格式化程序在运行时用变量值替换占位符。

看看org.springframework.context.MessageSource。有各种各样的getMessage()方法,使用{0}{1}语法,可以使用Object []可用于变量替换。

有关更多信息,请参阅Spring手册的Section 3.13.1