Android语言国际化支持

让程序支持语言国际化,这是个基础知识点,做android开发的或多或少都知道一些,只是可能大家在做工作的时候,可能并没有实际实践过,做法大家肯定不陌生。

在res目录下建立不同名称的values文件来调用不同的语言包,这里可能主要就是记不住对应国家应该创建的文件夹名字是什么,以下为参照表:

中文(中国):values-zh-rCN中文(台湾):values-zh-rTW

中文(香港):values-zh-rHK

英语(美国):values-en-rUS

英语(英国):values-en-rGB

英文(澳大利亚):values-en-rAU

英文(加拿大):values-en-rCA

英文(爱尔兰):values-en-rIE

英文(印度):values-en-rIN

英文(新西兰):values-en-rNZ

英文(新加坡):values-en-rSG

英文(南非):values-en-rZA

阿拉伯文(埃及):values-ar-rEG

阿拉伯文(以色列):values-ar-rIL

保加利亚文: values-bg-rBG

加泰罗尼亚文:values-ca-rES

捷克文:values-cs-rCZ

丹麦文:values-da-rDK

德文(奥地利):values-de-rAT

德文(瑞士):values-de-rCH

德文(德国):values-de-rDE

德文(列支敦士登):values-de-rLI

希腊文:values-el-rGR

西班牙文(西班牙):values-es-rES

西班牙文(美国):values-es-rUS

芬兰文(芬兰):values-fi-rFI

法文(比利时):values-fr-rBE

法文(加拿大):values-fr-rCA

法文(瑞士):values-fr-rCH

法文(法国):values-fr-rFR

希伯来文:values-iw-rIL

印地文:values-hi-rIN

克罗里亚文:values-hr-rHR

匈牙利文:values-hu-rHU

印度尼西亚文:values-in-rID

意大利文(瑞士):values-it-rCH

意大利文(意大利):values-it-rIT

日文:values-ja-rJP

韩文:values-ko-rKR

立陶宛文:valueslt-rLT

拉脱维亚文:values-lv-rLV

挪威博克马尔文:values-nb-rNO

荷兰文(比利时):values-nl-BE

荷兰文(荷兰):values-nl-rNL

波兰文:values-pl-rPL

葡萄牙文(巴西):values-pt-rBR

葡萄牙文(葡萄牙):values-pt-rPT

罗马尼亚文:values-ro-rRO

俄文:values-ru-rRU

斯洛伐克文:values-sk-rSK

斯洛文尼亚文:values-sl-rSI

塞尔维亚文:values-sr-rRS

瑞典文:values-sv-rSE

泰文:values-th-rTH

塔加洛语:values-tl-rPH

土耳其文:values–r-rTR

乌克兰文:values-uk-rUA

越南文:values-vi-rVN

如果我们提供多个values目录之后,那么程序运行的时候,会根据默认的Local配置进行相应的资源读取。比如你程序提供了中文和英文的支持,那么当手机通过设置,将语言系统更改为英文之后再运行程序,程序就会读取values-en下的资源。

有些程序在内部提供了语言切换功能,主要核心原理是更改Resource对象中的Local变量值,具体步骤参见:

1.在res下创建多个支持的values目录,比如values-zh-rCN ; values-en等

2.在功能清单文件中对要进行切换acitivity 进行配置

android:configChanges="locale"

3.更改Resources中的Local变量

// 应用内配置语言

Resources resources = getResources();// 获得res资源对象

Configuration config = resources.getConfiguration();// 获得设置对象

DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。

config.locale = Locale.ENGLISH; // 英文

resources.updateConfiguration(config, dm);

这样就可以把程序资源的Local更改为英文了。

这里要说的一点是:Locale提供了一些常用的数据,比如Locale.ENGLISH,但是假如你需要泰文的话,这个变量里面并没有提供可以调用的,所以这里需要自己new一个,具体代码:

Locale locale =newLocale("th","TH");

这两个的参数值怎么来的,主要是通过国家语言代码,比如中国简体是zh-TW,泰文是th-TH。其他的具体见地址:

http://www.cnblogs.com/linlf03/p/3680454.html

这里有个注意的地方就是,调用上述代码之后,已经加载了的界面并不会立即更改为对应的语言,需要重启已经加载了的界面,这个其实跟主题切换的概念几乎是一样的。

当然是应该是可以采取一些措施实现并不需要重启就完成语言和主体的切换。

你可能感兴趣的:(Android语言国际化支持)