关于Java i18n 的一点总结

最近做个项目,需要用到i18n,所以复习和总结一下,主要是关于资源文件命名(propertites)和搜索这方面。


命名很简单,基名_语言码_地区码_操作系统码.propertites ,网上关于这个的介绍和讲解很多,我就不再说一遍了。


关于搜索规则,发现点以前没用注意到的:

1. 现在Locale对象的构造方法,有3个 :

Locale(String language)

Locale(String language, String country)

Locale(String language, String country, String variant)

可以知道 language 参数是必须给的,其他两个可选,但是必须按顺序设置,不可以随意设置,对象中也没有提供相应的set方法。

所以在搜索顺序就是依次递减的,按照设置的参数个数,依次减少来匹配文件名,

如 new Locale("zh" , "cn")

则会先找 基名_zh_ch 文件名的,再找 基名_zh 文件名的 ,最后在找  基名 文件名的,

但是如有一个文件  基名_zh_ch_window 名字的就不会被搜索,要注意这一点。

同理 new Locale("zh" ) 也不会搜索 基名_zh_ch 名字的文件

2. 如果1步没有匹配到文件,就会按系统默认的Locale环境来搜索,比如我的操作系统就是 zh_ch,步骤同1步。

3. 如果2步没有匹配到文件,就会加载 Locale.ENGLISH 的对象,就是 en-us ,步骤同1步 。

4. 如果3步没有匹配到文件,就会有如下异常抛出 :

		java.util.MissingResourceException: Can't find bundle for base name i18n.res, locale en_US
以上结论经由测试和部分源码总结而来,并不全面,欢迎大家补充!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值