美文网首页Android转载
Android语言国际化支持

Android语言国际化支持

作者: SupLuo | 来源:发表于2016-09-20 15:42 被阅读1136次

    让程序支持语言国际化,这是个基础知识点,做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语言国际化支持

        本文链接:https://www.haomeiwen.com/subject/izroettx.html