Spring之国际化:i18n

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【1月更文挑战第17天】一、i18n概述二、Java国际化三、Spring6国际化1、MessageSource接口2、使用Spring6国际化

文章目录

前言

一、i18n概述

二、Java国际化

三、Spring6国际化

1、MessageSource接口

2、使用Spring6国际化

总结


前言

一、i18n概述

二、Java国际化

三、Spring6国际化

1、MessageSource接口

2、使用Spring6国际化


一、i18n概述

国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,那么就需要两个版本的配置文件。

二、Java国际化

(1)Java自身是支持国际化的,java.util.Locale用于指定当前用户所属的语言环境等信息,java.util.ResourceBundle用于查找绑定对应的资源文件。Locale包含了language信息和country信息,Locale创建默认locale对象时使用的静态方法:

/*** This method must be called only for creating the Locale.** constants due to making shortcuts.*/privatestaticLocalecreateConstant(Stringlang, Stringcountry) {
BaseLocalebase=BaseLocale.createInstance(lang, country);
returngetInstance(base, null);
    }

(2)配置文件命名规则:

basename_language_country.properties

必须遵循以上的命名规则,java才会识别。其中,basename是必须的,语言和国家是可选的。这里存在一个优先级概念,如果同时提供了messages.properties和messages_zh_CN.propertes两个配置文件,如果提供的locale符合en_CN,那么优先查找messages_en_CN.propertes配置文件,如果没查找到,再查找messages.properties配置文件。最后,提示下,所有的配置文件必须放在classpath中,一般放在resources目录下

(3)实验:演示Java国际化

第一步 创建子模块spring6-i18n,引入spring依赖

第二步 在resource目录下创建两个配置文件:messages_zh_CN.propertes和messages_en_GB.propertes

第三步 测试

packagecom.atguigu.spring6.javai18n;
importjava.nio.charset.StandardCharsets;
importjava.util.Locale;
importjava.util.ResourceBundle;
publicclassDemo1 {
publicstaticvoidmain(String[] args) {
System.out.println(ResourceBundle.getBundle("messages",
newLocale("en","GB")).getString("test"));
System.out.println(ResourceBundle.getBundle("messages",
newLocale("zh","CN")).getString("test"));
    }
}

三、Spring6国际化

1、MessageSource接口

spring中国际化是通过MessageSource这个接口来支持的

常见实现类

ResourceBundleMessageSource

这个是基于Java的ResourceBundle基础类实现,允许仅通过资源名加载国际化资源

ReloadableResourceBundleMessageSource

这个功能和第一个类的功能类似,多了定时刷新功能,允许在不重启系统的情况下,更新资源的信息

StaticMessageSource

它允许通过编程的方式提供国际化信息,一会我们可以通过这个来实现db中存储国际化信息的功能。

2、使用Spring6国际化

第一步 创建资源文件

国际化文件命名格式:基本名称 _ 语言 _ 国家.properties

{0},{1}这样内容,就是动态参数

(1)创建atguigu_en_US.properties

www.atguigu.com=welcome {0},时间:{1}

(2)创建atguigu_zh_CN.properties

www.atguigu.com=欢迎 {0},时间:{1}

第二步 创建spring配置文件,配置MessageSource

<?xmlversion="1.0" encoding="UTF-8"?><beansxmlns="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"><beanid="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource"><propertyname="basenames"><list><value>atguigu</value></list></property><propertyname="defaultEncoding"><value>utf-8</value></property></bean></beans>

第三步 创建测试类

packagecom.atguigu.spring6.javai18n;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.annotation.AnnotationConfigApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importjava.util.Date;
importjava.util.Locale;
publicclassDemo2 {
publicstaticvoidmain(String[] args) {
ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");
//传递动态参数,使用数组形式对应{0} {1}顺序Object[] objs=newObject[]{"atguigu",newDate().toString()};
//www.atguigu.com为资源文件的key值,//objs为资源文件value值所需要的参数,Local.CHINA为国际化为语言Stringstr=context.getMessage("www.atguigu.com", objs, Locale.CHINA);
System.out.println(str);
    }
}

总结

以上就是Spring之国际化:i18n的相关知识点,希望对你有所帮助。

积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

相关文章
|
6月前
|
Java 数据安全/隐私保护 网络架构
一个简单的示例在spring boot中实现国际化
一个简单的示例在spring boot中实现国际化
|
4月前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
45 0
|
5月前
|
存储 Java UED
Spring Boot中的国际化处理
Spring Boot中的国际化处理
|
5月前
|
存储 Java 数据库连接
Spring6(五):Resources、i18n、Validation(3)
Spring6(五):Resources、i18n、Validation(3)
22 0
|
5月前
|
XML Java 数据格式
Spring6(五):Resources、i18n、Validation(2)
Spring6(五):Resources、i18n、Validation(2)
55 0
|
5月前
|
Java 数据库 uml
Spring6(五):Resources、i18n、Validation(1)
Spring6(五):Resources、i18n、Validation(1)
32 0
|
6月前
|
自然语言处理 Java UED
Spring Boot中的国际化配置
Spring Boot中的国际化配置
|
7月前
|
缓存 Java Spring
Spring Boot做国际化
Spring Boot做国际化
133 0
|
7月前
|
存储 人工智能 运维
spring国际化 - i18n
spring国际化 - i18n
105 0
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
223 2