返回顶部
首页 > 资讯 > 前端开发 > node.js >SpringBoot怎么实现国际化
  • 627
分享到

SpringBoot怎么实现国际化

2024-04-02 19:04:59 627人浏览 安东尼
摘要

这篇文章主要介绍了SpringBoot怎么实现国际化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springBoot怎么实现国际化文章都会有所收获,下面我们一起来看看吧。

这篇文章主要介绍了SpringBoot怎么实现国际化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springBoot怎么实现国际化文章都会有所收获,下面我们一起来看看吧。

一、前言

国际化这个功能可能我们不常用,但是在有需要的地方还是必须要上的,今天就来看一下怎么在我们的web开发中配置国际化,让我们的网站可以根据语言来展示不同的形式。

二、国际化配置

2.1 springboot中的自动配置

springboot已经自动配置好了管理国际化资源文件的组件:

@ConfigurationProperties(prefix = "spring.messages")
public class MessageSourceAutoConfiguration {
    
    
    private String basename = "messages";  
    //我们的配置文件可以直接放在类路径下叫messages.properties;
    
    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        if (StringUtils.hasText(this.basename)) {
            //设置国际化资源文件的基础名(去掉语言国家代码的)
            messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
                    StringUtils.trimAllWhitespace(this.basename)));
        }
        if (this.encoding != null) {
            messageSource.setDefaultEncoding(this.encoding.name());
        }
        messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
        messageSource.setCacheSeconds(this.cacheSeconds);
        messageSource.setAlwaysUseMessageFORMat(this.alwaysUseMessageFormat);
        return messageSource;
    }

从上边的源码我们可以看出,我们的国际化资源文件可以直接起名字为messages.properties,springboot就会自动识别,其实相当于在配置文件中添加了一个spring.messages.basename=messages,如果我们指定一个xxx.properties作为国际化文件,那么我们就指定

spring.messages.basename=xxx就可以了,springboot会自动的找到以xxx开头的properties,根据语言和国家代码,找到相应的xxx_zh_CN.properties(中文_中国)、xxx_en_US.properties(英文_美国)来选择其中的资源值作为当前页面中所要渲染的值。

2.2 添加资源文件

我们新建一个名称为i18n的文件夹,在里边添加3个配置文件,分别是login.properties(默认无语言选择时的配置),login_zh_CN.properties(中文语言配置),login_en_US.properties(英文语言配置),默认的格式为:文件名_区域_语言.properties;当我们这样命名生成文件后,idea也会帮我们识别这是个国际化配置包,自动转换成如下的模式,上边附带一个Resource Bundle 'login'的文件夹,右键在这个文件夹上点击,就可以方便的添加其他语言的配置:

SpringBoot怎么实现国际化

SpringBoot怎么实现国际化

SpringBoot怎么实现国际化

分别在三个配置文件中写入配置:

login.properties:

login.btn=登陆~
login.passWord=密码~
login.remember=记住我~
login.tip=请登陆~
login.username=用户名~

login_zh_CN.properties:

login.tip=请登录
login.username=用户名
login.password=密码
login.btn=登录
login.remember= 记住我

login_en_US.properties:

login.tip=Please sign in
login.username=Username
login.password=Password
login.btn=Sign in
login.remember = Remember Me

然后我们的主配置文件application.properties中添加如下配置,启用我们自定义的资源文件:

spring.messages.basename=i18n.login

 2.3 添加登录页面

这里我们以之前的thymeleaf语法来添加一个登录页面来进行测试

