我编写的 Java Swing 应用程序存在问题。自 JDK8 以来,所有 Swing 组件始终都有标准本地化文本。这些文本由 Java 应用程序中设置的语言环境选择。但是,如果我使用高于 8 的运行时启动此应用程序(在我的情况下是 OpenJDK11),则无论我设置哪个语言环境,都不再有默认本地化文本。所有文本都保留为英文。OpenJDK 11 中真的缺少本地化文本吗?
答案1
在 Oracle 的 JDK 11 中,java.base 模块中仅包含美国英语区域设置数据(及其父区域设置,包括 ROOT 区域设置)。其他区域设置数据包含在 jdk.localedata 模块中。默认情况下,所有区域设置数据都可在 JDK 中使用。开发人员可以通过使用带有“--include-locales”选项的 jlink 命令剥离不需要的区域设置数据来创建较小的运行时映像。例如,如果用户希望将区域设置数据限制为英语、日语和所有印度区域设置,则以下 jlink 命令选项将创建映像:
jlink --add-modules java.base,jdk.localedata --include-locales en,ja,*-IN (other required jlink options are omitted here)
jlink
如果您不想包含整个,您可以使用上述命令jdk.localedata
。
答案2
我找到了解决方案。我从 Oracle 网站下载的 OpenJDK 不包含许多针对不同语言的资源包,只有英语、中文和日语。我下载了 AdoptOpenJDK,并使用此 JDK 再次翻译了 Swing 组件。