springboot如何實現(xiàn)國際化配置
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(中文)
這是我用到的內(nèi)容,可以參考下格式
英文:
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
=授權(quán)失敗,請重試OperationError
=操作失敗,請重試BindingError
=綁定失敗,請重試PhoneNotExist
=手機號不存在EmailNotExist
=郵箱不存在PasswordError
=密碼錯誤AccountFrozen
=賬號已被凍結(jié),請聯(lián)系客服AccountNotAudit
=賬號未審核,請聯(lián)系客服SendError
=發(fā)送失敗,請重試DownloadError
=下載失敗,請重試DeleteError
=刪除失敗,請重試RetrieveError
=密碼找回失敗,請重試UpdateError
=更新失敗,請重試OriginalPasswordError
=原密碼錯誤ArticleNotExist
=沒有此公告UploadError
=上傳失敗,請重試MessageError
=留言失敗,請重試ReplyError
=回復(fù)失敗,請重試RoomEntryError
=房間進入失敗,請重試RoomExitError
=房間退出失敗,請重試CreateRoomError
=房間創(chuàng)建失敗,請重試
我這里直接寫的是中文,csdn有很多版本,有的是ascii碼,看個人喜好。
如果后面出現(xiàn)中文亂碼情況,修改下這里:
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; } /** * 設(shè)置當(dāng)前的返回信息 * * @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,這里注意下,不然錯誤提示是亂碼
方法中調(diào)用:首先注入工具
@Autowired private I18nController i18n; @Autowired private HttpServletRequest request;
然后
String message = i18n.getMessage(request, "NotEmpty"); return ResponseUtils.error(message);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud?Gateway之請求應(yīng)答日志打印方式
這篇文章主要介紹了SpringCloud?Gateway之請求應(yīng)答日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Java?synchronized同步關(guān)鍵字工作原理
synchronized作為Java程序員最常用同步工具,很多人卻對它的用法和實現(xiàn)原理一知半解,以至于還有不少人認為synchronized是重量級鎖,性能較差,盡量少用。但不可否認的是synchronized依然是并發(fā)首選工具,本文就來詳細講講2023-02-02Spring基于Aop實現(xiàn)事務(wù)管理流程詳細講解
這篇文章主要介紹了Spring基于Aop實現(xiàn)事務(wù)管理流程,事務(wù)管理對于企業(yè)應(yīng)用來說是至關(guān)重要的,即使出現(xiàn)異常情況,它也可以保證數(shù)據(jù)的一致性,感興趣想要詳細了解可以參考下文2023-05-05