SpringBoot下国际化配置-阿里云开发者社区

开发者社区> SevenSun> 正文

SpringBoot下国际化配置

简介: SpingBoot实现国际化配置步骤
+关注继续查看

SpringBoot下使用MessageSource实现国际化配置

1.1在ResourceBundle下创建国际化配置文件

(1)在【resources】目录下创建【i18n】目录(名称随意起),在目录上【右键】-->【new】-->【Resource Bundle】-->【起名message】(起名随意)。

image.png(2)在message下创建国际化配置文件

messages.properties (默认的语言配置文件,当找不到其他语言的配置的时候,使用该文件进行展示)。

i18n.user.name=孙大圣

messages_zh_CN.properties(中文)

i18n.user.name=孙行者

messages_en_US.properties(英文)

i18n.user.name=SevenSun

1.2 yml配置文件中配置刚才创建的国际化配置文件

spring:
  messages:
    # 国际化资源文件路径 eg:"messages,config.i18n.messages"
    basename: i18n/messages
    encoding: UTF-8

image.png

*basename: i18n/messages //这里即为配置文件路径,如果创建时候改名了,这里记得要一致!!

​1.3 配置拦截器

package com.tab343.myspringboot.internationalization;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
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 I18nConfig implements WebMvcConfigurer
{

    //两种方式区一中即可
    @Bean
    public LocaleResolver localeResolver()
    {
        //(1)Cookie方式
        /* CookieLocaleResolver localeResolver = new CookieLocaleResolver();
        localeResolver.setCookieName("localeCookie");
        //设置默认区域
        localeResolver.setDefaultLocale(Locale.ENGLISH);
        localeResolver.setCookieMaxAge(3600);//设置cookie有效期.
        return localeResolver;*/
    
        //(2)Session方式
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认语言
        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor()
    {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名实现国际化效果
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

1.4 编写国际化测试Controller

package com.tab343.myspringboot.internationalization;

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

import java.util.Locale;

/**
 * @Description : 国际化Controller
 */
@RestController
@RequestMapping("/i18n")
public class I18nController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/hello")
    public String hello(){
        Locale locale = LocaleContextHolder.getLocale();
        return messageSource.getMessage("i18n.user.name", null, locale);
    }
}

这里通过MessageSource获取配置文件中key为"i18n.user.name"的值

1.5使用PostMan访问

(1)英文

image.png

(2)中文

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
7842 0
idea中配置Springboot热部署
1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 org.springframework.boot spring-boot-devtools true 注:project 中添加 spring-boot-maven-plugin,主要在eclipse中使用,idea中不需要添加此配置。
674 0
SpringBoot ~ 同源策略配置
CROS(Cross-Origin Resource Sharing)是由W3C制定的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。 SpringBoot配置跨域有2种方式,一是方法注解配置,二是全局配置 注解配置 @RestController @RequestMapping(...
753 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
9565 0
springboot自动配置原理
springboot自动配置原理从main函数说起 一切的开始要从SpringbootApplication注解说起。 @SpringBootApplicationpublic class MyBootApplication { public static void main(String[] args) { SpringApplication.
714 0
springMVC项目国际化(i18n)实现方法
SpringMVC项目国际化(i18n)实现方法     按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并不多,但偶尔用到也会比较费时间滴;-),不如驻足本帖片刻吧︿( ̄︶ ̄)︿   额,嗯~,记得一开始从事软件开发时在一个很轻量级的项目中碰到了一个貌似叼炸天的需求,什么?国际化?没听说过,不知道怎么玩儿。
1111 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
11226 0
idea配置SpringBoot热部署之自动Build
一、pom.xml文件导入所需依赖文件 SpringBoot热部署插件 org.springframework.boot spring-boot-devtools true runtime 二、pom.xml文件build标签进行修改如下 该插件由Maven提供,它会自动使用当前运行mvn命令的JDK去编译Java源代码。
1062 0
Struts2 资源配置文件国际化
Struts2 资源配置文件国际化Struts2资源文件的命名规范:basename_language_country.propertiesStruts2国际化如果系统同时存在资源文件、类文件,系统将以类文件为主,而不会调用资源文件。
726 0
SpringBoot类型安全配置
## 一个使用@Value(${...})的例子 下面是一段简单的服务器配置的代码: ```java @Data @Component public class ServerConfig { /** 是否启用服务 */ @Value("${ali.server.enabled}") private boolean enabled;
3657 0
+关注
SevenSun
技术创造美好生活!
23
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载