最近項目需要國際化,一般常見的方式就是采用配置文件話國際化。
根據請求頭傳入不同的語言,返回不同的內容;
自己搭建了一個模型,分如下幾步:
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>
二:配置文件國際化,如下圖
三:工具類:

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 }
PostMan模擬后,返回結果成功。