在我的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
。
我错过了什么吗?
答案 0 :(得分:1)
正确的国家/地区代码为en_GB。区域设置使用ISO 3166-1作为国家/地区代码。维基百科的文章包括:
根据ISO 3166 / MA,选择代码“以反映 国家名称的重要,独特组成部分,以便允许 国家名称和国家代码之间的视觉关联“。[7]为此 原因,国家名称的共同组成部分,如“共和国”,“王国”, “联合”,“联邦”或“民主”通常不用于推导 代码元素。因此,例如,英国 官方分配了alpha-2代码GB而不是UK,基于 它的正式名称是“大不列颠及北爱尔兰联合王国” 爱尔兰“(尽管英国是应联合国的要求保留的 英国)。
这不是我的答案,这是链接帖子的答案。以防万一在某些时候无法提供链接的答案。
答案 1 :(得分:1)
如果您在代码中检查Locale.UK,则为en_GB
答案 2 :(得分:1)
它不会像你试图进入Log按摩那样回归。 日志按摩将仅打印字符串值。但是Locale是一个类,UK(公共静态最终Locale UK = null;)是类中的一个变量。在Log按摩中返回相同的字符串值。