一、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
18 n_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
2 、
String 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) {
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