android系统语言切换及系统烧写默认语言设置

Android 4.3
1 . 语言全局切换
重写Setting后需要全局切换语言(中英、中阿等),查看原生的Setting代码,抽出切换语言部分,具体实现如下:
zh_CN,这是原始localeString, 通过getLanguage()返回的是zh-CN,变成中划线了。
zh为Language,CN为Country。
全局切换方法:

  String langCode = "zh-CN";
  public void changeLocale(String langCode) {
        int size = getResources().getConfiguration().getLocales().size();
        for(int i=0; i<size; i++){
            Locale locale = getResources().getConfiguration().getLocales().get(i);
            if (langCode.equals(locale.getLanguage())){
                LocalePicker.updateLocale(locale);
                break;
            }
        } 
  }

所有国家的语言代码在下面的链接中:
https://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android
注意下划线和中划线的区别。
2 . 系统烧写后的默认语言:
build/target/product/languages_full.mk中第一个语言:

PRODUCT_LOCALES := ar_EG ar_XB en_US zh_CN fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN en_XA fr_CA

上述配置即再烧写完毕后设置为ar_EG为默认语言
进一步调查,最终编译是在build/tools/buildinfo.sh中设置默认语言:

if [ -n "$PRODUCT_DEFAULT_LANGUAGE" ] ; then
  echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
fi
if [ -n "$PRODUCT_DEFAULT_REGION" ] ; then
  echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
fi

$PRODUCT_DEFAULT_LANGUAGE这个变量就是取的build/target/product/languages_full.mk中第一个语言。
然后添加:

echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
echo "persist.sys.country=$PRODUCT_DEFAULT_REGION"
echo "persist.sys.language=$PRODUCT_DEFAULT_LANGUAGE"

这样就保证烧写后的默认语言是build/target/product/languages_full.mk中第一个语言。具体的设置方式请跟踪mk文件,这里就不再详述了。
多说一句,system.prop是编译后的产物,是烧写完毕后的机器更改此文件会生效,不适用于rom制作。

3 . 两个重要properties:
ro.product.locale.language
系统烧写设置默认语言,即第2步设置的
persist.sys.language
后期全局切换后生效的语言,即Setting中设置的,第1步切换生效的。
persist.sys.language即标示着当前的系统语言。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值