Spring Boot異常國際化

新建國際化所需properties文件

在resource文件夾下新建Resource Bundle咸产。


新建Resource Bundle

Bundle中的properties文件

properties文件相關目錄結(jié)構(gòu)如圖:


properties文件目錄結(jié)構(gòu)

messages.properties

NotEmpty=不能為空

messages_zh_CN.properties

NotEmpty=不能為空

messages_en_US.properties

NotEmpty=not empty
yml配置
spring:
  messages:
    encoding: UTF-8
    basename: i18n/messages
    cache-second: 3600
國際化轉(zhuǎn)換類
package com.example.i18n.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.support.RequestContextUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.Locale;

/**
 * @author liujy
 * @description 國際化異常信息轉(zhuǎn)換工具
 * @since 2020-12-25 10:13
 */
@Component
public class I18nUtil {
    private static final String I18N_LANG_PARAM = "lang";
    private static final String PATH_PARAMETER_SPLIT = "_";

    @Autowired
    private HttpServletRequest request;
    @Autowired
    private MessageSource messageSource;

    public String getI18nMsg(String messageKey) {
        Locale locale;
        String lang = request.getParameter(I18N_LANG_PARAM);
        if (StringUtils.hasText(lang) && lang.contains(PATH_PARAMETER_SPLIT)) {
            String[] split = lang.split(PATH_PARAMETER_SPLIT);
            if (split != null && split.length > 1) {
                // 可查看locale源碼
                locale = new Locale(split[0], split[1]);
            } else {
                locale = RequestContextUtils.getLocale(request);
            }
        } else {
            locale = RequestContextUtils.getLocale(request);
        }
        return messageSource.getMessage(messageKey, null, locale);
    }
}

Locale源碼中可查:

/** Useful constant for country.
 */
static public final Locale US = createConstant("en", "US");
/** Useful constant for language.
 */
static public final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN");
測試controller
package com.example.i18n.controller;

import com.example.i18n.utils.I18nUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author liujy
 * @description
 * @since 2020-12-25 11:49
 */
@RestController
@RequestMapping("/i18n")
public class I18nTestController {
    @Autowired
    private I18nUtil i18nUtil;

    @GetMapping("/test")
    public String getMsg(@RequestParam(value = "msgKey") String msgKey) {
        String i18nMsg = i18nUtil.getI18nMsg(msgKey);
        return i18nMsg;
    }
}

啟動項目并訪問測試


返回中文msg

返回英文msg
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛讲,一起剝皮案震驚了整個濱河市蜕该,隨后出現(xiàn)的幾起案子花沉,更是在濱河造成了極大的恐慌,老刑警劉巖枪蘑,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨灭,死亡現(xiàn)場離奇詭異,居然都是意外死亡宪摧,警方通過查閱死者的電腦和手機粒竖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來几于,“玉大人蕊苗,你說我怎么就攤上這事『⒏铮” “怎么了岁歉?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我锅移,道長熔掺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任非剃,我火速辦了婚禮置逻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘备绽。我一直安慰自己券坞,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布肺素。 她就那樣靜靜地躺著恨锚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倍靡。 梳的紋絲不亂的頭發(fā)上猴伶,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音塌西,去河邊找鬼他挎。 笑死,一個胖子當著我的面吹牛捡需,可吹牛的內(nèi)容都是我干的办桨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼站辉,長吁一口氣:“原來是場噩夢啊……” “哼呢撞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庵寞,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤狸相,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捐川,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脓鹃,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年古沥,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘸右。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岩齿,死狀恐怖太颤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盹沈,我是刑警寧澤龄章,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響做裙,放射性物質(zhì)發(fā)生泄漏岗憋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一锚贱、第九天 我趴在偏房一處隱蔽的房頂上張望仔戈。 院中可真熱鬧,春花似錦拧廊、人聲如沸监徘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凰盔。三九已至,卻和暖如春倦春,著一層夾襖步出監(jiān)牢的瞬間廊蜒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工溅漾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人著榴。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓添履,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脑又。 傳聞我的和親對象是個殘疾皇子暮胧,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容