java获取系统语言(区分简体中文和繁体中文) .

之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容

网上很多代码都是错误的,起码无法区分简体和繁体,这里给出一种方法

不涉及android任何知识,所以就归类到java这边了


  1. Locale locale = Locale.getDefault();  
  2. System.out.println(locale.getLanguage());  
  3. System.out.println(locale.getCountry());  
Locale locale = Locale.getDefault();
System.out.println(locale.getLanguage());
System.out.println(locale.getCountry());

这里我们关注两个方法


public String getLanguage()

Since: API Level 1

Returns the language code for this Locale or the empty string if no language was set.



public String getCountry()

Since: API Level 1

Returns the country code for this locale, or "" if this locale doesn't correspond to a specific country.

返回的都是代码(code),需要解释下语言代码和国家代码


语言代码(或语言编码)是一组用来代表语言的代码。语言代码是由字母或数字组成的短字串,用于分类图书馆典藏、电脑程式上的本地化和翻译等用途。(转自中文维基百科)


国家代码(或国家编码)是一组用来代表国家和境外领土的地理代码。国家代码是由字母或数字组成的短字串,方便用于数据处理和通讯。世界上有许多不同的国家代码标准,其中最广为人知是为国际标准化组织的ISO 3166-1。国家代码也可以指国际长途电话国家号码,即国际电信联盟的国际电话区号(E.164)。(转自中文维基百科)(这里指的是前者)


那么语言代码和国家代码的对应关系是什么呢,我们可以参考下面两个文献

ISO 639:Codes for the representation of names of languages

ISO 3166:Codes for the representation of names of countries and their subdivisions


如果系统使用的是汉语,那么getLanguage()返回的字符串为zh,然后根据getCountry()返回结果可以判断出简体还是繁体了。如果是TW,那么就是繁体了,返回CN则是简体,如果返回了HK,这个自己看着办吧。。。


在android中,切换系统语言后,这两个函数的返回值就都会做出相应的改变

在android中,简体中文和繁体中文字符串资源要分别放到res/values-zh-rCN和res/values-zh-rTW下,这里为什么会有个r,我也不清楚


ps:ISO 3166-1 alpha-2中,TW的说明为:Taiwan, Province of China,还是有些令人欣慰的



转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值