1 说明
SpringBoot国际化实现
2 实现
2.1 配置文件 application.yml
spring:
application:
name: xxxxx
# 国际化
messages:
basename: i18n.messages
encoding: UTF-8
2.2 Resources目录下添加语言包
(1)resources目录下,新建文件夹i18n【跟yml配置文件保持一致】
i18n文件夹下,新建Resource Bundle,name为messages【跟yml配置文件保持一致】
(2)完整的目录结构
(3) 添加字段,要一一对应
添加示意:
添加完成的效果:
2.3 代码部分
I18nService.java
package com.module.nacos.consumer.service;
public interface I18nService {
String getMessage(String msgKey);
String getMessage(String msgKey, Object[] args);
}
I18nServiceImpl.java
package com.module.nacos.consumer.service.impl;
import com.module.nacos.consumer.service.I18nService;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import java.util.Locale;
@Log
@Service("i18nService")
public class I18nServiceImpl implements I18nService {
@Autowired
private MessageSource messageSource;
@Override
public String getMessage(String msgKey, Object[] args) {
return messageSource.getMessage(msgKey, args, LocaleContextHolder.getLocale());
}
@Override
public String getMessage(String msgKey) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(msgKey, null, locale);
}
}
TestController.java
package com.module.nacos.consumer.controller;
import com.alibaba.fastjson.JSONObject;
import com.module.nacos.consumer.annotations.RequiresPermissions;
import com.module.nacos.consumer.service.I18nService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/remote", produces = MediaType.APPLICATION_JSON_VALUE)
public class TestController{
@Autowired
private I18nService i18nService;
@ApiOperation(value = "测试")
@GetMapping("/test")
public Object test() {
JSONObject object = new JSONObject();
object.put("data",i18nService.getMessage("test.key.error"));
return object;
}
}
3 验证