【Java】ResourceBundle 使用

本文详细介绍了Java中ResourceBundle如何实现资源文件的本地化加载机制。通过不同的语言和地区设置,ResourceBundle能按需加载相应的资源文件,实现了软件的国际化。文章通过示例展示了不同情况下资源文件的查找和加载顺序。

ResourceBundle提供了一种本地化资源的机制。

大致原理:

提供不同语言或者不同国家的properties文件。

假设properties文件名为message,不同语言的文件名对应为:message_{language}_{country}.properties。

language以及country可以省略。如果全部省略,就是默认文件。

ResourceBundle提供了一个getBundle的静态方法,入参是properties文件的文件名和Local对象。

该方法会在classpath下寻找对应的本地化资源文件。

顺序:

优先查找后缀为language以及country的资源文件;

如果没有,查找后缀为language的资源文件;

如果没有,按照当前系统的Local实例变量查找对应的资源文件,比如我系统是中文,就按照Local("zh","CN")来找;

如果还没有,就使用默认资源文件。

public class BundleMain {
    public static void main(String args[]) {
        System.out.println(Locale.getDefault());

        ResourceBundle bundle = ResourceBundle.getBundle("message", Locale.getDefault());
        System.out.println(bundle.getString("key1"));

        bundle = ResourceBundle.getBundle("message", Locale.US);
        System.out.println(bundle.getString("key1"));

        bundle = ResourceBundle.getBundle("message", Locale.UK);
        System.out.println(bundle.getString("key1"));

        bundle = ResourceBundle.getBundle("message", Locale.FRANCE);
        System.out.println(bundle.getString("key1"));
    }
}

message.properties:

key1=defaultValue

message_en.properties:

key1=en_Value

message_en_US.properties:

key1=en_US_Value

当前系统的Local为:zh_CN

输出:

zh_CN
defaultValue
en_US_Value
en_Value
defaultValue

Process finished with exit code 0

如果提供了一个message_zh_CN.properties文件,那么之前查到message.properties文件的就变为message_zh_CN.properties文件的内容。

 

注意点:

getBundle方法传入的资源文件名不能带“.prop”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值