springboot如何實現國際化配置
springboot國際化配置
1.在yml文件的spring下加入下面代碼
messages:
encoding: UTF-8
basename: i18n/messages
cache-second: 3600
2.在resource下創(chuàng)建i18n文件夾
(internationalization國際化,共18個字母簡稱i18n),
里面創(chuàng)建messages.properties(默認文件,非中、英文時讀?。?/p>
- messages_en.properties(英文)
- messages_zh.properties(中文)

這是我用到的內容,可以參考下格式
英文:
NotEmpty=The input cannot be null
PhoneNotEmpty=The cell phone number cannot be empty
EmailNotEmpty=The mailbox cannot be empty
CodeNotEmpty=Verification code cannot be empty
ResendCode=Please resend the verification code
PhoneRegistered=The phone number has been registered
EmailRegistered=Email registered
PhoneNotRegistered=The phone number is not registered
EmailNotRegistered=Email not registered
CodeIncorrect=Verification code is incorrect
RegisterError=Registration failed. Please try again
AuthError=Authorization failed. Please try again
OperationError=Operation failed, please try again
BindingError=Binding failed, please try again
PhoneNotExist=The cell phone number does not exist
EmailNotExist=Email does not exist
PasswordError=Password Error
AccountFrozen=The account has been frozen, please contact customer service
AccountNotAudit=The account has not been audited, please contact customer service
SendError=Failed to send. Please try again
DownloadError=Download failed, please try again
DeleteError=Delete failed, please try again
RetrieveError=Retrieve failed, please try again
UpdateError=Modification failed, please try again
OriginalPasswordError=The original password is incorrect
ArticleNotExist=There is no announcement
UploadError=Upload failed. Please try again
MessageError=Message failed, please try again
ReplyError=Reply failed, please try again
RoomEntryError=Room entry failed. Please try again
RoomExitError=Room exit failed. Please try again
CreateRoomError=Studio creation failed. Please try again
中文:
NotEmpty=輸入不能為空PhoneNotEmpty=手機號不能為空EmailNotEmpty=郵箱不能為空CodeNotEmpty=驗證碼不能為空ResendCode=請重新發(fā)送驗證碼PhoneRegistered=手機號已注冊EmailRegistered=郵箱已注冊PhoneNotRegistered=手機號未注冊EmailNotRegistered=郵箱未注冊CodeIncorrect=驗證碼不正確RegisterError=注冊失敗,請重試AuthError=授權失敗,請重試OperationError=操作失敗,請重試BindingError=綁定失敗,請重試PhoneNotExist=手機號不存在EmailNotExist=郵箱不存在PasswordError=密碼錯誤AccountFrozen=賬號已被凍結,請聯系客服AccountNotAudit=賬號未審核,請聯系客服SendError=發(fā)送失敗,請重試DownloadError=下載失敗,請重試DeleteError=刪除失敗,請重試RetrieveError=密碼找回失敗,請重試UpdateError=更新失敗,請重試OriginalPasswordError=原密碼錯誤ArticleNotExist=沒有此公告UploadError=上傳失敗,請重試MessageError=留言失敗,請重試ReplyError=回復失敗,請重試RoomEntryError=房間進入失敗,請重試RoomExitError=房間退出失敗,請重試CreateRoomError=房間創(chuàng)建失敗,請重試
我這里直接寫的是中文,csdn有很多版本,有的是ascii碼,看個人喜好。
如果后面出現中文亂碼情況,修改下這里:

3.后臺公共方法
package com.es.api.modules.common.controller;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Controller;
@Controller
public class I18nController {
private static final Logger LOGGER = LoggerFactory
.getLogger(I18nController.class);
private MessageSource messageSource;
/**
* 初始化
*
* @return
*/
private MessageSource initMessageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(3600);
return messageSource;
}
/**
* 設置當前的返回信息
*
* @param request
* @param code
* @return
*/
public String getMessage(HttpServletRequest request, String code) {
if (messageSource == null) {
messageSource = initMessageSource();
}
String language = request.getHeader("language");
//默認沒有就是請求地區(qū)的語言
Locale locale = null;
if (language == null) {
locale = request.getLocale();
} else if ("en".equals(language)) {
locale = Locale.ENGLISH;
} else if ("zh".equals(language)) {
locale = Locale.CHINA;
}
//其余的不正確的默認就是本地的語言
else {
locale = request.getLocale();
}
String result = null;
try {
result = messageSource.getMessage(code, null, locale);
} catch (NoSuchMessageException e) {
LOGGER.error("Cannot find the error message of internationalization, return the original error message.");
}
if (result == null) {
return code;
}
return result;
}
}注意:我app傳回的language是zh和en,所以我的properties文件命名直接是zh和en,這里注意下,不然錯誤提示是亂碼
方法中調用:首先注入工具
@Autowired private I18nController i18n; @Autowired private HttpServletRequest request;
然后
String message = i18n.getMessage(request, "NotEmpty"); return ResponseUtils.error(message);
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IDEA 中創(chuàng)建SpringBoot 父子模塊的實現
這篇文章主要介紹了IDEA 中創(chuàng)建SpringBoot 父子模塊的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
基于java+springboot+mybatis+laiyu實現學科競賽管理系統(tǒng)
這篇文章主要介紹了基于java+springboot+mybatis+laiyu實現的學科競賽管理系統(tǒng),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Java8使用stream實現list中對象屬性的合并(去重并求和)
這篇文章主要介紹了Java8使用stream實現list中對象屬性的合并(去重并求和),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

