JAVA中ResourceBundle使用详解

JAVA中ResourceBundle使用详解JAVA中ResourceBundle使用详解这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。比如对于“取消”,中文中

大家好,又见面了,我是你们的朋友全栈君。

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。

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

    资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.

    ResourceBundle的类层次结构

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。

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

    资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.

    ResourceBundle的类层次结构

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。

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

    资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.

    ResourceBundle的类层次结构

<span role="heading" aria-level="2">JAVA中ResourceBundle使用详解

 

PropertyResourceBundle将本地化的文本存储于Java property文件中。

从ResourceBundle中获取值

    获取ResourceBundle实例后可以通过下面的方法获得本地化值。
    getObject(String key);
    getString(String key);
    getStringArray(String key);
    还可以通过keySet()方法获取所有的key。Set keys = bundle.keySet();
    其它ResourceBundle 方法可以通过查看文档获得。

测试及验证

    新建4个属性文件

    my_en_US.properties:cancelKey=cancel

    my_zh_CN.properties:cancelKey=\u53D6\u6D88(取消)

    my_zh.properties:cancelKey=\u53D6\u6D88zh(取消zh)

    my.properties:cancelKey=\u53D6\u6D88default(取消default)

    获取bundle

ResourceBundle bundle = ResourceBundle.getBundle(“res”, new Locale(“zh”, “CN”));

    其中new Locale(“zh”, “CN”)提供本地化信息,上面这行代码,程序会首先在classpath下寻找my_zh_CN.properties文件,若my_zh_CN.properties文件不存在,则取找my_zh.properties,如还是不存在,继续寻找my.properties,若都找不到就抛出异常。

    代码 

<span role="heading" aria-level="2">JAVA中ResourceBundle使用详解

<span role="heading" aria-level="2">JAVA中ResourceBundle使用详解

 

———————
作者:OovEver
来源:CSDN
原文:https://blog.csdn.net/mupengfei6688/article/details/79060014
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154288.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 转发和重定向的区别和使用特点_转发与重定向的联系

    转发和重定向的区别和使用特点_转发与重定向的联系页面的跳转:转发转发的原理转发的方法疑问能否在OneServlet中保存值到请求域中,在另一个TwoServlet中打印出来?如果是不同的请求,不能取出来。如果是同一次请求是可以取出来的。转发与重定向的作用在Servlet中实现页面的跳转有两种方式:转发和重定向什么是转发概念由服务器端进行的页面跳转原理图转发的方法案例需求​ 实现从OneServle…

    2025年10月9日
    2
  • numpy中的meshgrid函数「建议收藏」

    numpy中的meshgrid函数「建议收藏」numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html meshgrid(*xi,**kwargs)功能:从一个坐标向量中返回一个坐标矩阵 参数:x1,x2…,xn:数组,一维的数组代表网格的坐标。indexing:{‘xy’,…

    2022年6月4日
    29
  • mac键盘快捷键使用大全_苹果电脑shift是哪个键

    mac键盘快捷键使用大全_苹果电脑shift是哪个键为了让初次用Mac的新手和小白们更快地上手,小编整理了一份Mac常用快捷键列表,虽然都是比较基础的入门知识,但也能帮助到大家更快地学习和查找macOS的键盘快捷键,以此提高电脑的操作效率。Mac与Windows的几个不同按键一切开始前,我们先来认识一下苹果Mac键盘上几个陌生的按键,比如⌘(Command/Cmd)、⌥“Option”、⌃“Ctrl”、⇧“Shift”等等。其中最为独特的就是Mac键盘专有的按键⌘,它叫做“Command”键(缩写叫Cmd,

    2022年9月29日
    2
  • jboss版本_输入法下载

    jboss版本_输入法下载昨天和今天到jboss区下载jboss4.0.4或者其他版本,没有一个下的了,太烂了,网站怎能这样,现在是什么时代呀,免费的或者收费的服务都应该要做的很好才是.感觉现在的软件的功能远远没有达到我心目中理想的位置,也不知何年何月我才对会软件的功能称好!也许软件就是这样吧,开发要成本,做得很好是几乎不可能的了.

    2022年9月28日
    3
  • 3D场景的制作步骤

    3D场景的制作步骤分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.4&nbs

    2022年6月9日
    41
  • SparkStreaming的介绍及原理

    SparkStreaming的介绍及原理一、SparkStreaming的介绍1.离线和流处理的区别1)离线处理是针对一个批次,这个批次一般情况下都比较大流处理对应的数据是连续不断产生,处理时间间隔非常短的数据2)离线处理程序,因为数据是有限的(bounded),所以会终止流数据因为是连续不断的产生,所以数据是无限的(unbounded)由于数据的特征,一般离线处理比较缓慢,流数据处理相对较快流处理:…

    2022年6月20日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号