android - 如何以编程方式从资源加载替代 strings.xml

标签 android localization

我想提供三种不同的语言。默认语言是英语,所以我在 values 文件夹中的所有字符串值都是英语。我创建了另外两个文件夹

  • 德语的值(value)观
  • 中文的values-cn

每个文件夹都包含一个 strings.xml 文件,我在其中为 de 文件夹定义了德文值,为 cn 文件夹定义了中文值。

我现在的问题是:我如何以编程方式加载不同的语言,因为我想在我的应用程序界面中提供用户可以切换语言的按钮。我们的用户无法编辑设备的设置。我们的用户只能看到应用程序本身,而不能看到其他任何东西,所以我必须在我的应用程序中提供语言切换。

最佳答案

你可以在运行时改变配置

在 Activity 的 onCreate 中执行此操作

String languageToUse  = "de"; // The language you want to change
Locale locale = new Locale(languageToUse); 
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, 
      getBaseContext().getResources().getDisplayMetrics());

关于android - 如何以编程方式从资源加载替代 strings.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304997/

相关文章:

android - 如何在不更改 MainActivity 标题的情况下更改 fragment 的标题?

java - Android 定时器不精确

c# - Asp.Net Core 中的本地化

ios - 应用程序本地化方法的优缺点?

react-native - 使用 expo-localization 和 i18n-js react native 项目

android - 如何在不等待当前 toast 完成的情况下立即用第二个 toast 替换当前 toast ?

传递给 Google App Engine 的谷歌帐户的 Android 身份验证

java - 尝试使用 Google 登录凭据在 Firebase 上重新进行身份验证时出错

ios - 从 Storyboard 更改按钮标题不会反射(reflect)更改

ios - 后备语言 iOS(具有不完整的 Localizable.strings 文件)