【第19章】spring-i8n

文章目录

  • 前言
  • 一、准备
  • 二、Java国际化
    • 1.测试类
    • 2.测试结果
  • 三、Spring国际化
    • 1.配置文件
    • 2.测试类
    • 3.测试结果
    • 4.占位符
      • 4.1 准备
      • 4.2 测试类
      • 4.3 测试结果
  • 总结


前言

在Spring中实现国际化Internationalization(i18n)其实就是完成语言的切换,类似于下面网站右上角的切换语言功能:
北京车展
在这里插入图片描述


一、准备

在这里插入图片描述

citys_zh_CN.properties

city_1=上海
city_2=北京
city_3=深圳
city_4=广州
city_5=重庆
city_6=苏州
city_7=成都
city_8=杭州
city_9=武汉
city_10=南京

citys_en_US.properties

city_1=New York City
city_2=Los Angeles
city_3=Chicago
city_4=Houston
city_5=Dallas
city_6=San Francisco
city_7=Washington D.C.
city_8=Boston
city_9=Atlanta
city_10=Philadelphia

二、Java国际化

1.测试类

代码如下(示例):

package org.example;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * Create by zjg on 2024/4/18
 */
public class Main {
    public static void main(String[] args) {
        String prefix="city_";
        System.out.println("Hello i18n!");
        String baseName="i18n/citys";
        ResourceBundle china = ResourceBundle.getBundle(baseName, Locale.CHINA);
        ResourceBundle us = ResourceBundle.getBundle(baseName, Locale.US);
        System.out.println("2023年度中美GDP十强城市:");
        for(int i=1;i<=10;i++){
            System.out.print(china.getString(prefix+String.valueOf(i))+" ");
            System.out.println(" "+us.getString(prefix+String.valueOf(i)));
        }

    }
}

2.测试结果

代码如下(示例):

Hello i18n!
2023年度中美GDP十强城市:
上海  New York City
北京  Los Angeles
深圳  Chicago
广州  Houston
重庆  Dallas
苏州  San Francisco
成都  Washington D.C.
杭州  Boston
武汉  Atlanta
南京  Philadelphia

三、Spring国际化

1.配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames" >
            <array>
                <value>i18n.citys</value>
                <value>i18n.car</value>
            </array>
        </property>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="cacheSeconds" value="0"/> <!-- 禁用缓存,实时加载 -->
    </bean>
</beans>

2.测试类

package org.example.i18n;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import java.util.Locale;

/**
 * Create by zjg on 2024/4/18
 */
@SpringJUnitConfig(locations="classpath:springContext.xml")
public class Main {
    @Autowired
    private MessageSource messageSource;

    public String getMessage(String code, Object[] args, Locale locale) {
        return messageSource.getMessage(code, args, locale);
    }
    @Test
    public void test() {
        String prefix="city_";
        System.out.println("Hello i18n!");
        System.out.println("2023年度中美GDP十强城市:");
        for(int i=1;i<=10;i++){
            System.out.print(getMessage(prefix+i, null,Locale.CHINA)+" ");
            System.out.println(getMessage(prefix+i, null,Locale.US)+" ");
        }
    }
}

3.测试结果

Hello i18n!
2023年度中美GDP十强城市:
上海 New York City 
北京 Los Angeles 
深圳 Chicago 
广州 Houston 
重庆 Dallas 
苏州 San Francisco 
成都 Washington D.C. 
杭州 Boston 
武汉 Atlanta 
南京 Philadelphia 

4.占位符

4.1 准备

在这里插入图片描述

car_zh_CN.properties

car_1=Auto China {0}
car_2={0} (第十八届) 北京国际汽车展览会
car_3=中国国际展览中心(顺义馆) {1}
car_4=中国国际展览中心(朝阳馆) {2}

car_en_US.properties

car_1=Auto China {0}
car_2={0} (The 18th) Beijing International Automobile Exhibition
car_3=China International Exhibition Center (Shunyi Hall) {1}
car_4=China International Exhibition Center (Chaoyang Hall) {2}

4.2 测试类

package org.example.i18n;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

/**
 * Create by zjg on 2024/4/18
 */
@SpringJUnitConfig(locations="classpath:springContext.xml")
public class Main {
    @Autowired
    private MessageSource messageSource;

    public String getMessage(String code, Object[] args, Locale locale) {
        return messageSource.getMessage(code, args, locale);
    }
    