<!DOCTYPE html>
<html lang="en"  xmlns:th="Http://www.thymeleaf.org">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="description" content="">
        <meta name="author" content="">
        <title>Signin Template for Bootstrap</title>
        <!-- Bootstrap core CSS -->
        <link  th:href="@{/WEBjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet">
        <!-- Custom styles for this template -->
        <link  th:href="@{/asserts/css/signin.css}" rel="stylesheet">
    </head>
    <body class="text-center">
        <form class="form-signin" action="dashboard.html" th:action="@{/user/login}" method="post">
            <img class="mb-4" th:src="@{/asserts/img/bootstrap-solid.svg}" src="asserts/img/bootstrap-solid.svg" alt="" width="72" height="72">
            <h2 class="h4 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h2>
            <!--判断-->
            <p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
            <label class="sr-only" th:text="#{login.username}">Username</label>
            <input type="text"  name="username" class="form-control" placeholder="Username" th:placeholder="#{login.username}" required="" autofocus="">
            <label class="sr-only" th:text="#{login.password}">Password</label>
            <input type="password" name="password" class="form-control" placeholder="Password" th:placeholder="#{login.password}" required="">
            <div class="checkbox mb-3">
                <label>
                      <input type="checkbox" value="remember-me"/> [[#{login.remember}]]
                </label>
            </div>
            <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
            <p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
            <a class="btn btn-sm" th:href="@{/index.html(lang='zh_CN')}">中文</a>
            <a class="btn btn-sm" th:href="@{/index.html(lang='en_US')}">English</a>
        </form>
    </body>

</html>

#{login.username} 会直接从国际化的资源文件中取到我们所配置的值,根据不同的语言会切换为不同的语言配置,默认是根据浏览器的语言来判断的,我们可以按照以下方式来设置浏览器的语言来查看效果,在谷歌浏览器的设置里边搜索语言,然后添加一个英文语言,设置语言的顺序来设置首选语言,如下所示:

SpringBoot怎么实现国际化

我们也可以查看浏览器发送的请求头部分来确定语言是否 设置成功:

SpringBoot怎么实现国际化

2.4 自定义语言文化解析器

从上边我们可以看出,默认的是从请求头中解析语言文化的,我们可以设置自己的解析器,比如访问页面的查询参数中来解析语言,下边是我们的登录页面,我们可以添加两个按钮,当点击按钮的时候,重新跳转index.html页面,并附带上一个lang的参数:

SpringBoot怎么实现国际化

可以查看网页源代码,我们生成的链接:

SpringBoot怎么实现国际化

html关键代码,用thymeleaf生成,也可以自己手写:

<button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
<p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
<a class="btn btn-sm" th:href="@{/index.html(lang='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(lang='en_US')}">English</a>

添加我们自己的解析器MyLocaleResolver,从请求参数中获取lang,根据lang的值来设置不同的Locale:

SpringBoot怎么实现国际化

package com.example.demo.component;

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) {
        String lang = httpServletRequest.getParameter("lang");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(lang)){
            String[] parts = lang.split("_");
            locale = new Locale(parts[0],parts[1]);
        }
        return locale;
    }

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

    }
}

在WebConfig添加如下代码,把这个MyLocaleResolver添加到容器中去,springboot发现到有LocaleResolver的新实例,就会用这个解析器:

SpringBoot怎么实现国际化

重新编译启动就可以了,点击不同语言跳转不同链接,显示不同的语言:

SpringBoot怎么实现国际化

关于“SpringBoot怎么实现国际化”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot怎么实现国际化”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网node.js频道。

--结束END--

本文标题: SpringBoot怎么实现国际化

