android - 如何恢复 Android 应用程序的默认语言环境

标签 android locale

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

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

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

如果这不能自动完成,那么我有没有办法获取设备范围的区域设置,以便在选择“默认”选项时我可以将我的应用程序设置为该区域设置?

最佳答案

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

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

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

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

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

编辑:仔细查看后,我找到了系统设置。我改用这个,而不是上面的代码。

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

关于android - 如何恢复 Android 应用程序的默认语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512454/

相关文章:

java - 如何在android中的可扩展 ListView 组和 subview 中加载json数据?

android - onPostExecute 中的 AlertDialog 未显示

android - 在应用程序中使用 map 时出错 - com.google.android.gms.maps.MapFragment 无法转换为 android.support.v4.app.Fragment

internationalization - 是否有特定于语言环境的静态文件的命名约定?

d3.js - d3 自定义数字格式

android - 我可以在运行时全局增加所有 UI 小部件的文本大小吗?

android - 在 Android 应用程序中使用 MediaPlayer 的正确方法

c++ - 使用 std::locale 格式化法语数字时,UTF-8 数据无效

c++ - 以 root 身份运行时 setlocale() 返回 'C'

c - 如何在 C 中使用逗号作为千位分隔符来格式化数字?