Spring Boot配置国际化(i18n)

1 Maven依赖

        
            cn.hutool
            hutool-all
            5.5.7
        

2 Spring Boot配置

spring:
  messages:
    basename: i18n.message

3 I18nLocaleResolver

国际化区域解析器

package com.i18n;

import cn.hutool.core.util.StrUtil;
import org.springframework.web.servlet.LocaleResolver;

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

/**
 * 国际化区域解析器
 */
public class I18nLocaleResolver implements LocaleResolver {
    /**
     * 解析请求
     * @param request
     * @return
     */
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        Locale locale = request.getLocale();
        String language = request.getHeader("language-header");
        if (!StrUtil.isEmpty(language)) {
            String[] split = language.split("_");
            locale = new Locale(split[0], split[1]);
        }

        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

4 I18nConfig

国际化配置。

package com.config;

import com.i18n.I18nLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;

/**
 * 国际化配置
 */
@Configuration
public class I18nConfig {
    @Bean
    public LocaleResolver localeResolver(){
        return new I18nLocaleResolver();
    }
}

5 国际化配置文件

5.1 message.properties

        不指定语言时,默认指定的国际化配置文件。

你好

5.2 message_en_US.properties

        语言为英文时,使用的配置文件。

你好=hi

5.3 message_zh_CN.properties

        语言为中文时,使用的配置文件。

你好=你好

6 调试代码

package com.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class I18NController {
    @Autowired
    private MessageSource messageSource;

    @GetMapping("/hi")
    public String hi() {
        return messageSource.getMessage("你好", new Object[]{}, "", LocaleContextHolder.getLocale());
    }
}

7 调试结果

7.1 语言为英文

Spring Boot配置国际化(i18n)_第1张图片

 7.2 语言为中文

Spring Boot配置国际化(i18n)_第2张图片

你可能感兴趣的:(Spring,Boot,spring,boot)