Java国际化编程

国际化编程

  • Internationalization 缩写为i18n
  • 多语言版本的软件
    • 一套软件,多个语言包
    • 根据语言设定,可以切换显示文本
  • Java是第一个设计成支持国际化的编程语言
    • java.util.ResourceBundle 用于加载一个语言_国家语言包
    • java.util.Locaale 定义一个语言_国家
    • java.text.MessageFormat 用于格式化带占位符的字符串
    • java.text.NumberFormat 用于格式化数字、金额
    • java.text.DateFormat 用于格式化日期时间
Locale类

Locale(zh_CN,en_US,…)

  • 语言,zh,en等
  • 国家/地区,CN,US等
  • 其他变量(variant)几乎不用

Locale方法

  • getAvailableLocale() 返回所有可用的Locale
  • getDefault() 返回默认的Locale
语言文件
  • 一个Properties文件

  • 包含K-V对,每行一个K-V对,例如:age=20

  • 文件命名规则

    • 包名+语言+国家地区.properties(语言和国家地区可选)
    • message.properties
    • message_zh.properties
    • messzge_zh_CN.properties
  • 注意事项

    • 存储文件必须是ASCII码文件
    • 如果是ASCII以外的字符,必须用Unicode的表示
    • 可以采用native2ascii.exe(%JAVA_HOME%\bin目录下)对语言文件进行转码,成Unicode的形式
ResourceBundle类
  • 是语言文件和Locale类的桥梁,根据Locale要求,加载语言文件(Properties文件)
  • 存储语言集合里所有的K-V对
  • getString(String key)返回所对应的value
  • ResourceBundle 根据key找value的查找路径
    • 包名_当前Locale语言_当前Locale国家地区_当前Locale变量(variant)
    • 包名_当前Locale语言_当前Locale国家地区
    • 包名_当前Locale语言
    • 包名_默认Locale语言_默认Locale国家地区_默认Locale变量(variant)
    • 包名_默认Locale语言_默认Locale国家地区
    • 包名_默认Locale语言
    • 包名
import java.util.Locale;
import java.util.ResourceBundle;

public class NewHelloWorld {

	public static void main(String[] args) {
		// 取得系统默认的国家/语言环境
		Locale myLocale = Locale.getDefault();
		
		System.out.println(myLocale); //zh_CN 

		// 根据指定语言_国家环境加载资源文件
		ResourceBundle bundle = ResourceBundle.getBundle("message", myLocale);  //根据myLocale来寻找message文件

		// 从资源文件中取得的消息
		System.out.println(bundle.getString("hello"));  //你好, 世界
		
		myLocale = new Locale("en", "US"); //语言 国家, 强制换成en_US
		bundle = ResourceBundle.getBundle("message", myLocale);
		System.out.println(bundle.getString("hello"));  //Hello World
		
	}
}
其他国际化

日期/时间国际化

  • DateTimeFormatter和Locale的结合
    数字/金额国际化
  • NumberFormat和Locale结合
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值