SpringBoot实现前后端分离国际化的示例详解

 更新时间:2023年02月22日 08:50:08   作者:三省同学  
Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序可以有效地适应不同语言文化背景下的用户需求。本文主要介绍了SpringBoot实现前后端分离国际化的方法,需要的可以参考一下

前言

Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序可以有效地适应不同语言文化背景下的用户需求。

此外,Springboot国际化也可以方便多语言应用程序重用和维护,从而减少了系统部署的时间成本和维护的费用。

要实现Springboot国际化应用,主要有三个步骤。

1、设置国际化属性文件

定义国际化资源文件,使用properties格式的文件,将不同的多国语言文本资源放在不同的文件中,每个文件的命名采用【locale】+【messages】的方式,如zh_CN.properties、en_US.properties等。

message.properties文件内容可为空。

message.en_US.properties内容示例:

40001=Hello

message.zh_CN.properties内容示例:

40001=你好

2、创建解析器和拦截器

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import java.util.Locale;

@Configuration
public class LocaleConfig {

	@Bean
	public SessionLocaleResolver localeResolver() {
		SessionLocaleResolver localeResolver = new SessionLocaleResolver();
		localeResolver.setDefaultLocale(Locale.CHINA);
		return localeResolver;
	}
	
	@Bean
	public WebMvcConfigurer localeInterceptor() {
		return new WebMvcConfigurer() {
			@Override
			public void addInterceptors(InterceptorRegistry registry) {
				LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
				localeInterceptor.setParamName("lang");
				registry.addInterceptor(localeInterceptor);
			}
		};
	}
}

3、启动配置文件设置

application.properties中添加如下内容

#i18n
spring.messages.basename=i18n.messages
spring.messages.cache-duration=3600
spring.messages.encoding=UTF-8

application.yml中添加如下内容

spring: 
  messages:
    basename: i18n/messages

4、控制器示例

Springboot的国际化是通过一个称为“messageSource”的bean实现的。

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestControler {

	@Autowired
	private MessageSource messageSource;
	
	@GetMapping("/hello")
	public Map<Object, Object> test() {
		Map<Object, Object> result = new HashMap<Object, Object>();
		result.put("code", 40001);
		result.put("msg", messageSource.getMessage("40001", null, LocaleContextHolder.getLocale()));
		return result;
	}

}

5、小结

Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序可以有效地适应不同语言文化背景下的用户需求。

此外,Springboot国际化也可以方便多语言应用程序重用和维护,从而减少了系统部署的时间成本和维护的费用。要实现Springboot国际化应用,主要有三个步骤。

1.设置国际化属性文件:要实现Springboot国际化,首先要准备一系列国际化属性文件,包括语言和地区信息。

2.注册国际化消息资源:将属性文件中的语言和地区信息注册到Springboot应用程序中,并指定默认值,以便在扩展多语言时可以快速、高效地访问相关属性资源。

3.定义多语言捆绑文件:将已定义的国际化属性文件与应用程序结合起来,形成多语言捆绑文件,以便在用户选择不同语言时可以及时调整应用程序语言版本。

到此这篇关于SpringBoot实现前后端分离国际化的示例详解的文章就介绍到这了,更多相关SpringBoot国际化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础语法之二维数组详解

    Java基础语法之二维数组详解

    这篇文章主要介绍了Java基础语法之二维数组详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Java聊天室之实现使用Socket传递音频

    Java聊天室之实现使用Socket传递音频

    这篇文章主要为大家详细介绍了Java简易聊天室之使用Socket实现传递音频功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下
    2022-10-10
  • 最好的8个Java RESTful框架

    最好的8个Java RESTful框架

    最好的8个Java RESTful框架,需要的朋友可以参考下
    2016-05-05
  • 分析Java设计模式之组合模式

    分析Java设计模式之组合模式

    组合模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它的本质是统一叶子对象和组合对象。它的目的是让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作
    2021-06-06
  • Java中WeakHashMap和HashMap的区别详解

    Java中WeakHashMap和HashMap的区别详解

    这篇文章主要介绍了Java中WeakHashMap和HashMap的区别详解,WeakHashMap和HashMap一样,WeakHashMap也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以为null,需要的朋友可以参考下
    2023-09-09
  • Java 全面掌握网络编程篇

    Java 全面掌握网络编程篇

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节
    2021-10-10
  • Spring MVC完全注解方式配置web项目

    Spring MVC完全注解方式配置web项目

    这篇文章主要为大家详细介绍了Spring MVC完全注解方式配置web项目的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • springboot vue接口测试前后端实现模块树列表功能

    springboot vue接口测试前后端实现模块树列表功能

    这篇文章主要为大家介绍了springboot vue接口测试前后端实现模块树列表功能,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • java实现给出分数数组得到对应名次数组的方法

    java实现给出分数数组得到对应名次数组的方法

    这篇文章主要介绍了java实现给出分数数组得到对应名次数组的方法,涉及java针对数组的遍历、排序及运算的相关技巧,需要的朋友可以参考下
    2015-07-07
  • java实现2048小游戏

    java实现2048小游戏

    这篇文章主要为大家详细介绍了java实现2048小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02

最新评论