java項目國際化ResourceBundleMessageSource


最近項目需要國際化,一般常見的方式就是采用配置文件話國際化。

根據請求頭傳入不同的語言,返回不同的內容;

 

 

自己搭建了一個模型,分如下幾步:

1.spring配置文件修改,定義國際化消息

2.查找項目中需要返回到web的國際化內容,寫到配置文件中

3.處理國際化封裝成一個工具類,在controller層 統一處理。

國際化需要注意,如果調用方未傳language,系統需要默認一個,最好寫在配置文件中,方便隨時修改,用 @value注入到國際化工具類中。

 

一 :Spring配置文件

  <!-- 定義國際化消息-->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <!-- 其中basename用來指定properties文件的通用名
              如實例中的messages_en.properties,messages_ja.properties通用名都是messages
         -->
        <property name="basename" value="messages"/>
        <property name="useCodeAsDefaultMessage" value="true" />
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="cacheSeconds" value="100"></property>

    </bean>
View Code

二:配置文件國際化,如下圖

 

 

 三:工具類:

 1 @Service
 2 public class ResponseUtil {
 3 
 4     @Value(value = "${default.xLanguage}")
 5     public String language;
 6 
 7     public  String getMessage(String xLanguage, Error error, String className){
 8 
 9         if(StringUtils.isEmpty(xLanguage)){
10             xLanguage = language;
11         }
12         if(null==error){
13             return "請求成功";
14         }
15         /***此處根據不同的code獲取國際化資源**/
16        
17 
18         ResourceBundle resourceBundle = null;
19         switch (xLanguage){
20             case "en-US":
21                 resourceBundle = ResourceBundle.getBundle("messages", Locale.US);
22                 break;
23             case "zh-CN":
24                 resourceBundle = ResourceBundle.getBundle("messages", Locale.SIMPLIFIED_CHINESE);
25                 break;
26         }
27         if(null==resourceBundle){
28             return null;
29         }
30 
31         return resourceBundle.getString(messageKey);
32     }
33 
34 
35     }
36 }    
View Code

 

PostMan模擬后,返回結果成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM