安卓语言适配

来源:互联网 发布:怎么看淘宝关注的人 编辑:程序博客网 时间:2024/05/17 23:37

最近接触到了语言适配的需求,所以分享个简单的demo介绍一下流程

demo示意:



流程:

1.新建不同的values文件夹,不同的语言使用不同values中的strings.xml

具体语言分类文末会附带



2.新建BaseActivity,所有涉及语言适配的Activity继承此基类(其他类型界面同理)

public class BaseActivity extends AppCompatActivity{    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)    public void changeAppLanguage(String tag){        Resources res = getResources();        DisplayMetrics dm = res.getDisplayMetrics();        Configuration conf = res.getConfiguration();        switch (tag) {            case "简体中文":                conf.setLocale(Locale.CHINA);                break;            //开启日本的语音            case "日本语":                conf.setLocale(Locale.JAPAN);                break;            case "English":                conf.setLocale(Locale.US);                break;            case "繁體中文":                conf.setLocale(Locale.TAIWAN);                break;        }        res.updateConfiguration(conf, dm);    }

MainActivity中:

点击切换语言按钮,显示选择语言弹框:


/** * 切换语言 */public void languageDialog(){    AlertDialog.Builder builder = new AlertDialog.Builder(this);    builder.setTitle(R.string.title).setItems(this.getResources().getStringArray(R.array.language), new DialogInterface.OnClickListener()    {        @Override        public void onClick(DialogInterface dialog, int which)        {            String name = MainActivity.this.getResources().getStringArray(R.array.language)[which];            MainActivity.super.changeAppLanguage(name);            recreate();        }    });    AlertDialog alertDialog = builder.create();    alertDialog.show();    alertDialog.getWindow().setGravity(Gravity.CENTER);}
可以看到,选择某种语言后,调用BaseActivity的changeAppLanguage()方法,改变系统语言,

然后调用recreate()方法重建MainActivity,达到了切换语言的效果


Demo下载链接

附:一些国家的Values文件名

中文(中国):values-zh-rCN

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

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

英语(美国):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


原创粉丝点击