国际化编程:通过一套软件适配多个语言包。
java.util.ResourceBundle:用于加载一个语言_国家语言包
java.util.Locale:定义一个语言_国家
Locale(zh_CN,en_US,...)
-语言:zh、en等
-国家/地区:CN、US等
相关方法:
-加载语言文件,并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的查找路径
语言文件使用的都是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.propertiesResourceBundle ResourceBundle = java.util.ResourceBundle.getBundle("msg", myLocale);System.out.println(ResourceBundle.getString("hello"));//更改本地默认语言文件为en_US,加载语言文件 msg_en_US.propertiesmyLocale = 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);}}
}
输出: