Java Locale.getDefault()
始终在Windows上返回en-US,即使系统区域设置设置为其他语言(通过“区域和语言”控制面板)。
在Java Runtime.exec()中运行诸如systeminfo | findstr /C:\"System Locale\
之类的脚本需要花费大量时间。
有没有更快的方法来检测(java)应用程序启动时的系统区域设置?运行上面的cmd一次并写入属性文件以进行后续读取可能是一种解决方案。但是如果系统区域设置被更改并且系统重新启动会怎么样?在jdk中查找系统区域设置的更可靠方法是什么?
答案 0 :(得分:2)
Locale.getDefault()
返回当前JVM的默认语言环境,而不是操作系统。
对于大多数JVM,JVM的默认语言环境默认为en-US(可能存在本地化的JVM,我从未见过)。
可以使用Locale.setDefault(Locale newDefault)将其设置为其他内容,之后Locale.getDefault()
将返回该Locale。
因此,您的问题的一个解决方案可能是使用您曾经拥有的命令获取默认系统Locale,在启动应用程序时使用Locale.setDefault()
将其设置为新的JVM默认值,然后使用{{1 }}
答案 1 :(得分:-1)
Locale.getDefault(); //
locale.getDisplayLanguage(); // Return current language
locale.getDisplayCountry(); // Return current country