【问题标题】:Internationalization of native Mac menu bar原生 Mac 菜单栏的国际化
【发布时间】:2015-02-17 11:29:01
【问题描述】:

我创建了一个 JavaFX 应用程序,它使用 Mac 上的本机菜单栏通过

menuBar.setUseSystemMenuBar(true);

除了我定义的菜单项之外,这会产生 4 个标准的 Mac 菜单项。我的问题是这些附加项目都是英文的,而不是应用程序的其余部分的德文。我的 Mac 设置为德语,Java 默认语言环境也是德语。谁能告诉我如何修改这些默认条目以使其符合我机器的语言设置?

【问题讨论】:

    标签: macos javafx internationalization menubar


    【解决方案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);
    

    这可能不是最优雅的本地化方式,但对我来说它很有效;)

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      相关资源
      最近更新 更多