原生 Mac 菜单栏的国际化
Posted
技术标签:
【中文标题】原生 Mac 菜单栏的国际化【英文标题】:Internationalization of native Mac menu bar 【发布时间】:2015-02-17 11:29:01 【问题描述】:我创建了一个 JavaFX 应用程序,它使用 Mac 上的本机菜单栏通过
menuBar.setUseSystemMenuBar(true);
除了我定义的菜单项之外,这会产生 4 个标准的 Mac 菜单项。我的问题是这些附加项目都是英文的,而不是应用程序的其余部分的德文。我的 Mac 设置为德语,Java 默认语言环境也是德语。谁能告诉我如何修改这些默认条目以使其符合我机器的语言设置?
【问题讨论】:
【参考方案1】:不知道能不能直接用Java代码设置菜单栏的语言。但是您可以捆绑您的应用程序,然后为您想要支持的每种语言添加本地化文件夹。
例如,如果您的应用程序包名为“test.app”,只需创建一个文件夹test.app/Contents/Resources/German.lproj
。现在,当您启动应用程序时,标准菜单将自动以德语显示。
【讨论】:
我试过这个,但它似乎根本没有任何效果。我还尝试从其他程序中复制 de.lproj,但这也没有任何效果。你对我有什么进一步的建议吗? 您是如何捆绑您的应用程序的? Afaik 你需要一个带有 Info.plist 文件的有效应用程序包,否则它将无法工作。您可以使用AppBundler 创建一个。 我使用了JDK8提供的标准工具。应用程序文件夹确实包含 Info.plist。 如果其他人希望看到此错误已修复,您应该投票给JIRA RT-40094【参考方案2】:您可以使用NSMenuFX 访问 OS X 上的自动生成菜单栏,然后像这样重命名菜单项:
NSMenuBarAdapter adapter = new NSMenuBarAdapter();
// Get the default menu bar as JavaFX object
MenuBar menuBar = adapter.getMenuBar();
// Change the name of the first menu item
menuBar.getMenus().get(0).setText("Hello World");
// Update the menu bar
adapter.setMenuBar(menuBar);
这可能不是最优雅的本地化方式,但对我来说它很有效;)
【讨论】:
以上是关于原生 Mac 菜单栏的国际化的主要内容,如果未能解决你的问题,请参考以下文章