    @Test
    public void placeholder() {
        String prefix="car_";
        System.out.println("Hello i18n!");
        System.out.println("2024北京国际汽车展览会");
        String[]args=new String[3];
        args[0]=format(LocalDate.now(),"yyyy");
        args[1]=format(LocalDate.of(2024,4,25),"yyyy年MM月dd日")
        +"-"+format(LocalDate.of(2024,5,4),"MM月dd日");
        args[2]=format(LocalDate.of(2024,4,25),"yyyy年MM月dd日")
                +"-"+format(LocalDate.of(2024,4,27),"dd日");
        for(int i=1;i<=4;i++){
            System.out.print(getMessage(prefix+i, args,Locale.CHINA)+" ");
            System.out.println(getMessage(prefix+i, args,Locale.US)+" ");
        }
    }
    public String format(LocalDate localDate,String pattern){
        return localDate.format(DateTimeFormatter.ofPattern(pattern));
    }
}

4.3 测试结果

Hello i18n!
2024北京国际汽车展览会
Auto China 2024 Auto China 2024 
2024 (第十八届) 北京国际汽车展览会 2024 (The 18th) Beijing International Automobile Exhibition 
中国国际展览中心(顺义馆) 2024年04月25日-05月04日 China International Exhibition Center (Shunyi Hall) 2024年04月25日-05月04日 
中国国际展览中心(朝阳馆) 2024年04月25日-27日 China International Exhibition Center (Chaoyang Hall) 2024年04月25日-27日

在这里插入图片描述

兄弟们,多学习,别被那又白又长的车给勾引了去,连魂都丢了。🙏


总结

回到顶部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/570732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.SpringCloud基础项目搭建利用RestTemplate实现远程调用

简单的微服务架构 父pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

短信视频提取批量工具,免COOKIE,博主视频下载抓取,爬虫

痛点&#xff1a;关于看了好多市面的软件&#xff0c;必须要先登录自己的Dy号才能 然后找到自己的COOKIE 放入软件才可以继续搜索&#xff0c;并且无法避免长时间使用 会导致无法正常显示页面的问题。 有没有一种方法 直接可以使用软件&#xff0c;不用设置的COOKIE的方法呢 …

Linux驱动开发:掌握SPI通信机制

目录标题 1、SPI简介2、SPI通信机制3、Linux内核中的SPI支持4、SPI核心API5、SPI控制器驱动6、SPI设备驱动 7、编写SPI设备驱动8、调试SPI驱动 在Linux驱动开发中&#xff0c;串行外设接口(SPI)是一种常见的高速全双工通信协议&#xff0c;用于连接处理器和各种外设。本文将深入…

会声会影滤镜怎么用 会声会影滤镜效果怎么调 会声会影视频制作教程

在进行视频剪辑时&#xff0c;合理地运用滤镜效果可以提升视频的观赏性&#xff0c;使你的作品更加出彩。这篇文章便一起来学习会声会影滤镜怎么用&#xff0c;会声会影滤镜效果怎么调。 一、会声会影滤镜怎么用 使用会声会影的滤镜效果非常简单&#xff0c;以下是具体的操作…

Rust腐蚀服务器定制地图开服

Rust腐蚀服务器定制地图开服 大家好我是艾西一个做服务器租用的网络架构师。Rust腐蚀这个游戏有很多的插件mod作者&#xff0c;在地图制作这一块也是一样&#xff0c;有些好玩的地图可能大家在map网站找到了但是不知道怎么操作设置那么今天艾西给大家说下特定定制地图怎么弄。…

Penpad获Gate Labs以及Scroll联创Sandy的投资

近期&#xff0c;Scroll上的LaunchPad &聚合收益平台Penpad迎来了重磅利好&#xff0c;该平台在前不久获得了来自于Gate Las的融资&#xff0c;在此后其又获得了Scroll联合创始人Sandy的融资&#xff0c;这也让Penpad平台成为了近期Scroll生态中最值得关注的项目之一。 事实…

《生成式AI导论》学习笔记

1.课程定位 2.什么是生成式人工智慧&#xff1f; 3. 今日的生成式人工智慧厉害在哪里&#xff1f; 4.训练不了人工智慧&#xff1f;那我训练自己 5.训练不了人工智慧&#xff1f;你可以训练你自己&#xff08;中&#xff09;——拆解问题使用工具 6.大语言模型修炼史——第一阶…

毕业设计注意事项(2024届更新中)

1.开题 根据学院发的开题报告模板完成&#xff0c;其中大纲部分可参考资料 2.毕设 根据资料中的毕设评价标准&#xff0c;对照工作量 3.论文 3.1 格式问题 非常重要&#xff0c;认真对比资料中我发的模板&#xff0c;格式有问题&#xff0c;答辩输一半&#xff01; 以word…

