2016年1月29日 星期五

讀取國際化資源 (Spring3.x 二十四)

基本的java國際化資源可看這篇,現在講的是Spring的國際化資源

applicationContext.xml
<bean id="messageSource" ="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>aaa</value>
            <value>bbb</value>
        </list>
    </property>
</bean>

※從官網複製

※用list、array、set都可以,這樣的設定表示還要有aaa.properties、bbb.properties,如下三隻



aaa.properties
aaa.bbb=111

bbb_en_US.properties
ccc.ddd=english {0},{1}

bbb_zh_TW.properties
ccc.ddd=\u7E41\u4E2D {0},{1}

測試類
MessageSource ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    
String m1 = ctx.getMessage("aaa.bbb", null, "Default", null);
String m2 = ctx.getMessage("ccc.ddd", new Object[] { "p1", "p2" }, "default Message", Locale.TAIWAN);
System.out.println(m1);
System.out.println(m2);
    
((ClassPathXmlApplicationContext) ctx).close();

※結果:
111
繁中 p1,p2

※getMessage是overloading,第三個參數是找不到第一個參數的key時顯示的訊息,如果給null,就是null;因為是overloading,所以只給三個參數(第三個參數不設定),又找不到key的話,就會出「org.springframework.context.NoSuchMessageException」的錯

※我把最後的Locale的參數給null,還是能找到,是zh_TW的,不曉得是不是覆蓋的原因


沒有留言:

張貼留言