Java学习总结:40(国际化)

国际化

所谓国际化程序指的是同一套程序代码可以在不同的国家使用,可以根据其应用的国家自动在项目中显示出本国的相应文字信息。

使用Locale类定义语言环境

Locale类的常用方法

No.方法类型描述
1public Locale(String language,String country)构造设置使用的语言以及国家编码
2public static Locale getDefault()普通取得当前语言环境下的Locale类对象

例:输出Locale类对象

package Project.Study.LocaleClass;

import java.util.Locale;

public class Test1 {
    public static void main(String[]args){
        Locale locale=Locale.getDefault();
        System.out.println(locale);
    }
}
//结果:
//zh_CN

我们可以看到,输出部分“zh_CN”由两个部分组成,其中“zh”表示现在使用的语言是中文,而“CN”表示现在的国家是中国。

利用ResourceBundle读取文件

资源文件一般都是以“key=value”的形式保存文本信息,这样在进行信息读取时就可以根据指定的key取得对应的value数据,但是资源文件的文件名称是有要求的,必须以“*.properties”作为文件后缀。

ResourceBundle类的常用方法

No.方法类型描述
1public static final ResourceBundle getBundle(String baseName)普通根据当前默认语言环境,取得资源对象
2public static final ResourceBundle getBundle(String baseName,Locale locale)普通根据指定的语言环境,取得资源对象
3public final String getString(String key)普通根据key取得对应的value数据

例:在IDEA中创建一个"*.properties"文件

如图,右键点击
在这里插入图片描述
输入所创建文件的名称,点击OK
在这里插入图片描述
这样,一个"*.properties"文件就创建完成了
在这里插入图片描述
接着就是往文件里面写入信息了
在这里插入图片描述
例:读取资源文件

package Project.Study.LocaleClass;

import java.util.ResourceBundle;

public class Test2 {
    public static void main(String[]args){
    	//访问的时候不用加上后缀,因为默认找到的后缀就是“*.properties”
        ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.LocaleClass.data1");//文件的存放地址
        System.out.println(resourceBundle.getString("hello"));//根据文件中定义的key取得对应的value数据
    }
}
//结果:
//Hello World!!!

例:读取数据并且动态设置内容

资源文件
在这里插入图片描述

package Project.Study.ResourceBundleClass;

import java.text.MessageFormat;
import java.util.ResourceBundle;

public class Test1 {
    public static void main(String[]args){
        //访问的时候不用加上后缀,因为默认找到的后缀就是“*.properties”
        ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.test1_data");
        System.out.println(MessageFormat.format(resourceBundle.getString("data"),"World","!!!"));//设置两个占位符的内容
    }
}
//结果:
//Hello World!!!

多资源读取

关于资源文件的读取顺序:
在进行资源文件的定义时可能会出现两类资源:
1.公共资源(没有设置语言与国家编码)
2.具体的语言资源文件(设置了语言与国家编码)
因为存在两类文件,所以在读取的时候会优先读取存在具体语言与国家编码的资源文件,如果读取不到则再读取公共资源。
例:读取资源文件
定义中文资源文件
在这里插入图片描述
定义英文(英语——美国)资源文件
在这里插入图片描述

package Project.Study.ResourceBundleClass;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;

public class Test2 {
    public static void main(String[]args){
        Locale zhLoc=new Locale("zh","CN");//中国——中文
        Locale enLoc=new Locale("en","US");//英语——美国
        ResourceBundle zhRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",zhLoc);//读取中文资源文件
        ResourceBundle enRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",enLoc);//读取英文资源文件
        //读取资源内容
        System.out.println(MessageFormat.format(zhRB.getString("data"),"World","!!!"));
        System.out.println(MessageFormat.format(enRB.getString("data"),"World","!!!"));
    }
}
//结果:
//Hello World!!!
//Hi World!!!

注意:如果资源中的占位符不足,则就算输出时设置了相应的数据也不会输出这些数据;反之,如果资源中设置了相应的占位符,但输出时没有设置相应的数据,则会将占位符原封不动地输出,如:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值