Java 国际化 locale类和ResourceBundle类

国际化的介绍

Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
你的手机语言设置过英语吗?虽然语言变化了,但是功能变了吗?在这里插入图片描述
在这里插入图片描述

locale类

主要的功能是:设置国家和语言

三种使用方式

通过构造方法

在这里插入图片描述
遍历已安装语言环境的数组,获得语言和国家信息

 		// 返回所有已安装语言环境的数组
        Locale[] ls = Locale.getAvailableLocales();

        //遍历打印
        for (Locale locale : ls) {
    
    
            System.out.println("locale :" + locale);
        }
        /*
        运行结果
        例如ar_AE,ar是语言,AE是国家
        
        locale :
		locale :ar_AE
		locale :ar_JO
		locale :ar_SY
		locale :hr_HR
		locale :fr_BE
		locale :es_PA
		locale :mt_MT
		locale :es_VE
		locale :bg
		locale :zh_TW
		locale :it
		locale :ko
		locale :uk
		locale :lv
		locale :da_DK
		locale :es_PR
		locale :vi_VN
		locale :en_US
		locale :sr_ME
		locale :sv_SE
		locale :es_BO
		locale :en_SG
		locale :ar_BH
		locale :pt
		locale :ar_SA
		locale :sk
		locale :ar_YE
		locale :hi_IN
		locale :ga
		locale :en_MT
		locale :fi_FI
		locale :et
		locale :sv
		locale :cs
		locale :sr_BA_#Latn
		locale :el
		locale :uk_UA
		locale :hu
		locale :fr_CH
		locale :in
		locale :es_AR
		locale :ar_EG
		locale :ja_JP_JP_#u-ca-japanese
		locale :es_SV
		locale :pt_BR
		locale :be
		locale :is_IS
		locale :cs_CZ
		locale :es
		locale :pl_PL
		locale :tr
		locale :ca_ES
		locale :sr_CS
		locale :ms_MY
		locale :hr
		locale :lt
		locale :es_ES
		locale :es_CO
		locale :bg_BG
		locale :sq
		locale :fr
		locale :ja
		locale :sr_BA
		locale :is
		locale :es_PY
		locale :de
		locale :es_EC
		locale :es_US
		locale :ar_SD
		locale :en
		locale :ro_RO
		locale :en_PH
		locale :ca
		locale :ar_TN
		locale :sr_ME_#Latn
		locale :es_GT
		locale :sl
		locale :ko_KR
		locale :el_CY
		locale :es_MX
		locale :ru_RU
		locale :es_HN
		locale :zh_HK
		locale :no_NO_NY
		locale :hu_HU
		locale :th_TH
		locale :ar_IQ
		locale :es_CL
		locale :fi
		locale :ar_MA
		locale :ga_IE
		locale :mk
		locale :tr_TR
		locale :et_EE
		locale :ar_QA
		locale :sr__#Latn
		locale :pt_PT
		locale :fr_LU
		locale :ar_OM
		locale :th
		locale :sq_AL
		locale :es_DO
		locale :es_CU
		locale :ar
		locale :ru
		locale :en_NZ
		locale :sr_RS
		locale :de_CH
		locale :es_UY
		locale :ms
		locale :el_GR
		locale :iw_IL
		locale :en_ZA
		locale :th_TH_TH_#u-nu-thai
		locale :hi
		locale :fr_FR
		locale :de_AT
		locale :nl
		locale :no_NO
		locale :en_AU
		locale :vi
		locale :nl_NL
		locale :fr_CA
		locale :lv_LV
		locale :de_LU
		locale :es_CR
		locale :ar_KW
		locale :sr
		locale :ar_LY
		locale :mt
		locale :it_CH
		locale :da
		locale :de_DE
		locale :ar_DZ
		locale :sk_SK
		locale :lt_LT
		locale :it_IT
		locale :en_IE
		locale :zh_SG
		locale :ro
		locale :en_CA
		locale :nl_BE
		locale :no
		locale :pl
		locale :zh_CN
		locale :ja_JP
		locale :de_GR
		locale :sr_RS_#Latn
		locale :iw
		locale :en_IN
		locale :ar_LB
		locale :es_NI
		locale :zh
		locale :mk_MK
		locale :be_BY
		locale :sl_SI
		locale :es_PE
		locale :in_ID
		locale :en_GB
        */

通过普通方法

Locale locale = Locale.getDefault()

通过静态对象

全部的静态对象如下

public static final Locale CANADA
public static final Locale CANADA_FRENCH
public static final Locale CHINA
public static final Locale CHINESE
public static final Locale ENGLISH
public static final Locale FRANCE
public static final Locale FRENCH
public static final Locale GERMAN
public static final Locale GERMANY
public static final Locale ITALIAN
public static final Locale ITALY
public static final Locale JAPAN
public static final Locale JAPANESE
public static final Locale KOREA
public static final Locale KOREAN
public static final Locale PRC
public static final Locale ROOT
public static final Locale SIMPLIFIED_CHINESE
public static final Locale TAIWAN
public static final Locale TRADITIONAL_CHINESE
public static final Locale UK
public static final Locale US

使用方法如下

Locale locale = Locale.SIMPLIFIED_CHINESE

ResourceBundle类

主要功能是:根据国家和语言选择对应的properties文件,进而输出对应语言的信息。

定义properties文件

还记得文章开始的两个图片吗?虽然改变了手机的语言,但是手机功能并没有变,相当于英语和中文存储在两个properties文件中。
在这里插入图片描述
在这里插入图片描述
properties文件放在src目录下,且命名规则为:baseName_语言_国家.properties

PS:baseName下方有介绍

使用方式

		//第一个参数为baseName,第二参数为Locale的对象
        ResourceBundle resourceBundle = ResourceBundle.getBundle("resource", Locale.getDefault());

综合小例子

通过上方手机语言的例子,做了一个相似的小案例加深理解

		//配置语言和国家为中文、中国
        ResourceBundle resourceBundle = ResourceBundle.getBundle("resource", Locale.getDefault());
        //输出中国中文的相关配置
        System.out.println(resourceBundle.getString("test.connections"));
        System.out.println(resourceBundle.getString("test.sounds"));
        System.out.println(resourceBundle.getString("test.notifications"));
        System.out.println(resourceBundle.getString("test.display"));
        System.out.println(resourceBundle.getString("test.wallpaper"));
        System.out.println(resourceBundle.getString("test.themes"));

        //配置语言和国家为英语、美国
        resourceBundle = ResourceBundle.getBundle("resource", Locale.US);
        //输出美国英文的相关配置
        System.out.println("============分隔符=================");
        System.out.println(resourceBundle.getString("test.connections"));
        System.out.println(resourceBundle.getString("test.sounds"));
        System.out.println(resourceBundle.getString("test.notifications"));
        System.out.println(resourceBundle.getString("test.display"));
        System.out.println(resourceBundle.getString("test.wallpaper"));
        System.out.println(resourceBundle.getString("test.themes"));

        /*
        运行结果为:
        连接
        声音
        通知
        显示
        壁纸
        主题
        ============分隔符=================
        connections
        sounds
        notifications
        display
        wallpaper
        themes
         */

猜你喜欢

转载自blog.csdn.net/Mr_Qian_Ives/article/details/111881508