這是我第一次開發一個需要本地化爲20多種語言的應用程序。問題是有很多消息包含一個變量。它不能被硬編碼,因爲如果它改變了,管理員將不得不在20個以上的屬性文件中進行修改。如何處理消息包中變量的存在(本地化)
有沒有已知的可能性如何處理它?我目前正在使用spring框架。
這是我第一次開發一個需要本地化爲20多種語言的應用程序。問題是有很多消息包含一個變量。它不能被硬編碼,因爲如果它改變了,管理員將不得不在20個以上的屬性文件中進行修改。如何處理消息包中變量的存在(本地化)
有沒有已知的可能性如何處理它?我目前正在使用spring框架。
一種方法可能是用標記替換變量並使用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。
這裏有一個教程:http://download.oracle.com/javase/tutorial/i18n/format/messageintro.html – McDowell 2011-01-10 14:52:55