JAVA中ResourceBundle使用详解

article/2025/9/22 21:14:30

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的类层次结构

    这里写图片描述

    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,若都找不到就抛出异常。

    • 代码

    import javax.annotation.Resource;
    import java.util.Locale;
    import java.util.ResourceBundle;/*** @author OovEver* 2018/1/14 22:12*/
    public class Main {public static void main(String args[]) {ResourceBundle bundle = ResourceBundle.getBundle("my", new Locale("zh", "CN"));String cancel = bundle.getString("cancelKey");System.out.println(cancel);bundle = ResourceBundle.getBundle("my", Locale.US);cancel = bundle.getString("cancelKey");System.out.println(cancel);bundle = ResourceBundle.getBundle("my", Locale.getDefault());cancel = bundle.getString("cancelKey");System.out.println(cancel);bundle = ResourceBundle.getBundle("my", Locale.GERMAN);cancel = bundle.getString("cancelKey");System.out.println(cancel);bundle = ResourceBundle.getBundle("my");for (String key : bundle.keySet()) {System.out.println(bundle.getString(key));}}
    }
    
    • 输出结果

      取消
      cancel
      取消
      取消
      取消

    • 说明:前面三个分别按照zh_CN,US,默认的结果输出,第四个由于我们未定义GERMAN属性文件,这时ResourceBundle为我们提供了一个fallback(也就是一个备用方案),这个备用方案就是根据当前系统的语言环境来得到的本地化信息。所以若是找不到GERMAN的,之后就会去找CHINA了,所以找到了res_zh_CH.properties这个资源包。最后一个是若有多个属性文件,可以按照Map的形式遍历,获得属性文件内的各个值。


http://chatgpt.dhexx.cn/article/wLlqGbHy.shtml

相关文章

突发!PHP服务器被攻击,恶意代码合入git仓库

本文转载自 新智元 PHP的git服务器被攻击了,合入了两个恶意commit,nikic发信称将迁移仓库到GitHub上。代码中竟然包括「Zerodium」,莫非背后有什么交易? PHP的一名贡献者Nikita Popov (网名nikic)公开发信称,php的gi…

搭建自己个人服务器

很高兴能够跟大家分享我写的这篇文章! 搭建自己的个人服务器主要分为三步,分别为1、通过腾讯云或者阿里云、华为云等购买云服务器,2、申请域名并解析,3、开发自己程序或者前后端之类的部署在服务器 1、通过腾讯云或者阿里云、华…

PHP - 如何下载服务器上的文件

1.应用场景 需要将服务器上的文件,下载到客户端(浏览器) 补充场景: PHP如何下载远程服务器上的文件到本地服务器 2.学习/实践 1. 文档 请教PHP如何下载远程服务器上的文件到本地服务器上-php教程-PHP中文网 2. 整理输出 方式有…

PHP获取当前服务器版本,Ip等详细信息

新做的一个项目后台几乎完了,简单加了一个获取服务器详情的页面,记录一下,留着备用! 服务器IP地址 $_SERVER[SERVER_ADDR]服务器域名 $_SERVER[SERVER_NAME] 服务器端口 $_SERVER[SERVER_PORT]服务器版本 php_uname(s).php_unam…

微信小程序之PHP服务器搭建

在去年的时候,参加过学校的一个创业活动,在团队决定做一个关于图书的微信小程序以后,我负责做微信小程序的后台程序,因为初次接触,决定选用较为简单的PHP作为后台语言,实现了微信小程序的一些基本功能&…

【树莓派】搭建LAMP(Linux Apache Mysql PHP)服务器

基于树莓派搭建LAMP(Linux Apache Mysql PHP)服务器 配置树莓派 树莓派 连接WIFI 配置SSH 连接SSH 修改密码并解锁root用户 固定IP 调整服务器性能 Apache Mysql PHP 内网穿透 本文主要介绍了树莓派购买后的配置方法,并在树莓派上搭建LAMP&am…

PHP分布式部署代码同步Git实现

PHP 分布式部署后 代码自动同步实现 项目架构如下: 需要更新代码时我们只需要把代码传到主服务器后通过定时任务主服务器自动push 代码到Git服务端,之后其他从服务器则自动从Git云端拉取最新的代码即可 需要用到 expect 软件 安装expect yum install expect定时push shell…

