Java默认语言环境回退
在Java中,我使用语言和国家参数创建区域设置 然后使用适当的日期格式 但是,Java不支持所有语言和国家的组合,也不支持默认的语言环境格式(在我的例子中是en_US) 有没有办法确定是否发生了回退 例如: 当我用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/
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