Hei*_*erg 5 android locale android-configchanges android-resources
所以,我发现有两种方法可以在Android中获取系统的语言环境:
Locale.getDefault()
Run Code Online (Sandbox Code Playgroud)
和
getResources().getConfiguration().locale
Run Code Online (Sandbox Code Playgroud)
基本上问题是 - 这两个输出可以不同吗?或者它们总是一样,我可以使用第一个,因为它不需要Context对象?
引用自此页面:
\n\n\n警惕默认区域设置
\n请注意,有许多方便的方法可以自动使用默认区域设置,但使用它们可能会导致微妙的错误。
\n默认区域设置适用于涉及向用户呈现数据的任务。在这种情况下,您需要使用用户的日期/时间格式、数字格式、转换为小写的规则等。在这种情况下,使用便捷方法是安全的。
\n默认区域设置不适合机器可读的输出。最好的选择通常是 Locale.US \xe2\x80\x93 这个区域设置保证在所有设备上可用,并且它没有令人惊讶的特殊情况并且经常使用(特别是对于计算机与计算机通信)这一事实意味着它也往往是最有效的选择。
\n一个常见的错误是在生成机器可读的输出时隐式使用默认区域设置。这往往适用于开发人员的测试设备(特别是因为许多开发人员使用 en_US),但在用户位于更复杂区域设置的设备上运行时会失败。
\n例如,如果您要格式化整数,某些区域设置将使用非 ASCII 十进制数字。另一个例子,如果您正在格式化浮点数,某些区域设置将使用 \',\' 作为小数点,并使用 \'.\' 进行数字分组。这对于人类可读的输出来说是正确的,但如果呈现给另一台计算机,则可能会导致问题(例如,parseDouble(String) 无法解析这样的数字)。您还应该警惕不采用区域设置的 toLowerCase() 和 toUpperCase() 重载:例如,在土耳其,字符 \'i\' 和 \'I\' 不会被转换为“我”和“我”。对于土耳其语文本(例如用户输入)来说,这是正确的行为,但对于 HTTP 标头来说,这是不合适的。
\n
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |