【问题标题】:Localizing the Edit menu and other standard menus本地化编辑菜单和其他标准菜单
【发布时间】:2012-08-02 19:47:07
【问题描述】:

我正在尝试将我的 Mac 应用程序翻译成几种不同的语言。有大量菜单项,特别是在编辑菜单中,由 OS X 提供并自动运行。我认为这些项目也会自动翻译,但似乎没有。正如您在下面的屏幕截图中看到的那样,我得到了已翻译和未翻译项目的混合。

奇怪的是,相同的菜单项出现在上下文菜单中时会被翻译,例如在 NSTextView 中。在这种情况下,除了底部的两个服务之外,所有内容都会自动翻译。

所以我很困惑:我真的必须自己翻译编辑菜单吗?我显然希望我的翻译与苹果的翻译相匹配,所以我会做大量的复制和粘贴。或者有什么秘诀可以让本地化发挥作用?我的应用需要 10.7 或更高版本,所以如果有任何新的东西可以让这更容易,那应该不是问题。

附录:假设没有更简单的方法可以做到这一点,是否至少有一种简单的方法可以复制 Apple 翻译的文本,以便我可以将它们粘贴到我的应用程序中?我在想我可以从他们的一个应用程序中打开一个 NIB,但它们都已编译,无法在 Xcode 中打开。我可以在文本编辑器中打开它们,但尝试以这种方式找到合适的字符串似乎并不比重新输入所有内容更快。

【问题讨论】:

  • 我注意到,如果您清空某些“默认”NSMenuItem 的 Title 属性,例如“Undo”或“Redo”,OS X 将使用本地化值填充空白,前提是该语言支持操作系统本身。但它不适用于所有菜单项,因此最好检查每个菜单项。

标签: cocoa localization


【解决方案1】:

Localized Nibs 包含 MainMenu.nib 文件,菜单栏已预先本地化为各种语言。所有项目都与正确的操作相关联,并且包括一些额外的资源(例如标志图形、ISO 语言表等)。

localize-mainmenu - 自动本地化 OS X 应用程序的常用主菜单项的命令行工具。

【讨论】:

    【解决方案2】:

    更新:

    感谢this helpful post by Douglas Hill 我了解到实际上有一个适当的解决方案。 Apple maintains a list of Glossaries 包含大量使用的字符串。它们是为名为 AppleGlot 的命令行工具设计的,但它们也可以在文本编辑器中打开。 Apple's Internationalization page 包含这些工具的链接。 Localizing Strings Files Using AppleGlot 包含一些关于如何使用 AppleGlot 的信息——尽管目前该应用程序的安装程序有一个过期的证书,而且无论如何它似乎与 Catalina 不兼容。 Douglas Hill 的帖子提供了一些关于如何自动化翻译过程的替代想法。


    原答案:

    据我所知,确实没有简单的方法可以做到这一点。特别是对于日语,我最终使用了这样的过程:

    1. 在 Finder 中,右键单击现有应用,例如 TextEdit,然后选择“显示包内容”

    2. 在包内,转到 Contents/Resources,您会看到本地化文件夹,如 en.lproj 和 Japanese.lproj

    3. 在这些文件夹中,您会看到 NIB 文件。使用纯文本编辑(如 BBEdit),打开您的主要语言和您想要翻译的语言的主 NIB 文件。在许多情况下,您想要的文件将命名为 MainMenu.nib。使用 TextEdit,文件被命名为 Edit.nib。这些文件是 XML,所以它们的结构清晰,但是有很多东西你并不关心。打开这两个文件会更容易。

    4. 在英文文件中,您可以搜索“立即检查文档”之类的内容。紧随其后的是键盘快捷键 (;) 和菜单项调用的方法 (checkSpelling:)。现在您可以在日文文件中搜索 checkSpelling,您需要的翻译就在它的正上方。这听起来很乏味,但我发现它大部分时间都很快,特别是因为你很少需要完全输入所有内容来找到你需要的东西。许多方法名称也很明显——比如cut:paste:copy:等等,所以你可以先跳过检查英文文件。

    5. 子菜单的菜单项有点棘手,因为方法只是submenuAction:。您可以使用周围的 XML 来帮助验证您在两个 NIB 中查看的内容相同,或者您可以检查应用程序本身以确保您查看的是正确的文本。当我想确保我复制了正确的东西时,谷歌翻译也很有帮助。您甚至可以先尝试使用 Google 翻译,然后验证它是否与 Apple 使用的相匹配。

    显然,您需要非常小心,或者让会说该语言的人验证一切是否按预期工作。最好让翻译完成所有工作。在我的例子中,我已经让人们自愿进行翻译,并且我的应用程序独有的所有文本都已翻译。我不想打扰他们翻译一堆其他人已经翻译过的文本的繁琐工作。

    【讨论】:

      【解决方案3】:

      我发现 Martin Stemmel 的 git 项目很有用(仅供参考:我与作者有联系)。它是免费的,您可以简单地浏览各种语言文件以获取您需要的标准主菜单字符串或使用该项目。

      https://github.com/martnst/localize-mainmenu

      【讨论】:

        猜你喜欢
        • 2016-05-27
        • 2015-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        • 2018-09-29
        • 2017-06-30
        • 1970-01-01
        相关资源
        最近更新 更多