前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot国际化

Spring Boot国际化

作者头像
黑洞代码
发布2021-09-03 15:08:47
8500
发布2021-09-03 15:08:47
举报

国际化是一个使应用程序适应不同语言和区域而无需对源代码进行工程更改的过程。用它来说,国际化是对本地化的准备。

依赖

需要Spring Boot Starter Web和Spring Boot Starter Thymeleaf依赖来在Spring Boot中开发Web应用程序。

Maven

代码语言:javascript
复制
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

LocaleResolver

需要确定应用程序的默认Locale。在Spring Boot应用程序中添加LocaleResolver bean。

代码语言:javascript
复制
@Bean
public LocaleResolver localeResolver() {
   SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
   sessionLocaleResolver.setDefaultLocale(Locale.US);
   return sessionLocaleResolver;
}

LocaleChangeInterceptor

LocaleChangeInterceptor用于根据添加到请求的语言参数的值更改新的Locale。

代码语言:javascript
复制
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
   LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
   localeChangeInterceptor.setParamName("language");
   return localeChangeInterceptor;
}

为了起到这种作用,需要将LocaleChangeInterceptor添加到应用程序的注册表拦截器中。配置类应扩展WebMvcConfigurerAdapter类并覆盖addInterceptors()方法。

代码语言:javascript
复制
@Override
public void addInterceptors(InterceptorRegistry registry) {
   registry.addInterceptor(localeChangeInterceptor());
}

消息源

默认情况下,Spring Boot应用程序从类路径下的src/main/resources文件夹中获取消息源。缺省语言环境消息文件名应为message.properties,每个语言环境的文件应命名为messages_XX.properties。“XX”表示区域代码。

应将所有消息属性设置为键值对。如果在语言环境中找不到任何属性,则应用程序将使用messages.properties 文件中的默认属性。

默认的messages.properties 如下所示 -

代码语言:javascript
复制
welcome.text=Hi Welcome to Everyone

中文对应的属性文件:message_zh.properties 如下所示 -

代码语言:javascript
复制
welcome.text=大家好

HTML文件

在HTML文件中,使用语法#{welcome.text}显示属性文件中的消息。

代码语言:javascript
复制
<h1 th:text = "#{welcome.text}"></h1>

现在,使用如下所示的命令运行JAR文件 -

代码语言:javascript
复制
java -jar target\springboot_international-0.0.1-SNAPSHOT.jar

应用程序已在Tomcat端口8080上启动。

现在在Web浏览器中访问URL => http://localhost:8080/locale ,可以看到以下输出 -

访问URL => http://localhost:8080/locale?language=cn 将看到如下所示结果 -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 落叶飞翔的蜗牛 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 依赖
  • Maven
  • LocaleResolver
  • LocaleChangeInterceptor
  • 消息源
  • HTML文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档