spring支持資源文件國際化

1.spring對國際化支持

國際化支持在實際開發中可能是最常用的特性。對於一個需要支持不同語言環境的應用而言,我們所採取的最常用的策略一般是通過一個獨立的資源文件(如一個properties文件)完成所有語言信息(如界面上的提示信息)的配置,Spring對這種傳統的方式進行了封裝,並提供了更加強大的功能,如信息的自動裝配以及熱部署功能(配置文件修改後自動讀取,而無需重新啓動應用程序) ,下面是一個典型的示例:

 

<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<value>myres</value>
			</list>
		</property>
</bean>
</beans>

 這裏聲明瞭一個名爲messageSource的Bean(注意對於Message定義,Bean ID必須爲messageSource,這是目前Spring的編碼規約) ,對應類爲ResourceBundleMessageSource,目前Spring中提供了兩個MessageSource接口的實現,即ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,後者提供了無需重啓即可重新加載配置信息的特性。

在配置節點中, 我們指定了一個配置名“messages”。 Spring會自動在CLASSPATH根路徑中按照如下順序搜尋配置文件並進行加載(以Locale爲zh_CN爲例): 

messages_zh_CN.properties ,messages_zh.properties ,messages.properties ,messages_zh_CN.class,messages_zh.class ,messages.class 

(Spring實際上調用了JDK的ResourceBundle讀取配置文件,相關內容請參見JDK文檔)

 

示例中包含了兩個配置文件,內容如下:

messages_zh_CN.properties:

userinfo=當前登錄用戶: [{0}]  登錄時間:[{1}]

messages_en_US.properties:

userinfo=Current Login user: [{0}]Login time:[{1}]

 

我們可以通過下面的語句進行測試:

ApplicationContext ctx=new FileSystemXmlApplicationContext("bean.xml"); 
Object[] arg = newObject[]{ "Erica", Calendar.getInstance().getTime()}; 
//以系統默認Locale加載信息(對於中文WinXP而言,默認爲zh_CN)
String msg = ctx.getMessage("userinfo", arg); 
System.out.println("Message is ===> "+msg)

如果輸出產生亂碼,可能是因爲轉碼的時候出現異常(在eclipse中資源文件可以直接輸入中文,自動轉碼,但是在外邊通過記事本編輯輸入中文是,轉碼就會出現異常),比較簡單的解決辦法是通過JDK提供的轉碼工具native2ascii.exe進行轉換。

native2ascii -encoding UTF-8 messages_zh_CN.properties mys.txt

 把mys.txt替換成messages_zh_CN.properties,運行ok!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章