android - 在 Android 中以编程方式更改应用程序语言

标签 android localization resources

是否可以在仍然使用 Android 资源的情况下以编程方式更改应用的语言?

如果没有,是否可以请求特定语言的资源?

我想让用户从应用程序更改应用程序的语言。

最佳答案

这是可能的。您可以设置区域设置。但是,我不建议这样做。我们在早期阶段就尝试过,它基本上是在对抗系统。

我们对更改语言有相同的要求,但决定接受 UI 应与手机 UI 相同的事实。它可以通过设置区域设置来工作,但问题太多。根据我的经验,每次进入 Activity (每个 Activity )时都必须设置它。如果您仍然需要这个,这里有一个代码(我再次不推荐)

Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(language_code.toLowerCase())); // API 17+ only.
// Use conf.locale = new Locale(...) if targeting lower versions
res.updateConfiguration(conf, dm);

如果您有特定于语言的内容 - 您可以根据设置更改该内容。

<小时/>

2020 年 3 月 26 日更新

    public static void setLocale(Activity activity, String languageCode) {
        Locale locale = new Locale(languageCode);
        Locale.setDefault(locale);
        Resources resources = activity.getResources();
        Configuration config = resources.getConfiguration();
        config.setLocale(locale);
        resources.updateConfiguration(config, resources.getDisplayMetrics());
    }
  • 注意:语言代码不能包含“-”且只能是 2 个小写字母

关于android - 在 Android 中以编程方式更改应用程序语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61174989/

相关文章:

ios - 检测何时使用 a 与 an

resources - 现实生活中有用和无用的开发技术

c# - .NET 全局化和卫星 DLL

android - 通过 adb 看不到华硕变压器

android - 全屏应用安卓

localization - gettext 如何处理 a/an 或 d'/de?

objective-c - 是否可以在运行时更改 Storyboard语言?

resources - 图结构的资源?

android - Android Studio 生成 JavaDoc 时出错

java - 每次我使用终端命令构建项目时,cordova 项目 native 应用程序中的 config.xml 都会更新