【问题标题】:How to restore an Android app's default locale如何恢复 Android 应用的默认语言环境
【发布时间】:2011-07-27 14:45:23
【问题描述】:

我有这个已本地化为多种语言的 Android 应用。如果存在适合设备区域设置的字符串,应用程序会自动显示它。到目前为止,一切顺利。

接下来,我想让应用的用户切换到我提供的一种语言。我可以通过覆盖默认语言环境来做到这一点。这里也没有问题。

这里的问题:我有没有办法在语言列表中提供“默认”选项,允许用户恢复默认的自动区域设置?考虑以下场景:
1. 设备的区域设置为德语。应用程序以德语显示所有内容。
2. 用户希望应用程序是法语的,所以他们从应用程序内部更改语言,结果应用程序变成了法语。
3. 同一用户将设备的区域设置更改为西班牙语。应用程序仍然是法语。
4. 他们选择“默认”设置。该应用程序更改为西班牙语,并在更改语言环境时不断更改。

如果这不能自动执行,那么有没有办法让我获得设备范围的区域设置,以便在选择“默认”选项时我可以将我的应用设置为它?

【问题讨论】:

    标签: android locale


    【解决方案1】:

    我通过在应用程序首次运行时存储现有设置解决了这个问题(在对默认语言环境进行任何更改之前)。在我的应用程序第一次运行时才运行的块中,我调用:

    m_preferences.edit().putString(
                            MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                            getResources().getConfiguration().locale.getLanguage()
                            ).commit();
    

    稍后,当我需要检索它时:

    languageToLoad = m_preferences.getString(
                            MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                            MyConstants.LANGUAGE_DEFAULT);
    

    更改语言时,我将其保存在另一个首选项中并处理视图的更新。

    编辑:我摸索了一下,找到了系统设置。我改用这个,而不是上面的代码。

    Resources.getSystem().getConfiguration().locale.getLanguage();
    

    【讨论】:

    • 上述部分并没有真正为我做,因为在我的应用程序的语言保存后设备的区域设置仍然可以更改。不过,第二部分似乎正是我想要的。谢谢!
    【解决方案2】:
    Locale defaultLocale = Locale.getDefault();
    

    编辑:抱歉,我刚刚意识到这实际上并不能回答您的问题,因为您正在覆盖默认值以实现您的更改。

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2016-09-07
      • 2020-04-05
      • 2011-05-13
      相关资源
      最近更新 更多