Android之语言切换

获得当前的系统语言


/* 获得系统语言 */

String language = Locale.getDefault().getLanguage();

* 中文 cn

* 英文 en



切换语言

切换语言之后, 重启Activity才能生效

/**

 * 切换语言, 重启界面生效

 */

protected void switchLanguage(Locale locale) {

    Resources res = getResources();

    Configuration cfg = res.getConfiguration();  

    DisplayMetrics dm = res.getDisplayMetrics();

    cfg.locale = locale;

    res.updateConfiguration(cfg, dm);

}

设置当前语言为中文

switchLanguage(Locale.CHINA);

设置当前语言为英文

switchLanguage(Locale.ENGLISH);



保存设置的语言

设置了语言之后, 将配置保存起来, 下次启动APP才知道要显示什么语言

/**

* 保存语言

*/

protected void saveLanguage(Locale locale) {

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);

    SharedPreferences.Editor edit = sp.edit();

    edit.putString("app_language", locale.getLanguage()).apply();

}

保存中文语言

saveLanguage(Locale.CHINA);

保存英文语言

saveLanguage(Locale.ENGLISH);



APP自动应用配置的语言

我们设置了语言并保存在配置文件, 下次启动需要先读取配置, 并设置

@Override

protected void onCreate(Bundle savedInstanceState) {

    /* 获得已保存的语言, 需要在super.onCreate()之前设置语言 */

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);

    String language = sp.getString("app_language", "en");

    switchLanguage(new Locale(language));

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    // ...

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,917评论 0 17
  • 最近公司的 App 里需要用到多语言切换,简单来说,就是如果用户没有选择语言选项时,App 默认跟随系统语言,如果...
    牙锅子阅读 12,011评论 0 20
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,645评论 25 709
  • 算了,世界上有多少错过呢。
    Faye黎菲阅读 1,328评论 0 0
  • 《闽小记》言:”太姥山古有绿雪芽。“ 太姥山上,鸿雪洞前,曾经有过一株白茶树。 世有言曰,白毫香色俱绝,尤以鸿雪洞...
    狐则阅读 3,408评论 0 0

友情链接更多精彩内容