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

Gol*_*ith 11 android locale

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

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

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

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

Pro*_*man 16

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

m_preferences.edit().putString(
                        MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                        getResources().getConfiguration().locale.getLanguage()
                        ).commit();
Run Code Online (Sandbox Code Playgroud)

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

languageToLoad = m_preferences.getString(
                        MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                        MyConstants.LANGUAGE_DEFAULT);
Run Code Online (Sandbox Code Playgroud)

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

编辑:经过多一点探索后,我找到了系统设置.我转而使用它,而不是上面的代码.

Resources.getSystem().getConfiguration().locale.getLanguage();
Run Code Online (Sandbox Code Playgroud)

  • 上面的部分对我来说并不是真的这样做,因为设备的语言环境在保存我的应用程序语言后仍然可以更改.第二部分似乎正是我正在寻找的东西.谢谢! (2认同)