springboot实现网页中英文切换

知识点

JAVA中ResourceBundle

    这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。比如对于“取消”,中文中我们使用“取消”来表示,而英文中我们使用“cancel”。若我们的程序是面向国际的(这也是软件发展的一个趋势),那么使用的人群必然是多语言环境的,实现国际化就非常有必要。而ResourceBundle可以帮助我们轻松完成这个任务:当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包(大多数情况下也就是.properties文件)中加载它。这样可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。

 这使编写的程序可以:

  • 轻松地本地化或翻译成不同的语言
  • 一次处理多个语言环境
  • 以后可以轻松进行修改,以便支持更多的语言环境

说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。

使用这个类,properties需要遵循一定的命名规范,一般的命名规范是: 自定义名语言代码国别代码.properties,如果是默认的,直接写为:自定义名.properties。

 比如:

myres_en_US.properties

myres_zh_CN.properties

myres.properties 

当在中文操作系统下,如果myres_zh_CN.properties、myres.properties两个文件都存在,则优先会使用myres_zh_CN.properties,当myres_zh_CN.properties不存在时候,会使用默认的myres.properties。

没有提供语言和地区的资源文件是系统默认的资源文件。

操作

思路:1.添加属性文件 2. 添加配置信息 3.添加国际化的cookie和拦截器 注入到bean中 4.编写页面 添加中英文转换按钮 5 添加 controller跳转相关页面

代码

前提:在pom.xml添加上thymeleaf的相关依赖 配置文件中做好相关配置

1.添加属性文件 我的是test做的demo

resources下添加文件夹i18n(i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称)

添加resources bundle属性文件 注意命名规范  可以发现创建的三个文件会自动归为一组

一共三个文件 默认的test 中文状态的test_zh_CN 英文状态的 test_en_US

在访问时 会根据浏览器的默认语言 加载对应的属性文件 当没有匹配的值 会使用默认属性文件

添加key value值 打开默认的test文件 点击左下角切换到resource bundle更方便编辑

2. 添加配置信息

在总配置文件中指定国际化文件的位置

#配置自己的国际化文件位置
spring.messages.basename=i18n/test

3.添加国际化的cookie和拦截器 注入到bean中

@Bean
    public LocaleResolver localeResolver() {
        CookieLocaleResolver slr = new CookieLocaleResolver();
        slr.setCookieMaxAge(3600);
        slr.setCookieName("Language");
        return slr;
    }

    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            //拦截器
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(new LocaleChangeInterceptor()).addPathPatterns("/**");
            }
        };
    }

4.编写页面 添加中英文转换按钮

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<!--使用thymeleaf标签 添加上对应网址使之生效-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>hello</title>
    <link rel="stylesheet" href="https://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
</head>
<body>
<h1>hello springboot demo!</h1>

<label th:text="#{test.username}">用户名</label>
<input type="text"  name="username" class="form-control" placeholder="Username"
       th:placeholder="#{test.username}" required="" autofocus="">
<a class="btn btn-sm" th:href="@{/hi(locale='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/hi(locale='en_US')}">English</a>

<script src="https://s1.pstatp.com/cdn/expire-1-M/jquery/1.10.2/jquery.min.js"></script>
</body>
</html>

5 添加 controller跳转相关页面

@Controller
public class Demo {
    @RequestMapping("/hi")
    public String sayHello(){
        return "test";
    }
}

启动运行

可以看到点击下面切换英文 页面刷新后显示英文 并且网址中附带了相应的参数

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:下文的 *** 代表文件名的组件名称。 # 包含: 文-英文对照文档:【***-javadoc-API文档-文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: 文-英文对照文档,英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar文文档.zip】,再解压其的 【***-javadoc-API文档-文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
以下是在Spring Boot项目实现中英文切换的步骤: 1. 设置项目编码UTF8 ```java 在项目配置文件application.properties或application.yml添加以下配置: spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true ``` 2. 在resources目录下新建i18n文件夹及语配置文件 ```shell 在src/main/resources目录下新建i18n文件夹,并在该文件夹下创建多个语配置文件,例如: messages.properties(默认语配置文件) messages_en.properties(英文语配置文件) messages_zh.properties(文语配置文件) ``` 3. 指出国际化相关文件的位置 ```java 在项目配置文件application.properties或application.yml添加以下配置: spring.messages.basename=i18n/messages ``` 4. 展示页面 ```html 在HTML页面使用Thymeleaf模板引擎实现国际化,例如: <p th:text="#{hello}"></p> ``` 5. 使用按钮切换中英文页面 5.1 新建html页面 ```html 在HTML页面添加切换的按钮,例如: <button onclick="window.location.href='?lang=en'">English</button> <button onclick="window.location.href='?lang=zh'">文</button> ``` 5.2 实现LocaleResolver 接口 ```java 创建一个自定义的LocaleResolver实现类,用于根据请求参数或其他方式切换,例如: public class MyLocaleResolver implements LocaleResolver { // 实现切换的逻辑 } ``` 5.3 放入Bean ```java 将自定义的LocaleResolver实现类放入Spring容器,例如: @Bean public LocaleResolver localeResolver() { return new MyLocaleResolver(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值