Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java默认语言环境回退_Java_Internationalization_Globalization - Fatal编程技术网

Java默认语言环境回退

Java默认语言环境回退,java,internationalization,globalization,Java,Internationalization,Globalization,在Java中,我使用语言和国家参数创建区域设置 然后使用适当的日期格式 但是,Java不支持所有语言和国家的组合,也不支持默认的语言环境格式(在我的例子中是en_US) 有没有办法确定是否发生了回退 例如: 当我用locale locale=new locale(“xx”,“xx”)创建区域设置时 然后 ((SimpleDataFormat)DateFormat.getDateInstance(DateFormat.SHORT,locale)).toLocalizedPattern() 返回M/

在Java中,我使用语言和国家参数创建区域设置 然后使用适当的日期格式

但是,Java不支持所有语言和国家的组合,也不支持默认的语言环境格式(在我的例子中是en_US)

有没有办法确定是否发生了回退

例如:

当我用
locale locale=new locale(“xx”,“xx”)创建区域设置时

然后

((SimpleDataFormat)DateFormat.getDateInstance(DateFormat.SHORT,locale)).toLocalizedPattern()

返回
M/d/yy
,因此返回到en_US

所以我需要像这样的东西


locale.isDefault
locale.getDefault().equals(locale)

您可以检查该区域设置是否为以下之一:

Set locales=new HashSet();
Collections.addAll(locales,Locale.getAvailableCales());
语言环境=新语言环境(“xx”、“xx”);
System.out.println(locales.contains(locale))//打印错误
语言环境=新语言环境(“fr”、“fr”);
System.out.println(locales.contains(locale))//打印正确

不幸的是,对于locale xx它返回false\u xx您是否尝试过
locale.setDefault()
?谢谢,这似乎就是我要找的:)
Set<Locale> locales = new HashSet<>();
Collections.addAll(locales, Locale.getAvailableLocales());

Locale locale = new Locale("xx", "xx");
System.out.println(locales.contains(locale)); //prints false

locale = new Locale("fr", "FR");
System.out.println(locales.contains(locale)); //prints true