当前位置:   article > 正文

Android 多语言

Android 多语言

0. Locale方法

Locale locale = LanguageUtils.getLocale("zh-Hans-CN");

执行如下方法返回字符串如下:

方法

英文下执行

中文下执行

备注

getLanguage()zhzh
getCountry()CNCN
getDisplayLanguage()zh中文
getDisplayCountry()CN中国
getDisplayName()zh (Hans,CN)中文 (简体中文,中国)
getISO3Language()zhozho传入不支持的字符串会发生Exception
getISO3Country()CHNCHN
getDisplayScript()Hans简体中文
getDisplayVariant()
getScript()HansHans
getVariant()
toLanguageTag()zh-Hans-CNzh-Hans-CN
toString()zh_CN_#Hanszh_CN_#Hans

1.数据库字段

Setting数据库字段:system_locales

Setting数据库取值:zh-Hans-CN 或者 zh-Hans-CN,en-US,chr-US,th-TH,dje-NE

说明:为一个值是代表当前值,多个值的时候如下如所示,代表可选语言(当前添加了5种,第一个值为当前语言,还可以点击添加语言继续添加)

2.获取当前语言:

public static Locale getCurrentLocale() {

    try {

        Locale configLocale = ActivityManager.getService().getConfiguration().getLocales().get(0);

        return configLocale != null ? configLocale : Locale.getDefault();

    catch (RemoteException e) {

        return Locale.getDefault();

    }

}

3 获取支持的语言

配置:frameworks/base/core/res/res/values/locale_config.xml

String[] locales =LocalePicker.getSupportedLocales(context);

Locale locale = Locale.forLanguageTag(newlanguage);

4.更新语言

public static void setLanguage(String language) {

    Locale locale = Locale.forLanguageTag(language);

    LocalePicker.updateLocale(locale);

}

//下面的方法不要使用

public static void setLanguageTest(String language) {

    Locale locale = new Locale(language);

    LocalePicker.updateLocale(locale);

}

添加权限

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

说明:

setLanguage("zh")       OK, 原生设置中显示中文
setLanguageTest("zh")   OK, 原生设置中显示中文
setLanguage("zh-CN")    OK, 原生设置中显示中文(中国)
setLanguageTest("zh-CN")   Failed, 原生设置中显示und
setLanguage("zh-Hans-CN") OK, 原生设置中显示简体中文(中国)
setLanguageTest("zh-Hans-CN")   Failed, 原生设置中显示und

5. 支持的语言配置

overlay/frameworks/base/core/res/res/values/locale_config.xml

<resources>

    <string-array translatable="false" name="supported_locales">

        <item>zh</item>

        <item>en</item>

        ....

    </string-array>

</resources>

makefile

PRODUCT_LOCALES := \

        zh \

        en

PRODUCT_LOCALES 用于编译时确定哪些语言资源会被打包到 APK 中, locale_config.xml 用于运行时确定应用支持的语言。

两个配置都对应着应用在不同阶段所支持的语言,但起作用的时机不同。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/618315
推荐阅读
相关标签
  

闽ICP备14008679号