在安卓系统中如何获取当前语言?

5

在我的安卓手机语言设置中,我将语言设置为英语(英国)

然后我使用下面的代码来获取语言:

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个回答

2
根据Is en_UK an illegal locale?中的回答,正确的国家代码是en_GB。区域设置使用ISO 3166-1进行国家代码。维基百科的介绍包括:
“根据ISO 3166/MA的规定,选择这些代码是为了反映国家名称中的重要且独特的组成部分,以便允许国家名称和国家代码之间的视觉关联。”[7]因此,通常不使用国家名称的常见组成部分(如“共和国”、“王国”、“联合”、“联邦”或“民主”)来派生代码元素。因此,例如,英国正式被分配为alpha-2代码GB,而不是UK,基于其官方名称“大不列颠及北爱尔兰联合王国”(尽管英国在英国的请求下保留了UK)。
这不是我的答案,而是链接帖子中的答案。以防链接答案在某些时候无法使用。

1

1

你试图在日志信息中获取的内容不会以那种方式返回。 日志信息只会打印字符串值。但是Locale是一个类,UK是该类中的一个变量(public static final Locale UK = null;),它返回与您在日志消息中获取的相同的字符串值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接