android 从国家代码中获取英语国家名称

bmp9r5qi  于 2022-12-28  发布在  Android
关注(0)|答案(5)|浏览(245)

我需要从国家代码中获取完整的国家名称。例如,对于荷兰,我需要从国家代码NL中获取the Netherlands
我想我可以用Locale这样做:

Locale loc = new Locale("NL");
loc.getCountry();

但是loc.getCountry();是空的。
我该怎么做呢?

vxf3dgd4

vxf3dgd41#

像这样试试

Locale loc = new Locale("","NL");
loc.getDisplayCountry();
h79rfbju

h79rfbju2#

这应该行得通:

Locale l = new Locale("", "NL");
String country = l.getDisplayCountry();

Locale的第一个参数是语言,这在您的情况下没有用。

332nm8kg

332nm8kg3#

我想对上述答复补充更多信息。
如果要指定结果的语言,可以使用Locale("your language")作为getDisplayCountry()的参数。
例如:

(new Locale("","NL")).getDisplayCountry(new Locale("ZH"));

"ZH" is the language code of Chinese. You will get "荷兰", which is the Chinese name of Netherlands.
您还可以使用Locale("languages", "ISO-3166 code")来指定语言变体。
例如:

(new Locale("","NL")).getDisplayCountry(new Locale("ZH", "TW"));

Locale("ZH", "TW")是指台湾地区的中文变体(繁体中文),与中国大陆的变体有很多不同。
You will get "荷蘭", which is the traditional Chinese name of Netherlands.
(Even如果你不懂中文,我想很明显,两个名字的第二个汉字是不同的。)
如果您不指定语言,您将在设备显示语言中获得荷兰的名称,该名称可以在手机设置中更改。代码为:

(new Locale("","NL")).getDisplayCountry();

您可以获取Android in this question支持的所有语言和变体的列表:
如果您正在使用kotlin:

Locale("", "NL").getDisplayCountry(Locale("ZH"))
Locale("", "NL").getDisplayCountry(Locale("ZH", "TW"))
Locale("", "NL").displayCountry
cqoc49vn

cqoc49vn4#

尝试使用其他构造函数

Locale loc = new Locale("NL", "The Netherlands");

LocaleThe Netherlands似乎没有预定义的语言环境

nlejzf6q

nlejzf6q5#

对于完整的解决方案TelephonyManager(从this solution开始):

TelephonyManager teleMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String localeCountry = teleMgr.getNetworkCountryIso();
if (localeCountry != null) {
    Locale loc = new Locale("",localeCountry);
    Log.d(TAG, "User is from " + loc);
}

相关问题