博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
玩转spring boot——国际化
阅读量:4944 次
发布时间:2019-06-11

本文共 5309 字,大约阅读时间需要 17 分钟。

前言


在项目开发中,可能遇到国际化的问题,而支持国际化却是一件很头疼的事。但spring boot给出了一个非常理想和方便的方案。

 

一、准备工作


 

pom.xml:

4.0.0
com.example
spring-boot-14
0.0.1-SNAPSHOT
jar
spring-boot-14
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.5.3.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
pom.xml

 

App.java:

package com.example;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}
App.java

 

创建国际化配置文件:LocaleConfig.java

 

package com.example;import java.util.Locale;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;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.WebMvcConfigurerAdapter;import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;import org.springframework.web.servlet.i18n.SessionLocaleResolver;@Configuration@EnableAutoConfiguration@ComponentScanpublic class LocaleConfig extends WebMvcConfigurerAdapter {    @Bean    public LocaleResolver localeResolver() {        SessionLocaleResolver slr = new SessionLocaleResolver();        // 默认语言        slr.setDefaultLocale(Locale.US);        return slr;    }    @Bean    public LocaleChangeInterceptor localeChangeInterceptor() {        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();        // 参数名        lci.setParamName("lang");        return lci;    }    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(localeChangeInterceptor());    }}

 

MainController.java:

package com.example;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;/** * 控制器 博客出处:http://www.cnblogs.com/GoodHelper/ * */@Controllerpublic class MainController {    @GetMapping("/")    public String index() {        return "index";    }}

 

在resources目录增加两个properties文件,分别为:

messages_en_US.properties:

hello=hello

messages_zh_CN.properties:

hello=\u4F60\u597D

 

二、前端调用


 

在thymeleaf模板引擎中使用#{}的标签就能调用messages中的内容

index.html:

玩转spring boot——国际化

玩转spring boot——国际化

from 刘冬的博客

English(US) 简体中文

点击访问原版博客(www.cnblogs.com/GoodHelper)

 

项目结构如下:

 

 

运行效果:

 

 

三、后端渲染


 

 

修改MainController类:

package com.example;import java.util.Locale;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.MessageSource;import org.springframework.context.i18n.LocaleContextHolder;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;/** * 控制器 博客出处:http://www.cnblogs.com/GoodHelper/ * */@Controllerpublic class MainController {    @Autowired    private MessageSource messageSource;    @GetMapping("/")    public String index(Model model) {        Locale locale = LocaleContextHolder.getLocale();        model.addAttribute("world", messageSource.getMessage("world", null, locale));        return "index";    }}

其中,MessageSource类可以获取messages的内容。

 

index.html:

玩转spring boot——国际化

玩转spring boot——国际化

from 刘冬的博客

English(US) 简体中文

点击访问原版博客(www.cnblogs.com/GoodHelper)

 一个使用了#{}标签直接调用messages的内容,另一个使用了${}标签来获取后台的值

 

运行效果:

 

 总结


 

  国际化就已经实现了,然而更完美的做法是当第一次请求时,在后台通过Request获取到一个初始的语言。当获取到的语言和用户所需要的语言不一直时,才需要在前端UI再去设置哪个语言是用户所需要的。

 

代码下载:https://github.com/carter659/spring-boot-14.git

 

如果你觉得我的博客对你有帮助,可以给我点儿打赏,左侧微信,右侧支付宝。

有可能就是你的一点打赏会让我的博客写的更好:)

 

转载于:https://www.cnblogs.com/GoodHelper/p/6824492.html

你可能感兴趣的文章
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
打印图形
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
实验十 指针2
查看>>
[python]pickle和cPickle
查看>>
剑指Offer--二叉树的镜像
查看>>
PAT-BASIC-1031-查验身份证
查看>>
连连看小游戏
查看>>
(180905)如何通过梯度下降法降低损失----Google机器学习速成课程笔记
查看>>
面试介绍项目经验(转)
查看>>
<metro>Google的验证
查看>>
Oracle 表的分组操作
查看>>
在OS X上的Intllij Idea中配置GlassFish
查看>>
用查表法快速转换yv12到RGB【转】
查看>>
使用公钥登录SSL
查看>>
hdu 1290_献给杭电五十周年校庆的礼物
查看>>
豆瓣电影api
查看>>
BufferedInputStream和FileInputStream的区别
查看>>