MOOC该链接第三章第二节

尚硅谷SpringBoot全集 web开发国际化 xjbo  (7天,过期可以留言索取)

resources下建立文件

上到下为: 默认的,英语(美国),中文(中国)

en

login.btn=Sign In
login.password=PassWord
login.remember=Remember Me
login.tip=Please sign in
login.username=UserName

zh

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

页面:

<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content=""> <title>登录页面</title> <!-- Bootstrap Core CSS -->
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS -->
<link href="/vendor/metisMenu/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS -->
<link href="/dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts -->
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> </head> <body> <div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title" th:text="#{login.tip}">Please sign in</h3>
</div>
<div class="panel-body">
<form role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="UserName" name="UserName" type="text"
th:placeholder="#{login.username}" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="PassWord" name="PassWord" type="password"
th:placeholder="#{login.password}">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">[[#{login.remember}]]
</label>
</div>
<!-- Change this to a button or input when using this as a form -->
<a href="index.html" class="btn btn-lg btn-success btn-block" th:text="#{login.btn}">Login</a>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div> <!-- jQuery -->
<script src="/vendor/jquery/jquery.min.js"></script> <!-- Bootstrap Core JavaScript -->
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript -->
<script src="/vendor/metisMenu/metisMenu.min.js"></script> <!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script> </body> </html>

别忘记引入thymeleaf依赖以及配置它

pom

        <!--thymeleaf依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

properties

#thymeleaf
spring.thymeleaf.prefix=/views/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/** spring.messages.basename=i18n.login
spring.messages.basename=i18n.register
spring.messages.basename=i18n.other

实现点击中文/English切换语言版本

package com.tansuo365.test1.resolver;

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 { /**
* 解析区域信息
* @param request
* @return
*/
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取连接路径上的l后的值 l=zh_CN or en_US
String l = request.getParameter("l");
//如果没有值则使用默认语言版本
Locale locale = Locale.getDefault();
//如果有值则进行语言切换
if(!StringUtils.isEmpty(l)){
String[] split = l.split("_");
locale = new Locale(split[0],split[1]);
}
return locale;
} @Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }
}

注入配置到bean

package com.tansuo365.test1.config;

import com.tansuo365.test1.resolver.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver; @Configuration
public class MyAppConfig { @Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}

[Java中实现国际化] - 配合thymeleaf实现中英文自动切换(多语言)的更多相关文章

  1. [Java 进阶]Java中的国际化

    背景知识 现代软件开发,往往做出的应用程序不止给一个国家的人去使用.不同国家的人往往存在语言文字不通的问题.由此产生了国际化(internationalization).多语言(multi-langu ...

  2. Java中的国际化

    一.什么是国际化? 国际化是指应用程序运行时,可根据客户端请求来自的国家/地区.语言的不同而显示不同的界面. 二.Java如何实现国际化? Java程序的国际化思路是将程序中的标签.提示等信息放在资源 ...

  3. Java 中的国际化

    国际化 ,英文叫 internationalization 单词太长 ,又被简称为 i18n(取头取尾中间有18个字母)不经大声呼喊 ,这都行 !接着看什么是国际化 , 国际化是指让产品或是程序在无需 ...

  4. 在Vue中加入国际化(i18n)中英文功能

    1.npm安装方法 npm install vue-i18n --save 2.在src资源文件下创建文件夹i18n,i18n下面创建index.js文件,引入VueI18n和导入语言包(按开发需求可 ...

  5. Java中 Character方法练习:字符串中英文字母个数 5435abc54abc3AHJ5 正则:matches("[a-zA-Z0-9]{1}")

    package com.swift; public class String_Letter_Number_Test { public static void main(String[] args) { ...

  6. Vue国际化处理 vue-i18n 以及项目自动切换中英文

    1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang ...

  7. JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率

    大家好,又见面了. 在JAVA做前后端分离的项目开发的时候,服务端需要提供接口文档供周边人员做接口的对接指导.越来越多的项目都在尝试使用一些基于代码自动生成接口文档的工具来替代由开发人员手动编写接口文 ...

  8. 在Service Fabric上部署Java应用,体验一把微服务的自动切换

    虽然Service Fabric的Java支持版本还没有正式发布,但是Service Fabric本身的服务管理.部署.升级等功能是非常好用的,那么Java的开发者可以如何利用上Service Fab ...

  9. JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容

    大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ...

随机推荐

  1. requests库的小技巧

    #coding:utf-8 import requests # url = 'http://www.baidu.com' # response = requests.get(url) # print ...

  2. sysbench的安装和做性能测试

    sysbench的安装和做性能测试 http://imysql.cn/node/312 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况. ...

  3. SQL 1

    SQL 教程 SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL.SQL Server.Access.Or ...

  4. [原创]nginx添加module之threads

    一.安装nginx yum安装nginx 折叠源码 1 2 3 4 5 6 7 8 9 10 11 12 # 添加nginx源 rpm -ivh http://nginx.org/packages/c ...

  5. SDUT2826:名字的价值

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2806 名字的价值 Time Limit: 10 ...

  6. selenium-python:登录网站并签到

    测试网站的图像验证码统一设置成了:121 Elements中定位元素比较费眼睛~~ import time from selenium import webdriver # import os use ...

  7. 机器学习理论基础学习19---受限玻尔兹曼机(Restricted Boltzmann Machine)

    一.背景介绍 玻尔兹曼机 = 马尔科夫随机场 + 隐结点 二.RBM的Representation BM存在问题:inference 精确:untractable: 近似:计算量太大 因此为了使计算简 ...

  8. pycharm跳到指定的行

    ctrl+g  弹出一个框,输入要跳的行数 ctrl+home  光标移到第一行 ctrl+end 光标移到最后一行

  9. EditPlus 4.3.2583 中文版已经发布

    新的版本提升了括号匹配的性能.请点击页面左上角连接下载.

  10. 《算法C语言实现》————三道题目

    1.对于N = 10,100和1000,记录你的运行环境中分别运行一下程序所花费的时间.(用python) import datetime global a a = 0 def time_1(s): ...