我需要支持国际化,因此用户将选择必须应用于服务器进程和操作系统的不同语言。我们正在使用CentOS
我们可以在不重启java进程的情况下设置java语言环境吗?请提供设置。
如果需要支持国际化,则不应该在JVM级别分配Locale。因此,您不应该使用-Duser.language
或-Duser.country
。您也不应该使用Locale.setDefault()
在代码中分配区域设置—这也将设置jvm范围的区域设置(这会影响所有运行的Java应用程序)。
我不清楚你想要什么,但我个人觉得你的问题有些误解。
如果您想支持I18n,您需要做的是检测 Locale并选择性地跟踪它们。根据应用程序和环境的类型,它可能非常简单(桌面应用程序中的Locale.getDefault(Locale.Category.FORMAT)
(仅))或相当复杂(从请求上下文读取Locale并将其存储为web应用程序中的会话变量)。正如您所看到的,不需要分配缺省Locale,应该留给JVM启动代码。