【问题标题】:How to load alternative strings.xml from resources programmatically如何以编程方式从资源中加载替代 strings.xml
【发布时间】:2015-02-04 01:31:23
【问题描述】:

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

  • values-de 用于德语
  • values-cn 用于中文

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

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

【问题讨论】:

    标签: android localization


    【解决方案1】:

    您可以在运行时更改配置

    在活动的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());
    

    【讨论】:

    • 是的,这在 oncreate 方法中有效。但是我如何更新 oncreate 之外的语言。例如在没有重新创建整个活动的情况下单击按钮后?
    • 如果您想应用更改,您必须重新创建活动。或者你需要重置每个TextViewButton等的值。
    • 哇...重新启动活动只是为了使用资源更改语言...也许最好将所有值存储在一个 strings.xml 中并手动更改它们。
    • 你可以尝试一件事。只是一个疯狂的猜测。在按钮单击时使用此代码并重新加载视图的值(不要重新启动活动)
    猜你喜欢
    • 2015-08-12
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多