You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android编程如何获取设备当前选中的语言?

正确获取Android设备当前语言并实现自动本地化的方案

你的代码问题所在

你使用的getConfiguration().locale是Android 7.0(API 24)已废弃的API,在高版本系统下,这个方法可能无法正确获取当前系统选中的语言,甚至会返回应用缓存的旧语言值(比如你提到的"es")。另外,如果你的应用没有配置对应语言的资源文件,系统也会 fallback 到默认语言资源。

不同Android版本的正确获取方式

1. Android 7.0(API 24)及以上

使用getLocales()获取当前优先语言:

Locale currentLocale = getApplicationContext().getResources().getConfiguration().getLocales().get(0);
String language = currentLocale.getLanguage(); // 比如日语返回"ja"

2. Android 7.0以下(API 23及更低)

通过版本判断做兼容处理:

Locale currentLocale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    currentLocale = getApplicationContext().getResources().getConfiguration().getLocales().get(0);
} else {
    currentLocale = getApplicationContext().getResources().getConfiguration().locale;
}
String language = currentLocale.getLanguage();

实现应用自动本地化的注意事项

  • 配置对应语言的资源文件:在res目录下创建对应语言的资源文件夹,比如日语对应values-ja、英语对应values-en,每个文件夹内放置该语言的strings.xml。如果缺少对应语言的资源,系统会自动使用默认values目录下的资源。
  • 避免硬编码语言设置:不要在代码中强制固定语言,让应用默认跟随系统语言配置即可。如果需要支持手动切换语言,切换后需重启Activity或Application才能生效。
  • 监听系统语言变化:如果需要在系统语言切换时实时更新应用语言,可以重写onConfigurationChanged方法,在语言变化时重新加载资源并刷新界面:
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // 重新获取当前语言并更新界面
    Locale currentLocale = newConfig.getLocales().get(0);
    // 执行界面刷新逻辑,比如重新设置文本内容等
}

内容的提问来源于stack exchange,提问作者MARSH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:55:39