三、Java核心技术(进阶)-国际化编程

一、概念

国际化编程:通过一套软件适配多个语言包。

二、相关函数

java.util.ResourceBundle:用于加载一个语言_国家语言包

java.util.Locale:定义一个语言_国家

三、相关类

Locale类

Locale(zh_CN,en_US,...)

-语言:zh、en等

-国家/地区:CN、US等

相关方法:

  • -getAvailableLocales():返回所有可用Locale
  • -getDefault():返回默认的Locale

ResourceBundle类:

-加载语言文件,并getString(String key)返回对应的value

三、语言文件

Properties文件(参见《Java核心技术》第十章)

-要求:存储文件必须是ASCII文件,ASCII以外文字,必须用Unicode表示,可用native2ascii.exe(%JAVA_HOME%\bin目录下)进行转码

-命名规则

包名+语言+国家地区.properties

如:message.properties、message_zh.properties、message_zh_CN.properties

四、语言文件匹配路径(匹配顺序)

ResourceBundle 根据key找value的查找路径

  • -包名_当前Locale语言_当前Locale国家地区_当前Locale变量(variant)
  • -包名_当前Locale语言_当前Locale国家地区
  • -包名_当前Locale语言
  • -包名_默认Locale语言_默认Locale国家地区_默认Locale变量(variant)
  • -包名_默认Locale语言_默认Locale国家地区
  • -包名_默认Locale语言
  • -包名

五、添加语言文件

语言文件使用的都是ascii编码,利用java库函数native2ascii,将本地语言转成ascii格式\uXXXX;

C:\Users\shism>cd C:\Users\shism\Desktop\文件

C:\Users\shism\Desktop\文件>native2ascii msg_zh_CN.txt msg_zh_CN.properties

 

拷贝进程序资源目录中

 

 

六、实践及输出

import javafx.fxml.LoadException;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * @author: Shism
 * @Date: Created in 16:50 2023/3/16
 * @Description:
 **/
public class NewHelloworld {
    public static void main(String[] args) {
        //获取默认语言环境及国家
        Locale myLocale = Locale.getDefault();
        System.out.println(myLocale);

        //根据本地语言环境zh_CN,加载语言文件 msg_zh_CN.properties
        ResourceBundle ResourceBundle = java.util.ResourceBundle.getBundle("msg", myLocale);
        System.out.println(ResourceBundle.getString("hello"));

        //更改本地默认语言文件为en_US,加载语言文件 msg_en_US.properties
        myLocale = new Locale("en", "US");
        ResourceBundle = java.util.ResourceBundle.getBundle("msg", myLocale);
        System.out.println(ResourceBundle.getString("hello"));

        //获取java支持语言环境及国家
        System.out.println("=============");
        Locale[] localeList = Locale.getAvailableLocales();
        for (Locale locale : localeList){
            System.out.println(locale);
        }
    }
}

输出:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值