SpringBoot —— 国际化理解

1 国际化信息理解2 官方解释2.1 Spring 官方解释2.2 SpringBoot 官方解释3 通过request参数转换网页的语言3.1 原理3.2 步骤3.2 实现代码1 国际化信息理解国际化是什么,简单地说就是,在不修改内部代码的情况下,根据不同语言及地区显示相应的语言界面国际化信息也称为本地化信息。Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。java.ut..
摘要由CSDN通过智能技术生成

1 国际化信息理解

国际化是什么,简单地说就是,在不修改内部代码的情况下,根据不同语言及地区显示相应的语言界面

国际化信息也称为本地化信息。Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型”“国家/地区” 来创建一个确定的本地化对象 。

java.util.Locale public Locale(@NotNull String language,@NotNull String country)

举个例子吧,比如在发送一个具体的请求的时候,在header(请求头)中设置一个键值对:“Accept-Language”:“zh”,通过Accept-Language对应值,服务器就可以决定使用哪一个区域的语言,找到相应的资源文件,格式化处理,然后返回给客户端。


2 官方解释

2.1 Spring 官方解释

spring定义了访问国际化信息的MessageSource接口,并提供了几个易用的实现类

官方文档

ApplicationContext接口扩展了一个称为MessageSource的接口,因此提供了国际化(“ i18n”)功能。 Spring还提供了HierarchicalMessageSource接口,该接口可以分层解析消息。 这些接口一起提供了Spring影响消息解析的基础。 这些接口上定义的方法包括:

  • String getMessage(String code,Object [] args,String default,Locale loc):用于从MessageSource检索消息的基本方法。 如果找不到针对指定语言环境的消息,则使用默认消息。 使用标准库提供的MessageFormat功能,传入的所有参数都将成为替换值。

  • String getMessage(String code,Object [] args,Locale loc)
    与先前的方法基本相同,但有一个区别:无法指定默认消息。 如果找不到该消息,则抛出NoSuchMessageException

  • String getMessage(MessageSourceResolvable resolvable,Locale locale):上述方法中使用的所有属性也都包装在一个名为MessageSourceResolvable的类中,您可以将其与该方法一起使用。

加载ApplicationContext时,它将自动搜索在上下文中定义的MessageSourceBean。 Bean必须具有名称 messageSource(固定名称)。

Spring提供了两个MessageSource实现,即ResourceBundleMessageSourceStaticMessageSource。 两者都实现HierarchicalMessageSource以便进行嵌套消息传递。StaticMessageSource很少使用,但是提供了将消息添加到源中的编程方式。

2.2 SpringBoot 官方解释

官方文档

Spring Boot支持本地化消息,因此您的应用程序可以迎合不同语言首选项的用户。 默认情况下,Spring Boot在类路径的根目录下查找消息资源包(默认情况下为messages.properties)的存在。

当已配置资源的默认属性文件可用时(即默认情况下为messages.properties),将应用自动配置。 如果您的资源包仅包含特定于语言的属性文件,则需要添加默认文件。 如果找不到与任何配置的基本名称匹配的属性文件,将没有自动配置的MessageSource。

可以使用spring.messages命名空间配置资源包的基本名称以及其他几个属性,如以下示例所示:

// spring.messages.basename支持以逗号分隔的位置列表,可以是包限定符,也可以是从类路径根目录解析的资源
// spring.messages.basename=message,config/i18n/message
spring.messages.basename=messages,config.i18n.messages
// 是否退回到系统语言环境 
spring.messages.fallback-to-system-locale=false

MessageSource国际化配置中有几个常见的参数

basename:默认的扫描的国际化文件名为messages,即在resources建立messages_xx.properties文件,可以通过逗号指定多个,如果不指定包名默认从classpath下寻找。
encoding:默认的编码为UTF-8,也可以改为GBK等等
cacheSeconds:加载国际化文件的缓存时间,单位为秒,默认为永久缓存。
fallbackToSystemLocale:当找不到当前语言的资源文件时,如果为
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值