国际化 根据当前环境语言选择不同的配置文件的值

一、resources文件夹下创建文件夹i18n和文件

i18n创建文件
	message.properties
	message_en_US.properties
	message_zh_CN.properties


各个properties文件里面的内容
0001=piaoju
0001=invoice
0001=票据

在这里插入图片描述

二、各个国际化perperties填入内容

0001=piaoju
0001=invoice
0001=票据

三、yml配置文件

方式1.本项目配置
spring:
  messages:
    basename: i18n.message   	#我们的配置文件的真实位置
方式2.nacos
18n_baseconfig.yml

spring:
    # 国际化配置
    messages:
        #国际化配置文件缓存地址
        baseFolder: i18n
        #国际化配置名称
        basename: i18n/messages
        #编码格式
        encoding: UTF-8
        #国际化配置刷新的时间间隔
        cacheMillis: 10

i18n:
    # 监听的文件
    file: i18n_baseconfig.yml
    group: I18N_GROUP
    #是否是本地开发环境,true 推送至本地开发环境,false推送至jar包里的target\classes
    islocal: false 
    #properties文件
    messageproperties: messages.properties,messages_da_DK.properties,messages_de_DE.properties,messages_el_GR.properties,messages_en_US.properties,messages_es_ES.properties,messages_fi_FL.properties,messages_fr_FR.properties,messages_hu_HU.properties,messages_it_IT.properties,messages_ja_JP.properties,messages_ko_KR.properties,messages_nl_NL.properties,messages_no_NO.properties,messages_pl_PL.properties,messages_pt_PT.properties,messages_ru_RU.properties,messages_sv_SE.properties,messages_th_TH.properties,messages_tr_TR.properties,messages_zh_CN.properties,messages_zh_TW.properties,messages_iw_IL.properties

四、获取0001的值

方式一、MessageSourceUtil 
@Autowired 
MessageSourceUtil messageSourceUtil

String value= messageSourceUtil.getMessage("0001");

方式二:MessageSourceHolder
String value= MessageSourceHolder.getMessage("0001", "Invoice");


有动态值
	1、配置文件  
	  50201010=There are {0} piles under the current station, please delete the piles before performing this operation
	
	2String str = messageSourceUtil.getMessage(50201010, new Object[]{"测试参数"});
		throw new MessageCodeException(PileBaseEnum.CHARGE_EXISTED,new Object[]{pileCount});

五、MessageSourceUtil 和 MessageSourceHolder

1、MessageSourceUtil
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.Optional;

@Component
public class MessageSourceUtil {
    private final static org.slf4j.Logger LOGGER = LoggerFactory.getLogger(MessageSourceUtil.class);

    @Autowired
    private MessageSource messageSource;
   
    public String getMessage(String messageKey) {
    	//获取当前请求是何种语言  zh_CN
        Locale locale = LocaleContextHolder.getLocale();
        try {
            return messageSource.getMessage(messageKey, null, LocaleContextHolder.getLocale());
        } catch (Exception e) {
            LOGGER.error("解析资源文件异常:{}", e.getMessage());
        }
        return "";
    }

    public String getMessage(String messageKey, Locale locale) {
        Locale result = Optional.ofNullable(locale).orElse(LocaleContextHolder.getLocale());
        try {
            return messageSource.getMessage(messageKey, null, result);
        } catch (Exception e) {
            LOGGER.error("解析资源文件异常:{}", e.getMessage());
        }
        return "";
    }

    public String getMessage(String messageKey, Object[] params) {

        try {
            if (params == null || params.length == 0) {
                return getMessage(messageKey);
            }
            String pattern = messageSource.getMessage(messageKey, null, LocaleContextHolder.getLocale());
            MessageFormat mf = new MessageFormat(pattern);
            String content = mf.format(params);
            return content;
        } catch (Exception e) {
            LOGGER.error("解析资源文件异常:{}", e.getMessage());
        }
        return "";
    }
}
2、MessageSourceHolder
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;

import java.util.Locale;

@Component
public final class MessageSourceHolder {
    private static MessageSource messageSource;

    public MessageSourceHolder(@Autowired MessageSource messageSource) {
        MessageSourceHolder.messageSource = messageSource;
    }

    public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage) {
        return messageSource.getMessage(code, args, defaultMessage, LocaleContextHolder.getLocale());
    }

    public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) {
        return messageSource.getMessage(code, args, defaultMessage, locale);
    }

    public static String getMessage(String messageKey, Object[] args) {
        return messageSource.getMessage(messageKey, args, messageKey, LocaleContextHolder.getLocale());
    }

    public static String getMessage(String messageKey, Object[] args, Locale locale) {
        return messageSource.getMessage(messageKey, args, messageKey, locale);
    }

    public static String getMessage(String code) {
        return messageSource.getMessage(code, (Object[])null, code, LocaleContextHolder.getLocale());
    }

    public static String getMessage(String code, String defaultMessage) {
        return messageSource.getMessage(code, (Object[])null, defaultMessage, LocaleContextHolder.getLocale());
    }
}

六、测试

postman请求头添加:Accept-Language   en-US  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值