spring boot 国际化——迹忆客-ag捕鱼王app官网

国际化是使我们的应用程序适应不同语言和地区的过程,而无需对源代码进行工程更改。 换句话说,国际化是本地化的准备。

在本章中,我们将详细了解如何在 spring boot 中实现国际化。

依赖项

我们需要 spring boot starter web 和 spring boot starter thymeleaf 依赖项来在 spring boot 中开发 web 应用程序。

maven


   org.springframework.boot
   spring-boot-starter-web


   org.springframework.boot
   spring-boot-starter-thymeleaf

gradle

compile('org.springframework.boot:spring-boot-starter-web')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'

localeresolver

我们需要确的应用程序的默认语言环境。 我们需要在 spring boot 应用程序中添加 localeresolver bean。

@bean
public localeresolver localeresolver() {
   sessionlocaleresolver sessionlocaleresolver = new sessionlocaleresolver();
   sessionlocaleresolver.setdefaultlocale(locale.us);
   return sessionlocaleresolver;
}

localechangeinterceptor

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

@bean
public localechangeinterceptor localechangeinterceptor() {
   localechangeinterceptor localechangeinterceptor = new localechangeinterceptor();
   localechangeinterceptor.setparamname("language");
   return localechangeinterceptor;
}

要实现此效果,我们需要将 localechangeinterceptor 添加到应用程序的注册表拦截器中。 配置类应该继承 webmvcconfigureradapter 类并覆盖 addinterceptors() 方法。

@override
public void addinterceptors(interceptorregistry registry) {
   registry.addinterceptor(localechangeinterceptor());
}

消息来源

默认情况下,spring boot 应用程序从 classpath 下的 src/main/resources 文件夹中获取消息源。 默认区域设置消息文件名应为 message.properties ,每个区域设置的文件应命名为 messages_xx.properties 。 “xx”代表地区代码。

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

默认的 messages.properties 将如下所示

welcome.text=hi welcome to everyone

中文 messages_cn.properties 将如下所示

welcome.text=欢迎访问迹忆客 spring boot 教程

注意 - 消息源文件应保存为“utf-8”文件格式。


html 文件

在 html 文件中,使用语法 #{key} 显示来自属性文件的消息。


完整的代码如下

maven – pom.xml



    4.0.0
    com.spring
    springbootproject
    1.0-snapshot
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.6
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

gradle – build.gradle

buildscript {
   ext {
      springbootversion = '1.5.8.release'
   }
   repositories {
      mavencentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springbootversion}")
   }
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group = 'com.study'
version = '0.0.1-snapshot'
sourcecompatibility = 1.8
repositories {
   mavencentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter-web')
   compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
   testcompile('org.springframework.boot:spring-boot-starter-test')
}

下面给出了主要的 spring boot 应用程序类文件

package com.study;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
/**
 * @author jiyik.com
 */
@springbootapplication
public class myapplication {
    public static void main(string[] args) {
        springapplication.run(myapplication.class, args);
    }
}

控制器类文件如下

package com.study.controller;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
/**
 * @author jiyik.com
 */
@controller
public class viewcontroller {
    @requestmapping("/locale")
    public string locale() {
        return "locale";
    }
}

支持国际化的配置类

package com.study;
import jdk.vm.ci.meta.local;
import org.springframework.context.annotation.bean;
import org.springframework.web.servlet.localeresolver;
import org.springframework.web.servlet.config.annotation.interceptorregistry;
import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter;
import org.springframework.web.servlet.i18n.localechangeinterceptor;
import org.springframework.web.servlet.i18n.sessionlocaleresolver;
import java.util.locale;
public class internationalization extends webmvcconfigureradapter {
    @bean
    public localeresolver localeresolver() {
        sessionlocaleresolver sessionlocaleresolver = new sessionlocaleresolver();
        sessionlocaleresolver.setdefaultlocale(locale.us);
        return sessionlocaleresolver;
    }
    @bean
    public localechangeinterceptor localechangeinterceptor() {
        localechangeinterceptor localechangeinterceptor = new localechangeinterceptor();
        localechangeinterceptor.setparamname("language");
        return localechangeinterceptor;
    }
    @override
    public void addinterceptors(interceptorregistry registry) {
        registry.addinterceptor(localechangeinterceptor());
    }
}

消息来源——messages.properties 如下所示

welcome.text = hi welcome to everyone

message_cn.properties 如下所示

welcome.text = salut bienvenue à tous

html 文件 locale.html 应放置在 classpath 上的 templates 目录下,如下所示


   
      
      迹忆客(jiyik.com) - spring boot 国际化
   
   
      
   

这里我们使用 idea 来启动服务(读者也可以使用 mvn clean install 或者 gradle clean build 生成可执行jar包)

spring boot 异常处理 idea启动服务

现在使用浏览器访问 url http://localhost:8080/locale ,我们可以看到以下输出

spring boot 国际化默认

访问 url http://localhost:8080/locale?language=cn 将输出如下内容

spring boot 国际化中文

查看笔记

扫码一下
查看教程更方便
网站地图