SpringBoot整合国际化I18n
程序员文章站
2022-04-09 08:45:15
本文主要实现的功能: 从文件夹中直接加载多个国际化文件 后台设置前端页面显示国际化信息的文件 实现 国际化项目初始化,简单看下项目的目录和文件 在resource下创建国际化文件 messages.properties messages_en_US.properties messages_zh_CN ......
本文主要实现的功能:
- 从文件夹中直接加载多个国际化文件
- 后台设置前端页面显示国际化信息的文件
实现
国际化项目初始化,简单看下项目的目录和文件
在resource下创建国际化文件
- messages.properties
- messages_en_us.properties
- messages_zh_cn.properties
配置引用国际化文件
spring.messages.basename=messages
如果是多个源的话,用","相隔即可。
spring.messages.basename=messages,xxx,xxxx,xxxx
创建常量类
public class i18nconstant { /** * 一个例子 */ public static final string text = "devicesummary.device.type.name"; }
对应分别在三个国际化(默认、中文、英文)中加入devicesummary.device.type.name对应转换的语言
使用
- 代码中使用
@autowired private messagesource messagesource; string msg = messagesource.getmessage(i18nconstant.text, null, locale);
- 获取request的locale
locale locale1 = localecontextholder.getlocale(); // 当前request locale locale2 = requestcontextutils.getlocale(request); // 指定request locale.getlanguage() //获取当前语言
- 默认根据浏览器的语言设置来决定显示语言。一般应用多采用会话级别的语言设置sessionlocaleresolver。
@bean public localeresolver localeresolver() { sessionlocaleresolver sessionlocaleresolver = new sessionlocaleresolver(); sessionlocaleresolver.setdefaultlocale(locale.china); return sessionlocaleresolver; }
- 切换语言
@bean public localechangeinterceptor localechangeinterceptor() { localechangeinterceptor lci = new localechangeinterceptor(); lci.setparamname("lang"); return lci; } @override public void addinterceptors(interceptorregistry registry) { registry.addinterceptor(localechangeinterceptor()); }
url中通过参数lang就可以切换到不同语言。比如:http://localhost:8080/hello.html?lang=zh
上一篇: [WPF自定义控件库]了解如何自定义ItemsControl
下一篇: 基于FCM的消息推送功能