页面国际化

有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化!

1、配置文件编写

  1. 首先在resources资源文件下新建一个i18n目录,存放国际化配置文件
  2. 新建一个login.properties文件,还有一个login_zh_CN.properties;
  3. 新建好这些文件之后,编写配置,idea下面由另外一个视图

    这样就是配置好了
  4. 接下来我们要在application.yml中配置指定的路径(这里涉及到MessageSourceAutoConfiguration这个类)
spring:
messages:
basename: i18n/login
  1. 配置页面国际化值
    这里我们要获取国际化的值,需要用到thymeleaf中的#{…}
  2. 实现点击按钮进行自动切换中英文
    在spring中有一个国际化的Locale(区域信息对象);里面有一个叫做LocaleResolver(获取区域信息对象)的解析器
    在AcceptHeaderLocaleResolver 这个类中有一个方法
	public Locale resolveLocale(HttpServletRequest request) {
Locale defaultLocale = getDefaultLocale();
if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
return defaultLocale;
}
Locale requestLocale = request.getLocale();
List<Locale> supportedLocales = getSupportedLocales();
if (supportedLocales.isEmpty() || supportedLocales.contains(requestLocale)) {
return requestLocale;
}
Locale supportedLocale = findSupportedLocale(request, supportedLocales);
if (supportedLocale != null) {
return supportedLocale;
}
return (defaultLocale != null ? defaultLocale : requestLocale);
}

这样的话,我们也可以自己去写一个自己的视图解析
首先修改一下前端页面的跳转链接

<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>

然后再去编写一个自己的组件类

package com.example.config;

import org.springframework.lang.Nullable;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale; public class MyLocaleResolver implements LocaleResolver {
private Locale defaultLocale;
//解析请求
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取请求中的语言参数
String l = request.getParameter("l");
//默认的
Locale locale = getDefaultLocale();
if(!StringUtils.isEmpty(l)){
//zh_CN
String[] split = l.split("_");
//国家,地区
locale = new Locale(split[0],split[1]);
}
return locale;
} @Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }
public Locale getDefaultLocale() {
return this.defaultLocale;
}
public void setDefaultLocale(@Nullable Locale defaultLocale) {
this.defaultLocale = defaultLocale;
}
}

最后在MyMvcConfig下进行配置

//激活自定义组件
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
  1. 运行项目测试成果!

SpringBoot03:首页国际化的更多相关文章

  1. SpringMVC实现国际化过程中所遇问题

    前言:在利用SpringMVC实现国际化的过程中,看似简单,实则还是遇到了一些小问题,现在笔者对所遇问题总结如下. 注:笔者所用的编辑器为Intellij IEDA 14.1.7版本 1.国际化资源文 ...

  2. Springboot:员工管理之国际化(十(3))

    1:IDEA编码设置UTF-8 2:创建国际化文件 i18n\login.properties #默认语言 i18n\login_en_US.properties #英文语言 i18n\login_z ...

  3. Jsp 国际化访问首页选择展示不同字体小例子

    要求:创建一个首页,默然显示英文信息,但可以让用户选择使用英文,繁体中文或简体中文. 1.编写hello_en_US.txt,内容如下: cc.openhome.welcome=welcomecc.o ...

  4. 4_3.springboot2.x之默认访问首页和国际化

    1.默认访问首页 1.引入thymeleaf和引入bootstrap <!--引入thymeleaf--> <dependency> <groupId>org.sp ...

  5. SpringBoot:扩展SpringMVC、定制首页、国际化

    目录 扩展使用SpringMVC 如何扩展SpringMVC 为何这么做会生效(原理) 全面接管SpringMVC 首页实现 页面国际化 SpringBoot扩展使用SpringMVC.使用模板引擎定 ...

  6. jeecms3.0.4版本 详解请求如何找到首页(转)

    第一步:发送http://localhost:8080/emisstrade/ 请求 第二步:首先进入配置文件web.xml, <context-param> <param-name ...

  7. ASP.NET系统国际化总结

    引言 系统要求同时支持中英文,以前对国际化这块只是听说过,从来没有自己动手过,提到国际化那么首先肯定想到的就是资源文件,也确实是这样,于是乎我从开始着手系统国际化功能时前前后后共投入了4次时间段,每次 ...

  8. Django分析之国际化处理

    最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线 ...

  9. Java SpringMVC实现国际化整合案例分析(i18n)

    所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...

  10. 详述iOS国际化

    在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加载进来即可.但最近公司项目的新需求增加英文版本,并支持应用内无死角切换~,这才跳过各种坑实现了应用内切换语言, ...

随机推荐

  1. .Net中的AutoScrollPosition问题 (panel 滚动条的位置设定)

    本文转自:http://www.cnblogs.com/h2appy/archive/2008/04/23/1167400.html 有Panel类型的窗体panel1,其AutoScroll设为了T ...

  2. NC65主键含义

    最简单的办法,调用用友的类 import nc.jdbc.framework.generator.SequenceGenerator; IdGenerator idGenerator = new Se ...

  3. cmd命令根据端口号杀进程

    1.根据端口查到进程pid netstat –ano|findstr 端口号 1 2.使用taskkill命令杀死进程 taskkill /pid pid 1 温馨提醒: 1.执行完第一步后,命令行显 ...

  4. kubernetes不同pod之间调用(四)

    kubernetes不同pod之间调用(四) k8s系列 源自我工作上的实际场景,记录于此. kubernetes不同服务间的调用.kubernetes不同容器间的调用.kubernetes不同- 今 ...

  5. C++产生N以内的随机整数

    C++产生N(这里N=100)以内的随机整数的例子: #include <iostream> #include <ctime> using namespace std; int ...

  6. 一文掌握Ascend C孪生调试

    本文分享自华为云社区<一文掌握Ascend C孪生调试>,作者:昇腾CANN. 1 What,什么是孪生调试 Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码 ...

  7. 【华为云技术分享】DLI跨源|当DLI遇见MongoDB

    导语: MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司.游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求, ...

  8. 云图说丨OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse

    摘要:ClickHouse是俄罗斯公司 Yandex 在2016年开源的高性能.开源联机分析列式数据库管理系统.开源后,凭借卓越的分析性能.极好的线性扩展能力和丰富的功能,被业界公认为实时分析领域 O ...

  9. 鸿蒙轻内核源码分析:MMU协处理器

    摘要:本系列首先了解下ARM CP15协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下MMU相关汇编代码. 本文分享自华为云社区<鸿蒙轻内核A核源码分析系列六 MMU协处理器> ...

  10. MySQL Select 语句执行顺序

    一条 SQL 查询语句结构如下: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN ...