我需要从国家代码中获取完整的国家名称。例如对于荷兰,我需要the Netherlands
来自 country code NL
。
我想我可以这样做Locale
:
Locale loc = new Locale("NL");
loc.getCountry();
但是loc.getCountry();
是空的。
请问您知道如何做到这一点吗?提前致谢!
试试这样
Locale loc = new Locale("","NL");
loc.getDisplayCountry();
希望这会有所帮助。
这应该有效:
Locale l = new Locale("", "NL");
String country = l.getDisplayCountry();
Locale 的第一个参数是语言,这在您的情况下没有用。
我想在上面的答案中添加更多信息。
如果要为结果指定语言,可以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
对于完整的解决方案 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);
}