我有这个 Android 应用程序,已本地化为多种语言。如果存在适合设备区域设置的字符串,应用程序会自动显示它。到目前为止,一切都很好。
接下来,我想允许应用程序的用户切换到我提供的其中一种语言。我可以通过覆盖默认区域设置来做到这一点。这里也没有问题。
这里的问题是:有没有办法在语言列表中提供“默认”选项,允许用户恢复默认的自动区域设置?考虑以下场景:
1. 设备的区域设置设置为德语。应用程序以德语显示所有内容。
2. 用户希望应用程序为法语,因此他们从应用程序内部更改语言,结果应用程序变成法语。
3. 同一用户将设备的区域设置更改为西班牙语。应用程序仍然是法语。
4. 他们选择“默认”设置。该应用程序更改为西班牙语,并且随着区域设置的更改而不断更改。
如果这不能自动执行,那么有没有办法让我获取设备范围的区域设置,以便在选择“默认”选项时可以将我的应用程序设置为它?
我通过在应用程序首次运行时存储现有设置(在对默认区域设置进行任何更改之前)解决了此问题。在仅在我的应用程序第一次运行时运行的块中,我调用:
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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)