我需要从国家代码中获取完整的国家名称。例如,对于荷兰,我需要从国家代码 NL
中获得 the Netherlands
。
我曾尝试使用 Locale
实现:
Locale loc = new Locale("NL");
loc.getCountry();
但是 loc.getCountry();
是空的。
我该怎么做?
我需要从国家代码中获取完整的国家名称。例如,对于荷兰,我需要从国家代码 NL
中获得 the Netherlands
。
我曾尝试使用 Locale
实现:
Locale loc = new Locale("NL");
loc.getCountry();
但是 loc.getCountry();
是空的。
我该怎么做?
Locale loc = new Locale("","NL");
loc.getDisplayCountry();
import java.util.Locale
Locale("", "NL").displayCountry
这应该可以工作:
Locale l = new Locale("", "NL");
String country = l.getDisplayCountry();
Locale的第一个参数是语言,但在您的情况下没有用。
我希望能够为以上回答添加更多信息。
如果您想要指定结果的语言,可以在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();
Locale("", "NL").getDisplayCountry(Locale("ZH"))
Locale("", "NL").getDisplayCountry(Locale("ZH", "TW"))
Locale("", "NL").displayCountry
对于完整的解决方案,请使用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);
}
NL
指的是荷兰,实际上,我想要得到的就是NL
代表的是荷兰
:) - noloman