Android多语言项目的实现

本文介绍了在Android Studio中实现多语言项目的方法,包括创建不同语言的values目录,定义string.xml文件,以及如何在代码中切换语言。详细列举了各种语言的缩写和简称,如en(英文)、zh_CN(简体中文)等,并提供了语言切换的代码示例。
摘要由CSDN通过智能技术生成

最近公司可能计划要接一个多语言的项目,提前把坑踩一下,自己备个忘,大神请无视这篇文章。


实现多语言,的步骤:

1.使用Android Studio 开发,将工程视图切换到project模式,而不是Android模式,这样可以进入项目的根目录,并创建需要的目录。


2.进入到res目录下,创建对应语言的values目录,命名规则为values-语言的缩写-语言的简称,例如“values-zh-rCN”,表达的意思为。“中文-简体中文”


3.在对应的目录下,创建string.xml,每次定义一个新的文字时,要在每个语言包里定义相同名字的变量,例如,在中文values-zh-rCN 目录下的string.xml里定义了

<string name="hello_world">你好,世界!</string>

那么在英文values-en目录下的string.xml中也要定义

<string name="hello_world">Hello World!</string>
按照以上方式定义后,当系统语言切换后,项目中的文字会对应切换为定义的语言。

4.系统的匹配模式为,优先使用“语言缩写-语言简称”目录下的文字资源例如“values-zh-rCN”,如果没有将使用只有语言缩写的文字资源例如“values-zh”,如果没有对应的语言,将会使用默认的values目录下的string.xml资源

5.在项目运行过程中,如何切换语言。代码如下

Configuration config = getResources().getConfiguration();//获取系统的配置
config.locale = Locale.ENGLISH;//修改语言
getResources().updateConfiguration(config, getResources().getDisplayMetrics());//更新配置
如果Local中没有需要的语言常量,可以手动创建,参数为需要的语言的缩写,代码如下:

Locale locale = (new Locale("ar"));//创建阿拉伯语
‘ar’为阿拉伯语缩写,将缩写作为参数传入即可返回一个local对象,这样就可以切换到需要的语言了;

当语言切换完成后,需要重启页面才会生效,例如重新启动Activity:

startActivity(new Intent(this,MainActivity.class));
6.时间各国语言的缩写如下:

各国语言缩写-各国语言简称