大部分PHP程序员,都搞不懂如何安全代码部署

总结 1.创建一个普通用户账户 2.先设置所有文件夹为只读不可写 sudo chmod -R a-w /path/to/directory3.再把php执行的用户组加上 sudo chown -R username:groupname /path/to/php/files4.再把可执行的文件加入 sudo chmod -R 755 /path/to/php/files关于权限 理清PHP在Lin…

PHP项目部署到云服务器(CentOS+HTTP+PHP+MYSQL)

如何将写好的项目部署到云服务器,让外界可以通过互联网访问项目网站。以下使用的是腾讯云服务器操作,系统环境为CentOS7.9。 一、购买云服务器 打开腾讯云官网,注册好自己的平台账号。如果是新人的话去新人专区购买服务器,性价比…

phpstudy搭建nginx+php服务器显示php网页

下载了phpstudy-all.bin一键安装包,管理员执行./phpstudy-all.bin安装完成后,在火狐浏览器上输入:localhost 测试服务器是否从成功。 遇到的问题: 默认打开的web页面是/usr/share/nginx/www/index.html页面,如下 初次尝试解决&a…

php如何启动内置web服务器

前言: PHP从5.4开始,就提供了一个内置的web服务器。 当然这个主要是用来做本地的开发用的。 不能用于线上环境。 现在我就介绍一下这个工具如何使用。 前提: php已经加入到本地电脑的环境变量中 命令中输入: cd 项目目录 php -S…

公司官网建站笔记(二):在云服务器部署PHP服务(公网访问首页)

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/124659175 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博…

阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇

在前两篇里,我们分别介绍了如何购买阿里云服务器,安装基本软件和配置(请看阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇) 以及如何安装使用phpMyAdmin(请看阿里云ECS服务器Linux环…

阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

上一篇讲了php服务器的基本配置,我们安装了apache,php,还有mysql,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服务器(一) 这一次我们来继续说…

微信小程序wx.uploadFile(上传文件)PHP服务器获取formData的数据

例如下面的代码是微信小程序上传图片的伪代码 wx.chooseImage({success: function(res) {var tempFilePaths res.tempFilePathswx.uploadFile({url: https://example.weixin.qq.com/upload, //仅为示例,非真实的接口地址filePath: tempFilePaths[0],name: file,fo…

树莓派4B搭建轻量级Web服务器 (Nginx,sqlite,php)

树莓派硬件的配置,包括外置硬盘的挂载和设置,系统的烧录和设置就略了,详情见第一篇文章。 一:更新源安装Nginx服务器 sudo apt-get updatesudo apt-get install nginx二: 启动Nginx服务器 //启动服务器的两种方式sudo…

一、用XAMPP搭建本地PHP服务器,运行php文件

一、XAMPP下载安装 点击下载,下载完成之后执行安装文件安装,一路next,完成。运行界面如下: 二、启动 这里,我是把XAMPP安装在了D:\XAMPP文件夹下。 点击第一行Apache后面的Start是启动XAMPP本地虚拟机(默认端口8080)…

Android手机利用KSWEB+端口转发搭建PHP服务器

Android手机利用KSWEB端口转发搭建PHP服务器 转载来自:https://golthr.gitee.io/articles/202002281619/ KSWEB是一款基于Android的开源服务器,可通过Lighttpd/Nginx/ApachePHPMySql在Android手机上搭建起自己的私人PHP WEB服务器。软件提供了上述功能…

PHP搭建服务器

1. 认识互联网 思考:平常我们上网的时候是怎么实现的? 引入:上网其实打开浏览器,然后输入一个URL,最后就看到了网站打开的效果。 1.1. 普通用户访问网站【了解】 定义:URL:Uniformed Resource L…

PHP本地web服务器搭建教程(通俗易懂版)

现在是北京时间21点22分;忙碌了一天的小菜鸡开始写起了博文。在被搭建本地服务器折磨了一天后终于成功的本人,怀着激动的心情写下了这篇博文,也算是写一篇学习笔记了,希望本篇博文能对想搭一个本地服务器的小伙伴们有所帮助。 好…