从零开始的软件测试学习之旅(一)理论知识篇

软件测试学习理论知识 一.软件测试分类二.什么是软件测试?软件测试选择最为经典的几个模型一.瀑布模型 :将软件生命周期进行划分二.快速原型模型三.敏捷开发 三.软件测试流程一.软件测试模型测试流程: 四.软件测试分类项目环境测试与代码 一.软件测试分类 1.按开发规模 小型…

Linux 基础命令使用创建用户

浏览网站的时候图片&#xff0c;看到一个小练习。创建用户分别位于不同的用户组。 解答下面的题目 2、建立用户使用 useradd&#xff0c;设置密码使用passwd的命令。大概不会使用命令可以借助man来解答。 先建立用户组&#xff1a; groupadd group1 # group1 不存在先建立&…

nginx学习记录-URL Rewrite

1. URL Rewrite 1.1 基本概念 有的时候我们访问后台网站时&#xff0c;会携带大量的参数&#xff0c;比如/test?id1&#xff0c;像这种ur就会携带一些参数&#xff0c;由于有些参数名会携带一些敏感信息&#xff0c;我们希望在url中隐藏传递的参数&#xff0c;比如将/test?…

轻松搭建llama3Web 交互界面 - Ollama + Open WebUI

Ubuntu下安装&#xff1a;&#xff08;官网&#xff1a;Download Ollama on Linux&#xff09; curl -fsSL https://ollama.com/install.sh | sh 就运行起来ollama了&#xff0c;不放心可以用ollama serve查看一下 ollama run llama3 就可以跑起来了&#xff0c; 那么我们肯…

线性代数基础1向量

1、向量是什么 1.1、向量的定义 在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;&#xff0c;指具有大小和方向的量。它可以形象化地表示为带箭头的线段。箭头所指&#xff1a;代表向量的方向&#xff1b;线段长度&#xff1a;代表向量的…

【程序创建的技巧】

文章目录 导语名词源代码目标代码&#xff08;object code&#xff09;可执行代码 创建源代码文件编译和链接UNIX编译和链接Linux编译和链接Windows命令行编译器Windows编译器 总结 导语 假设您编写了一个 C 程序。 如何让它运行起来呢&#xff1f; 具体的步骤取决于计算机环境…

CountDownLatch源码分析

1.创建 CountDownLatch latch new CountDownLatch(5); 2.latch.countDown(); 将count执行减一操作&#xff0c;当count为0时&#xff0c;等待中的线程会被唤醒 SIGNAL (值为-1)&#xff1a; 表示后继节点需要被唤醒。当一个节点释放锁的时候&#xff0c;会唤醒它的后继节点…

javaScript中的this 指向

this 指向总结 this 关键字是一个非常重要的语法点。 this 可以用在构造函数之中&#xff0c;表示实例对象。除此之外&#xff0c;this 还可以用在别的场合。但不管是什么场合&#xff0c;this 都有一个共同点&#xff1a;它总是返回一个对象。 关于 this 的指向&#xff0c…

基于Kepware的Hadoop大数据应用构建-提升数据价值利用效能

背景 Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;它允许用户在不需要深入了解分布式底层细节的情况下&#xff0c;开发分布式程序。Hadoop充分利用集群的威力进行高速运算和存储&#xff0c;特别适用于处理超大数据集。 Hadoop的生态系统非常丰富&…

如何利用美国站群服务器通过CN2线路优化中美之间的数据传输?

如何利用美国站群服务器通过CN2线路优化中美之间的数据传输? 随着全球化进程的不断推进&#xff0c;跨国企业和国际市场的拓展对数据传输速度和稳定性提出了更高的要求。特别是对于中美之间的数据传输&#xff0c;由于地理位置遥远和网络环境不同&#xff0c;优化数据传输变得…

风格迁移adaIN 和iT的adaLN

文章目录 BN、LN、IN、GN的区别![](https://img-blog.csdnimg.cn/direct/d38c005616f145cba2aa1c4c2e046be0.png)图像风格迁移adaINDiT adaLN BN、LN、IN、GN的区别 BatchNorm&#xff1a;batch方向做归一化&#xff0c;算NxHxW的均值&#xff0c;对小batchsize效果不好&#x…

二次封装el-carousel

我们创建了一个名为MyCarousel的组件&#xff0c;它接受el-carousel的一些常用属性作为props&#xff0c;并默认提供了一些值。我们还通过setup函数返回了所有props&#xff0c;以便它们可以在模板中被使用。 1.MyCarousel.vue组件 <!-- 轮播图片 --> <template>…