本文链接: https://lsjlt.com/news/91010.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot怎么实现国际化
    这篇文章主要介绍了SpringBoot怎么实现国际化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么实现国际化文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • struts2国际化怎么实现
    这篇文章主要讲解了“struts2国际化怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“struts2国际化怎么实现”吧!1.java中使用国际化。国际化即internationali...
    99+
    2023-06-17
  • jspXCMS国际化怎么实现
    这篇文章主要讲解了“jspXCMS国际化怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jspXCMS国际化怎么实现”吧!在/src/main/resources/conf/plugi...
    99+
    2023-06-26
  • Java怎么实现国际化
    本篇内容主要讲解“Java怎么实现国际化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现国际化”吧!Java中的国际化国际化,就是项目能够让所有的国家的语言都能够支持。Java既然...
    99+
    2023-06-02
  • 使用Struts2怎么实现国际化
    今天就跟大家聊聊有关使用Struts2怎么实现国际化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在src目录下添加两个资源文件,命名方式很重要的。格式:baseName_langu...
    99+
    2023-05-30
    struts2
  • 使用Java怎么实现国际化
    本篇文章给大家分享的是有关使用Java怎么实现国际化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。基础知识  “国际化信息”也称为“本地化信息”,一般需要两个条件才可以确定一个...
    99+
    2023-05-31
    java ava
  • 如何在springboot中实现页面的国际化
    确保这个修改是正确的(否则将会出现乱码) 创建i18n文件夹(就是国际化的意思),然后在此文件加下创login.properties login_zh_CN,properties文...
    99+
    2024-04-02
  • SpringBoot如何实现前后端分离国际化
    这篇“SpringBoot如何实现前后端分离国际化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot如何实现...
    99+
    2023-07-05
  • 利用Spring MVC怎么实现国际化
    这期内容当中小编将会给大家带来有关利用Spring MVC怎么实现国际化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Spring MVC的国际化是建立在Java国际化的基础上的,其一样是通过提供不同国家...
    99+
    2023-05-31
    springmvc
  • VB中怎么实现国际化和本地化
    在VB中实现国际化和本地化可以通过使用资源文件来实现。资源文件是一种存储不同语言文本、图像等资源的文件,可以根据用户的语言设置来加载...
    99+
    2024-04-03
    VB
  • gettext模块实现Python国际化
    1.gettext模块介绍gettext模块为Python模块和应用程序提供国际化(i18n)和本地化(l10n)服务。它提供两套API,一套高层的类似于GNU gettext的API和一套基于类的API。前者适用于单语言的场景,并且语言的...
    99+
    2023-01-31
    模块 gettext Python
  • SpringBoot实现前后端分离国际化的示例详解
    目录前言1、设置国际化属性文件2、创建解析器和拦截器3、启动配置文件设置4、控制器示例5、小结前言 Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序...
    99+
    2023-02-22
    SpringBoot实现国际化 SpringBoot国际化
  • springboot页面国际化配置指南
    目录前言方法如下总结前言 前一段时间做了一个项目,需要解决中文、繁体、英文的国际化问题,所以本文将详细介绍springboot页面国际化配置的过程 方法如下 1.引入依赖pom.xm...
    99+
    2024-04-02
  • springboot页面国际化如何配置
    这篇文章主要介绍了springboot页面国际化如何配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot页面国际化如何配置文章都会有所收获,下面我们一起来看看吧。方法如下引入依赖pom.xml...
    99+
    2023-06-29
  • PHP国际化组件中的国际化日历类怎么用
    这篇文章主要介绍“PHP国际化组件中的国际化日历类怎么用”,在日常操作中,相信很多人在PHP国际化组件中的国际化日历类怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP国际化组件中的国际化日历类怎么用...
    99+
    2023-06-20
  • Angular项目如何实现国际化
    这篇文章主要介绍Angular项目如何实现国际化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正如angular官网所说,项目国际化是一件具有挑战性,需要多方面的努力、持久的奉献和决...
    99+
    2024-04-02
  • 如何在PHP中实现国际化?
    随着国际化和全球化的加速推进,一些网站和应用程序需要支持多语言,以满足不同语言用户的需求。PHP作为一种流行的编程语言,它本身也提供了一些语言本地化方面的功能。在本文中,我们将探讨如何在PHP中实现国际化。什么是国际化?国际化是指适应不同语...
    99+
    2023-05-14
    PHP国际化 多语言支持 翻译库管理
  • springboot+thymeleaf国际化之LocaleResolver接口有什么用
    这篇文章主要为大家展示了“springboot+thymeleaf国际化之LocaleResolver接口有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“springboot+thymel...
    99+
    2023-05-30
    springboot thymeleaf localeresolver
  • 史上最佳springboot Locale 国际化方案
    目录1、国际化资源2、编写配置3、用法详解4、测试1、国际化资源 使用IDEA创建资源组 2、编写配置 application.yml 增加国际化目录配置 增加配置类 从请...
    99+
    2024-04-02
  • Springboot Thymeleaf如何配置国际化页面
    本文小编为大家详细介绍“Springboot Thymeleaf如何配置国际化页面”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot Thymeleaf如何配置国际化页面”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作