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
版权声明:本文为博主原创文章,转载请附上博文链接!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 如何学习Android系统源码

    如何学习Android系统源码参考资料Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心。我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关的资料。我们知道,Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe)、套接字(socket)和虚拟文件系统(VFS)等

  • subline3 激活码(最新序列号破解)

    subline3 激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • js图片横排无限循环滚动

    js图片横排无限循环滚动一个好的插件地址:http://www.superslide2.com/demo.html<!DOCTYPEhtmlPUBLIC”-//W3C//DTDXHTML1.0Transitional//EN””http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><htmlxmlns=”http://w…

  • hppts的实现_实现的词性

    hppts的实现_实现的词性一.安装ssl模块#yum-yinstallmod_ssl(基于rpm包安装httpd需要手动安装这个模块)二.自建CA#cd/etc/pki/CA#(umask077;opensslgenrsa-outprivate/cakey.pem2048)//生成私钥#vim../tls/openssl.cnf找到re…

  • 什么是互质_bmob分页查询

    什么是互质_bmob分页查询给定 n 个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?输入格式第一行是一个正整数 n。第二行是 n 个不大于10000的正整数。输出格式一个正整数,即最少需要的组数。数据范围1≤n≤10输入样例:614 20 33 117 143 175输出样例:3#include<bits/stdc++.h>using namespace std;const int N = 1e2 + 10;int a[N],g[N][N];int n;int

  • Win知识 – 程序是怎样跑起来的(合集)

    Win知识 – 程序是怎样跑起来的(合集)操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用(systemcall),也就是应用对操作系统(system)的功能进行调用(call)的意思。在前面的程序中用到了time()及printf()等函数,这些函数内部也都使用了系统调用。这里之所以用“内部”这个词,是因为在Windows操作系统中,提供返回当前日期和时刻,以及在显示器中显示字…

发表回复

您的电子邮箱地址不会被公开。

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