美文网首页Android开发知识分享
Android国际化之多语言(配置及应用内设置)✈️

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

作者: Ignovia | 来源:发表于2019-07-27 16:59 被阅读0次

🐟 多语言文件的配置

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

  • 建立不同语言的strings.xml文件,新建Resource File,选择Local,点击>>,选择需要的语言
image
  • 多语言文件如图所示
image
  • strings.xml文件中分别定义了对应的文本,如图所示

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等等。

多语言设置案例 📚

  • 1、在BaseActivity中,通过EventBus监听是否切换语言

onCreate()中注册

EventBus.getDefault().register(this);

onDestroy()中取消注册

 EventBus.getDefault().unregister(this);
  • 2、监听是否触发更改操作 ⌨️
@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);//更新系统配置文件
    }
}
  • 3、在触发修改的地方进行消息发送和保存语言到ACache中
aCache.put(Content.currentLanguage, languageType);
EventBus.getDefault().post("change");

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

📒 总结

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

相关文章

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

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

  • Res----values.Strings初步认识

    目录 用途 应用国际化,随系统语言设置,更改当前语言 使用方式 xml java 国际化 根据语言偏好设置更改,中...

  • 语言国际化设置

    App内的国际化设置1.添加语言 1.1选择语言 2.创建语言文件 2.1设置语言文件,选择需要国际化的 3.写入...

  • Android studio进阶之多语言/图片--国际化

    Android studio进阶之多语言编程--国际化 前段时间接到一个关于PDA的项目 , 其中需要用到国际化 ...

  • iOS 国际化处理

    本文主要讲解国际化相关的知识点: 国际化设置及默认语言设置 国际化文件格式互转:xml,excel,strings...

  • Activity设置透明背景

    android设置背景色为透明 方法一: 只要在配置文件内activity属性配置内加上 android:them...

  • iOS多语言配置

    iOS 多语言配置(国际化) iOS app包显示名称可以国际化,具体方法如下: 基础设置 在info.plist...

  • 本地化/国际化语言

    简介: 语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言...

  • iOS 本地化功能和App内自由切换语言的实现

    一、语言本地化功能释义 语言本地化<语言国际化>是指根据用户设备系统的语言设置,自动将应用程序的语言设置为和用户设...

  • SpringBoot 国际化

    1、根据浏览器语言设置的信息切换了国际化 1)编写国际化配置文件,抽取页面需要显示的国际化消息 在applicat...

网友评论

    本文标题:Android国际化之多语言(配置及应用内设置)✈️

    本文链接:https://www.haomeiwen.com/subject/mcdntxtx.html