Spring使用MessageSource介面做為i18n資訊的存取介面,
而且ApplicationContext即實作了MessageSource介面,
只需要在bean-config.xml裡加上MessageSource的bean即可。
ApplicationContext在啟動時會自動尋找bean-config.xml裡id為messageSource的bean
並將ApplicationContext所收到的MessageSource介面的呼叫都轉到這個bean來實作,
MessageSource bean的 id 一定要稱為 messageSource
一般使用 ResourceBundleMessageSource 做為 MessageSource bean
並指定 property basename 假設 basename 為 message
則 ResourceBundleMessageSource 會尋找 classpath 下的
message_zh_TW.properties , message_en_US.properties, message_xx_XX.properties ...
做為 i18n的資料來源。
如果是webapp的環境下,想將 i18n的資料放在 WEB-INF 下 (非classpath)
則應該改用 ReloadableResourceBundleMessageSource 做為 MessageSource bean
並指定 basename 為 WEB-INF/i18n/message
如果有中文亂碼的情型,
使用 utf-8 儲存資料來源檔 (message_xx_XX.properties)
且 messageSource bean 加上 property defaultEncoding value當然是 UTF-8 即可。
沒有留言:
張貼留言