39

我需要从国家代码中获取完整的国家名称。例如对于荷兰,我需要the Netherlands来自 country code NL

我想我可以这样做Locale

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

但是loc.getCountry();是空的。

请问您知道如何做到这一点吗?提前致谢!

4

5 回答 5

110

试试这样

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

希望这会有所帮助。

于 2013-01-11T10:38:56.673 回答
25

这应该有效:

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

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

于 2013-01-11T10:17:23.777 回答
8

我想在上面的答案中添加更多信息。

如果要为结果指定语言,可以Locale("your language")用作 的参数getDisplayCountry()

例如:

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

“ZH”是中文的语言代码。你会得到“荷兰”,这是荷兰的中文名称。

您可以使用Locale("languages", "ISO-3166 code")来指定您的语言变体。

例如:

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

Locale("ZH", "TW")指台湾中文的变体(繁体中文)。它与中国大陆的变体有很多不同。

你会得到“荷兰”,这是荷兰的繁体中文名称。

(即使你不懂中文,我认为这两个名字中的第二个汉字是不同的。)

如果您不指定语言,您将在设备显示语言中获得荷兰的名称,可以在手机设置中进行更改。代码是:

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

您可以在此问题中获得 Android 支持的所有语言和变体的列表:

如果您使用的是 kotlin:

Locale("", "NL").getDisplayCountry(Locale("ZH"))
Locale("", "NL").getDisplayCountry(Locale("ZH", "TW"))
Locale("", "NL").displayCountry
于 2020-05-01T12:30:31.243 回答
0

尝试使用其他构造函数

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

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

于 2013-01-11T10:16:06.200 回答
-1

对于完整的解决方案 TelephonyManager(来自此解决方案):

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);
}
于 2016-04-28T09:38:48.940 回答