我在 Mac OS X 10.7 (Lion) 下创建了一个 Automator工作流服务(不是 Automator 应用程序!),其核心是 AppleScript 动作。该操作需要在多个点通知用户其操作(包括可能的中止),并且我希望将消息本地化为用户的语言。
遵循 Apple 的字符串本地化指南,我在工作流包(即<bundle>/Contents/Resources/<lang>.lproj/
文件夹)中创建了语言环境资源文件夹,并将Localizable.strings
包含 UTF-16 编码的字符串映射的文件放入其中。我使用localized string of <string_mapping_token>
AppleScript 的构造来调用它们。
这在打包到 AppleScript 应用程序包(经过测试和确认)时工作得很好,但是当在 Automator 生成的服务中使用完全相同的脚本和结构时,本地化会失败——我得到的只是原始令牌(注意本地化的菜单名称是ServicesMenu.strings
捡起来就好了——资源文件夹结构本身似乎不是问题)。
我的猜测是问题在于,在 Automator 工作流程中,与应用程序包相反,它的上下文localized string
是 Automator(或 Automator Runner,可能是),而不是正确的包,因此本地化查找失败。我已经尝试向CFBundleIdentifier
服务添加一个 Bundle 标识符 ( ) 并通过 Automator 自己的构造引用它localized string in bundle with identifier <identifier>
,但这似乎仅限于使用 Automator 注册的操作包。
是否有解决此问题的方法,允许我在自包含的 AppleScript 服务中使用 AppleScript 的本机本地化机制?