【问题标题】:OSX service menu entry: How to localize?OSX 服务菜单项:如何本地化?
【发布时间】:2014-05-14 09:45:02
【问题描述】:

我已经基于 Automator 工作流程设置了一个 OSX 服务,该工作流程包含(以及其他)Obj-C 操作
我已成功本地化 Obj-C 操作,但 我无法本地化服务菜单条目
Services implementation guide 说必须为每个本地化创建一个 ServicesMenu.strings 文件。其他文档,例如this,说同样的话,this SO entry 在回答中建议应用一些控制台命令来刷新系统文件,但我害怕在不理解的情况下这样做。
我在 Obj-C action 的 Xcode 项目中创建了本地化的 ServicesMenu.strings 文件(因为 Automator 没有本地化功能),但这些文件肯定是在错误的捆绑包中。
问题是我不知道将这些文件放在哪里。
任何帮助表示赞赏。

编辑: One of the links cited above 说:
添加本地化 ServicesMenu.strings 文件
要本地化此文本,您需要将名为 ServicesMenu.strings 的 UTF-16 编码字符串文件添加到您的应用程序项目或 Automator 工作流捆绑资源中(有关如何执行此操作的详细信息如下)。对于您提供的每个服务菜单项,此字符串文件将包含一个条目,该条目使用默认文本作为键,并使用翻译后的文本作为值。对于您希望支持的每种语言,您将在项目资源的特定语言项目 (.lproj) 目录中提供翻译后的 ServicesMenu.strings 文件。
...
如果您从 Automator 创建的工作流提供服务,则需要手动将字符串文件和 .lproj 资源目录添加到工作流包。您可以在 ~/Library/Services 下的主目录中找到 Automator 创建的工作流包。

我确实做到了这一点,但是本地化不起作用。
下面我添加了我的 Info.plist 内容、文件夹结构和 ServiceMenu.strings 文件内容。


【问题讨论】:

    标签: macos localization automator


    【解决方案1】:

    这是我自己的解决方案。也许它可以帮助别人。

    第一个问题是我没有仔细阅读文档。我的问题中引用的文字继续:

    刷新服务菜单
    为服务菜单项标题提供本地化文本后,您可能需要刷新服务菜单列表以查看更改。刷新服务菜单中显示的服务列表的一种方法是使用服务调试工具pbs。这是一个位于/System/Library/CoreServices 的命令行工具,提供有用的服务调试功能,例如刷新服务列表或打印出当前注册服务列表。清单 3 显示了一个命令行示例,您可以在终端应用程序中输入以刷新英语和法语的服务列表。
    清单 3  使用 pbs 刷新服务的示例。
    /System/Library/CoreServices/pbs -existing_languages en fr

    第二个问题是上面清单 3 中给出的命令对我不起作用。但是命令

    /System/Library/CoreServices/pbs -update
    

    实际上更新了服务菜单并显示了本地化的菜单条目。

    【讨论】:

    • /System/Library/CoreServices/pbs -update 对我也不起作用,但 /System/Library/CoreServices/pbs -flush 对我有用。
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多