我已根据 Automator 工作流程设置 OSX服务,其中包含(其中包含) Obj-C操作。
我已成功本地化 Obj-C操作,但我无法本地化服务菜单条目。
Services implementation guide表示必须为每个本地化创建 ServicesMenu.strings 文件。其他文档,例如this,同样地说,this SO entry在答案中建议应用一些控制台命令来刷新系统文件,但我不敢理解这样做。
我在 Obj-C动作的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文件内容
答案 0 :(得分:2)
这是我自己的解决方案。也许它可以帮助别人。
第一个问题是我没有仔细阅读文档。我的问题中引用的文字仍在继续:
刷新“服务”菜单
为服务菜单项标题提供本地化文本后,可能需要刷新“服务”菜单列表以查看更改。刷新“服务”菜单中显示的服务列表的一种方法是使用服务调试工具pbs
。这是位于/System/Library/CoreServices
中的命令行工具,它提供有用的服务调试功能,例如刷新服务列表或打印出当前的注册服务列表。清单3显示了一个命令行示例,您可以在终端应用程序中输入该命令行来刷新英语和法语服务列表
清单3 使用pbs刷新服务的示例
/System/Library/CoreServices/pbs -existing_languages en fr
第二个问题是上面清单3中给出的命令对我不起作用。但是命令
/System/Library/CoreServices/pbs -update
实际更新了服务菜单,并显示了本地化的菜单条目。