Android开发知识分享

Android国际化之多语言(配置及应用内设置)✈️

2019-07-27  本文已影响0人  PlainDev

🐟 多语言文件的配置

Android系统通过判断当前系统的Local配置,来使用对应的strings.xml文件

image image

values-->strings.xml默认语言(简体中文)

<resources>
    <string name="app_name">我的安卓案例</string>
    <string name="label_home_title">小小的Demo👿</string>
    <string name="multi_language_setting">多语言设置</string>
    <string name="exit">退出❌</string>
    <string name="tv_current_language">🐟 当前语言为:%1$s</string>
    <string name="tv_language_setting_title">语言设置</string>
    <string name="confirm">确认✔️</string>
    <string name="cancel">取消❎</string>
    <string name="language_alert_dialog_title">语言更改⚠️</string>
    <string name="language_alert_dialog_content">此操作将修改应用语言并进行重启,是否进行️🙀</string>
</resources>

values-zh-rHK-->strings.xml繁体中文

<resources>
    <string name="app_name">我的安卓案例</string>
    <string name="label_home_title">小小的Demo👿</string>
    <string name="multi_language_setting">多語言設置</string>
    <string name="exit">退出❌</string>
    <string name="tv_current_language">🐟 當前語言為:%1$s</string>
    <string name="tv_language_setting_title">語言設置 ✈️</string>
    <string name="confirm">確認✔️</string>
    <string name="cancel">取消❎</string>
    <string name="language_alert_dialog_title">語言更改⚠️</string>
    <string name="language_alert_dialog_content">此操作將修改應用程式語言並重啟,是否進行️🙀</string>
</resources>

values-en-->strings.xml英语

<resources>
    <string name="app_name">MyAndroidExercise</string>
    <string name="label_home_title">This is Demo 👿</string>
    <string name="multi_language_setting">MultiLanguageSetting</string>
    <string name="exit">Exit❌</string>
    <string name="tv_current_language">🐟 Current language is %1$s</string>
    <string name="tv_language_setting_title">Language Setting ✈️</string>
    <string name="confirm">Confirm✔️</string>
    <string name="cancel">Cancel❎</string>
    <string name="language_alert_dialog_title">Language changes⚠️</string>
    <string name="language_alert_dialog_content">This action modifies the application language and restarts, whether to proceed or not️🙀</string>
</resources>

通过上面的设置,当我们切换系统语言时,程序会自动对应相应的strings.xml文件,前提是由对应的语言

🔧 应用内语言切换

通过上面的设置还只能依靠系统的语言变更来改变语言,我们最常见的还是在应用中设置需要的语言,因此系统也提供了对应的方法来更改。

在Android系统中,系统的配置大都通过Configuration来管理,包括strings等等。

多语言设置案例 📚

onCreate()中注册

EventBus.getDefault().register(this);

onDestroy()中取消注册

 EventBus.getDefault().unregister(this);
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(String str) {
    if (str.equals("change")) {
        setLanguage();更改语言
        recreate();//刷新页面
    }
}

setLanguage()方法

private void setLanguage() {
    ACache aCache = ACache.get(this);//使用ACache保存配置的语言
    //如果系统当前默认的语言不等于当前ACache中保存的语言,就更改
    if (Locale.getDefault() != Utils.getLanguageLocal(aCache.getAsString(Content.currentLanguage))){
        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        Configuration configuration = getResources().getConfiguration();
        Locale locale = Utils.getLanguageLocal(aCache.getAsString(Content.currentLanguage));//获取到ACache中保存的语言
        configuration.setLocale(locale);//设置语言
        getResources().updateConfiguration(configuration, displayMetrics);//更新系统配置文件
    }
}
aCache.put(Content.currentLanguage, languageType);
EventBus.getDefault().post("change");

通过上面的设置,可以实现不重启APP修改语言的效果

📒 总结

以上只是对Android多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言指出😄

上一篇下一篇

猜你喜欢

热点阅读