【SpringBoot】国际化

本文详细介绍了在SpringBoot中实现国际化的步骤,包括创建properties文件、编写不同语言的内容、定制LocaleResolver组件、配置应用属性以及创建测试HTML页面。通过这些步骤,可以实现根据用户选择的语言显示相应的界面内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一些有些的网站,尤其是一些文档网站,我们都能看到国际化的身影,比如:vue官网
在这里插入图片描述

在springboot中,我们应该怎么实现国际化呢?下面,我们对这个问题进行讨论和解决。


第一步

我们要借助properties文件实现国际化,我们需要创建如下目录及文件( i18n:internationalization中i和n之间有18的英文单词

resources
	-- i18n(文件夹)
		-- xxx.properties
		-- xxx_en_US.properties
		-- xxx_zh_CN.properties

当我们手动创建完demo.propertiesdemo_en_US.properties文件后,IEDA会自动它们进行合并到虚拟的Resource Bundle 'xxx'目录如下:
在这里插入图片描述

我们可以通过下面的方式创建第三个properties文件,如下:
①:Resource Bundle ‘xxx’ ——> New ——> Add Pro…
在这里插入图片描述
②:+ ——> 编辑’zh_CN’
在这里插入图片描述
③:完成
在这里插入图片描述
在这里插入图片描述


第二步

我们要实现国际化,在demo_en_US.propertiesdemo_zh_CN.properties中编写相同格式但是不同语言的内容。借助IDEA,我们可以很方便的完成格式但是不同语言的编写。

① 打开3个文件中的任意一个,点击Resource Bundle
在这里插入图片描述
② 添加key名
在这里插入图片描述

③ 编写value值
在这里插入图片描述
在这里插入图片描述


第三步

① 编写MyLocaleResolver组件

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        //获取client端传递的"language"参数
        String language = httpServletRequest.getParameter("language");
        //获取默认的设置的"地区"和"语言"
        Locale locale = Locale.getDefault();
        //判断接收到client端传递的"language"是否为空
        if (!StringUtils.isEmpty(language)) {
            String[] split = language.split("_"); //通过"_"进行分解language(格式如:zh_CN)
            locale = new Locale(split[0], split[1]); //手动创建前端的地区和语言
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}

② 将该组件添加到Bean中

package com.example.demo.config; 

import com.example.demo.component.MyLocaleResolver;
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.WebMvcConfigurer;

/**
 * @author huxuehao
 * @create 2021-08-11-18:32
 */

@Configuration
public class MyConfig implements WebMvcConfigurer {

    // 自定义的国际化组件添加到Bean(容器)中
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
}

③ 在application.properties中添加配置参数,生效配置

spring.messages.basename=i18n.login



第四步

编写测试的html(demo_i18n.html)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="box">
    <div>
        <strong th:text="#{demo.usernameTip}"></strong>:
        <strong th:text="#{demo.username}"></strong>
    </div>
    <div>
        <strong th:text="#{demo.ageTip}"></strong>:
        <strong th:text="#{demo.age}"></strong>
    </div>
    <div>
        <strong th:text="#{demo.describeTip}"></strong>:
        <strong th:text="#{demo.describe}"></strong>
    </div>

    <div>
        <a th:href="@{/demo_i18n(language='zh_CN')}" th:text="#{demo.language.zh}"></a><br>
        <a th:href="@{/demo_i18n(language='en_US')}" th:text="#{demo.language.en}"></a>
    </div>
</div>
</body>
</html>

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


卓越不是单一的举动,而是习惯…
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值