en 英文 
en_US 英文 (美国) 
ar 阿拉伯文 
ar_AE 阿拉伯文 (阿拉伯联合酋长国) 
ar_BH 阿拉伯文 (巴林) 
ar_DZ 阿拉伯文 (阿尔及利亚) 
ar_EG 阿拉伯文 (埃及) 
ar_IQ 阿拉伯文 (伊拉克) 
ar_JO 阿拉伯文 (约旦) 
ar_KW 阿拉伯文 (科威特) 
ar_LB 阿拉伯文 (黎巴嫩) 
ar_LY 阿拉伯文 (利比亚) 
ar_MA 阿拉伯文 (摩洛哥) 
ar_OM 阿拉伯文 (阿曼) 
ar_QA 阿拉伯文 (卡塔尔) 
ar_SA 阿拉伯文 (沙特阿拉伯) 
ar_SD 阿拉伯文 (苏丹) 
ar_SY 阿拉伯文 (叙利亚) 
ar_TN 阿拉伯文 (突尼斯) 
ar_YE 阿拉伯文 (也门) 
be 白俄罗斯文 
be_BY 白俄罗斯文 (白俄罗斯) 
bg 保加利亚文 
bg_BG 保加利亚文 (保加利亚) 
ca 加泰罗尼亚文 
ca_ES 加泰罗尼亚文 (西班牙) 
ca_ES_EURO 加泰罗尼亚文 (西班牙,Euro) 
cs 捷克文 
cs_CZ 捷克文 (捷克共和国) 
da 丹麦文 
da_DK 丹麦文 (丹麦) 
de 德文 
de_AT 德文 (奥地利) 
de_AT_EURO 德文 (奥地利,Euro) 
de_CH 德文 (瑞士) 
de_DE 德文 (德国) 
de_DE_EURO 德文 (德国,Euro) 
de_LU 德文 (卢森堡) 
de_LU_EURO 德文 (卢森堡,Euro) 
el 希腊文 
el_GR 希腊文 (希腊) 
en_AU 英文 (澳大利亚) 
en_CA 英文 (加拿大) 
en_GB 英文 (英国) 
en_IE 英文 (爱尔兰) 
en_IE_EURO 英文 (爱尔兰,Euro) 
en_NZ 英文 (新西兰) 
en_ZA 英文 (南非) 
es 西班牙文 
es_BO 西班牙文 (玻利维亚) 
es_AR 西班牙文 (阿根廷) 
es_CL 西班牙文 (智利) 
es_CO 西班牙文 (哥伦比亚) 
es_CR 西班牙文 (哥斯达黎加) 
es_DO 西班牙文 (多米尼加共和国) 
es_EC 西班牙文 (厄瓜多尔) 
es_ES 西班牙文 (西班牙) 
es_ES_EURO 西班牙文 (西班牙,Euro) 
es_GT 西班牙文 (危地马拉) 
es_HN 西班牙文 (洪都拉斯) 
es_MX 西班牙文 (墨西哥) 
es_NI 西班牙文 (尼加拉瓜) 
et 爱沙尼亚文 
es_PA 西班牙文 (巴拿马) 
es_PE 西班牙文 (秘鲁) 
es_PR 西班牙文 (波多黎哥) 
es_PY 西班牙文 (巴拉圭) 
es_SV 西班牙文 (萨尔瓦多) 
es_UY 西班牙文 (乌拉圭) 
es_VE 西班牙文 (委内瑞拉) 
et_EE 爱沙尼亚文 (爱沙尼亚) 
fi 芬兰文 
fi_FI 芬兰文 (芬兰) 
fi_FI_EURO 芬兰文 (芬兰,Euro) 
fr 法文 
fr_BE 法文 (比利时) 
fr_BE_EURO 法文 (比利时,Euro) 
fr_CA 法文 (加拿大) 
fr_CH 法文 (瑞士) 
fr_FR 法文 (法国) 
fr_FR_EURO 法文 (法国,Euro) 
fr_LU 法文 (卢森堡) 
fr_LU_EURO 法文 (卢森堡,Euro) 
hr 克罗地亚文 
hr_HR 克罗地亚文 (克罗地亚) 
hu 匈牙利文 
hu_HU 匈牙利文 (匈牙利) 
is 冰岛文 
is_IS 冰岛文 (冰岛) 
it 意大利文 
it_CH 意大利文 (瑞士) 
it_IT 意大利文 (意大利) 
it_IT_EURO 意大利文 (意大利,Euro) 
iw 希伯来文 
iw_IL 希伯来文 (以色列) 
ja 日文 
ja_JP 日文 (日本) 
ko 朝鲜文 
ko_KR 朝鲜文 (南朝鲜) 
lt 立陶宛文 
lt_LT 立陶宛文 (立陶宛) 
lv 拉托维亚文(列托) 
lv_LV 拉托维亚文(列托) (拉脱维亚) 
mk 马其顿文 
mk_MK 马其顿文 (马其顿王国) 
nl 荷兰文 
nl_BE 荷兰文 (比利时) 
nl_BE_EURO 荷兰文 (比利时,Euro) 
nl_NL 荷兰文 (荷兰) 
nl_NL_EURO 荷兰文 (荷兰,Euro) 
no 挪威文 
no_NO 挪威文 (挪威) 
no_NO_NY 挪威文 (挪威,Nynorsk) 
pl 波兰文 
pl_PL 波兰文 (波兰) 
pt 葡萄牙文 
pt_BR 葡萄牙文 (巴西) 
pt_PT 葡萄牙文 (葡萄牙) 
pt_PT_EURO 葡萄牙文 (葡萄牙,Euro) 
ro 罗马尼亚文 
ro_RO 罗马尼亚文 (罗马尼亚) 
ru 俄文 
ru_RU 俄文 (俄罗斯) 
sh 塞波尼斯-克罗地亚文 
sh_YU 塞波尼斯-克罗地亚文 (南斯拉夫) 
sk 斯洛伐克文 
sk_SK 斯洛伐克文 (斯洛伐克) 
sl 斯洛文尼亚文 
sl_SI 斯洛文尼亚文 (斯洛文尼亚) 
sq 阿尔巴尼亚文 
sq_AL 阿尔巴尼亚文 (阿尔巴尼亚) 
sr 塞尔维亚文 
sr_YU 塞尔维亚文 (南斯拉夫) 
sv 瑞典文 
sv_SE 瑞典文 (瑞典) 
th 泰文 
th_TH 泰文 (泰国) 
tr 土耳其文 
tr_TR 土耳其文 (土耳其) 
uk 乌克兰文 
uk_UA 乌克兰文 (乌克兰) 
zh 中文 
zh_CN 中文 (中国) 
zh_HK 中文 (香港) 
zh_TW 中文 (台湾)


最后附上一个简单的切换DEMO

MainActivity.class

package jetsen.cn.as_react_demo;

import android.content.Intent;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值