从国家代码获取英文国家名称

48

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

我曾尝试使用 Locale 实现:

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

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

我该怎么做?


你可以从设备获取国家代码 ISO,请参阅此链接 getNetworkCountryIso() - Juned
2
我不确定,但你可以使用loc.getDisplayCountry()。 - MysticMagicϡ
@ShreyaShah 确切地说,它就是那样工作的! - noloman
5个回答

125

Java

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

Kotlin
import java.util.Locale
Locale("", "NL").displayCountry

1
Locale构造函数的单参数版本以上将第一个参数作为语言而不是国家代码。在我的情况下,这并没有起作用。如果要使用国家代码,应该像这样: Locale loc = new Locale("", "NL"); - Rajat Sharma
这对我有用,我浪费了很多时间思考Local(OneParam)出了什么问题...我的错,我没有检查文档...但感谢分享。 - anoop4real

25

这应该可以工作:

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

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


5
如果我这样做,它会返回“NL”,所以它是无效的。 - noloman

12

我希望能够为以上回答添加更多信息。

如果您想要指定结果的语言,可以在getDisplayCountry()的参数中使用Locale("您的语言")

例如:

(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

0

对于完整的解决方案,请使用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);
}

这将返回当前设备的ISO。但这不是问题所要求的。 - Chad Bingham

0

尝试使用另一个构造函数

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

Locale 似乎没有预定义的区域设置适用于荷兰


6
但我不知道NL指的是荷兰,实际上,我想要得到的就是NL代表的是荷兰 :) - noloman

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