如何在Android中获取当前语言?

时间:2017-07-21 08:31:45

标签: android local

在我的Android手机语言设置中,我将语言设置为英语(United Kingdowm)

我使用以下代码来获取语言:

Log.d(TAG,"getDisplayLanguage = " + Locale.getDefault().getDisplayLanguage());
Log.d(TAG,"getLanguage = " + Locale.getDefault().getLanguage());
Log.d(TAG,"Resources.getLanguage = " + Resources.getSystem().getConfiguration().locale.getLanguage());
Log.d(TAG,"getResources.getLanguage = " + getResources().getConfiguration().locale);

日志显示如下:

getDisplayLanguage = English
getLanguage = en
Resources.getLanguage = en
getResources.getLanguage = en_GB

它没有显示Local.UK

我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

根据Is en_UK an illegal locale?

中的答案

正确的国家/地区代码为en_GB。区域设置使用ISO 3166-1作为国家/地区代码。维基百科的文章包括:

  

根据ISO 3166 / MA,选择代码“以反映   国家名称的重要,独特组成部分,以便允许   国家名称和国家代码之间的视觉关联“。[7]为此   原因,国家名称的共同组成部分,如“共和国”,“王国”,   “联合”,“联邦”或“民主”通常不用于推导   代码元素。因此,例如,英国   官方分配了alpha-2代码GB而不是UK,基于   它的正式名称是“大不列颠及北爱尔兰联合王国”   爱尔兰“(尽管英国是应联合国的要求保留的   英国)。

这不是我的答案,这是链接帖子的答案。以防万一在某些时候无法提供链接的答案。

答案 1 :(得分:1)

如果您在代码中检查Locale.UK,则为en_GB

http://www.localeplanet.com/icu/en-GB/

答案 2 :(得分:1)

它不会像你试图进入Log按摩那样回归。 日志按摩将仅打印字符串值。但是Locale是一个类,UK(公共静态最终Locale UK = null;)是类中的一个变量。在Log按摩中返回相同的字符串值。