根据Locale.getDisplayLanguage(Locale inLocale)
的javadoc,
Returns a name for the locale’s country that is appropriate for
display to the user. If possible, the name returned will be localized
according to inLocale. For example, if the locale is fr_FR and
inLocale is en_US, getDisplayCountry() will return “France”; if the
locale is en_US and inLocale is fr_FR, getDisplayCountry() will return
“Etats-Unis”. If the name returned cannot be localized according to
inLocale. (say, we don’t have a Japanese name for Croatia), this
function falls back on the English name, and finally on the ISO code
as a last-resort value. If the locale doesn’t specify a country, this
function returns the empty string.
因此,当我执行以下代码片段时:
final class TurkishDemo
{
public static void main(String[] args)
{
final Locale l = new Locale("tr");
for(Locale locale: Locale.getAvailableLocales())
{
System.out.println(locale.getDisplayCountry(l));
}
}
}
我得到以下输出:
Japan Peru
Japan Panama Bosnia and Herzegovina
Guatemala United Arab Emirates Norway Albania
Iraq Yemen
Portugal Cyprus Qatar Macedonia
Switzerland United States Finland
Malta Slovenia Slovakia
Türkiye
Saudi Arabia
United Kingdom Serbia and Montenegro
New Zealand Norway Lithuania Nicaragua
Ireland Belgium Spain Lebanon
Canada Estonia Kuwait Serbia United States Mexico Sudan Indonesia
Uruguay Latvia
Brazil Syria
Dominican Republic Switzerland India Venezuela Bahrain Philippines
TunisiaAustria
Netherlands Ecuador * Jordan
Iceland Colombia Costa Rica Chile Egypt South Africa Thailand Greece
ItalyHungary
Ireland Ukraine Poland Luxembourg Belgium India Spain Morocco Bolivia
AustraliaSingapore
El Salvador Russia South Korea
Algeria Vietnam Montenegro
Libya
China Belarus *
Israel Bulgaria
Malta Paraguay
France Czech Republic Switzerland Romania Puerto Rico Canada Germany
Luxembourg
Argentina
Malaysia Croatia Singapore
Oman
Thailand
Sweden Denmark Honduras
您会注意到,几乎所有国家(土耳其除外)都使用英文显示的国家名称.这是意料之中的,还是我做错了什么?
解决方法:
我认为您的代码是正确的.在我的机器上运行代码时,我得到了相同的行为.除了土耳其本身,JDK似乎没有这些国家/地区名称的土耳其语翻译.