如何恢复Android应用的默认语言环境

时间:2011-04-01 11:02:17

标签: android locale

我有这个Android应用程序本地化了几种语言。如果存在设备区域设置的相应字符串,则应用程序会自动显示该字符串。到目前为止,非常好。

接下来,我想让应用的用户切换到我提供的其中一种语言。我可以通过覆盖默认语言环境来完成此操作。这里没问题。

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

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

2 个答案:

答案 0 :(得分:16)

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

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();

答案 1 :(得分:2)

Locale defaultLocale = Locale.getDefault();

编辑抱歉,我刚刚意识到这实际上并没有回答您的问题,因为您将覆盖默认值以影响您的更改。