首页 文章

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

提问于
浏览
11

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

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

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

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

2 回答

  • 2

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

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

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

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

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

    Edit :经过更多的探索后,我找到了系统设置 . 我转而使用这个,而不是上面的代码 .

    Resources.getSystem().getConfiguration().locale.getLanguage();
    
  • 16
    Locale defaultLocale = Locale.getDefault();
    

    Edit: 对不起,我刚刚意识到这实际上并没有回答你的问题,因为你要覆盖默认值来影响你的改变 .

相关问题