#####添加多语言资源文件
######第一步:
######第二步:
######第三步:
######第四步:
######第五步:
以上步骤仅仅是添加values-zh-rCN文件夹,并没有strings.xml文件,将系统默认的strings.xml文件复制进去再修改里面的内容为对应语言的文字内容即可!
#####多国语言的value文件夹命名方式
| 区域 | 文件名 |
|---|---|
| 中文(中國)(简体) | 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 |
| 要使用多语言,首先肯定要有为不同语言准备的资源。 | |
| 只需要按照Android提供的规范,对不同语言下的资源文件夹进行对应的命名即可。 | |
| 比如我们知道/valus是Android的默认简单资源(字符串、数值、颜色等)的文件夹,那么对不同语言下提供的values文件夹命名方式就形如: |
- /values-zh
- /values-zh-rCN
- /values-zh-rTW
其中values保持不变;
后缀的zh表示语言;
后缀的rCN、rTW其中‘r’是一个标记,表示后面跟着的CN、TW是国家或地区标志。
所以以上三个资源文件夹表示所对应的语言环境分别为:
中文
中文-中国 (即中文简体)
中文-台湾 (即中文繁体)
默认情况下,Android会根据系统的语言地区设置,自动选择对应的资源。
会首先尝试语言地区全匹配,如果没有权匹配的资源包,则会尝试匹配语言,最后则会取默认的。
比如如果Android系统的语言地区是中文简体,则首先会尝试从/values-zh-rCN中获取资源,如果没有此文件夹或者文件夹中没有响应的资源,则会尝试/values-zh,都获取不到的情况下即从/values中获取。
(/values是必须存在的,否则不能通过编译)
当然,也可以在代码中手动进行控制,指定所选择的语言:
Configuration config = getResources().getConfiguration();//获取系统的配置1
2config.locale = Locale.TRADITIONAL_CHINESE;//将语言更改为繁体中文
getResources().updateConfiguration(config, getResources().getDisplayMetrics());//更新配置
#####切换语言
切换语言后需重启当前activity,给用户的感知不好,我实现的逻辑都是记录用户想要切换的语言,然后提示用户重启APP生效,再在启动的第一个activity进行语言切换功能实现:
1 | //详细代码: |