gpt4 book ai didi

localization - 如何在 Automator 工作流程中使用 AppleScript 的 “localized string”

转载 作者:行者123 更新时间:2023-12-04 05:57:24 28 4
gpt4 key购买 nike

我在 Mac OS X 10.7 (Lion) 下创建了一个 Automator 工作流服务(不是 Automator 应用程序!),其核心是 AppleScript Action 。该操作需要在多个点通知用户其操作(包括可能的中止),并且我希望将消息本地化为用户的语言。

在 Apple 的 string localization guidelines 之后,我在工作流包中创建了语言环境资源文件夹(即 <bundle>/Contents/Resources/<lang>.lproj/ 文件夹),并将 Localizable.strings 文件放入其中,其中包含 UTF-16 编码的字符串映射。我使用 AppleScript 的 localized string of <string_mapping_token> 构造来调用它们。

这在打包到 AppleScript 应用程序包中时工作得很好(经过测试和确认),但是当在 Automator 生成的服务中使用完全相同的脚本和结构时,本地化会失败——我得到的只是原始 token (注意 ServicesMenu.strings 中的 localized menu names 被选中就好了——资源文件夹结构本身似乎不是问题)。

我的猜测是问题在于,在 Automator 工作流程中,与应用程序包相反,localized string 的上下文是 Automator(或 Automator Runner,可能是),而不是正确的包,因此本地化查找失败。我尝试向服务添加一个 Bundle 标识符 ( CFBundleIdentifier ) 并通过 Automator 自己的 localized string in bundle with identifier <identifier> 构造引用它,但这似乎仅限于在 Automator 注册的操作包。

是否有解决此问题的方法,允许我在自包含的 AppleScript 服务中使用 AppleScript 的 native 本地化机制?

最佳答案

本地化字符串 命令似乎在 Automator 服务中没有正确的上下文,但您可以使用任何在通常位置具有资源的包。如果您知道捆绑包的位置(您的服务工作流程、包含的应用程序等),您可以在命令中指定该路径,例如

get localized string of "testing" in bundle file "path:to:your:bundle"

编辑:以下是对我有用的示例:

我创建了一个新的服务工作流,可以在任何应用程序中接收文本,包括 运行 AppleScript 行动:
property myPath : (path to library folder from user domain as text) & "Services:localize test.workflow"

on run {input, parameters}

try
display alert getLocalizedString("TESTING") & return & getLocalizedString("NO_ERROR") message "Input Text: " & quoted form of (input as text)
on error errmess number errnum
display alert "Error" & errnum message errmess
end try

return input
end run

on getLocalizedString(theString)
get localized string of theString in bundle file myPath
end getLocalizedString

我将工作流命名为“本地化测试”,并将其保存在默认 ~/图书馆/服务文件夹(这是 myPath 属性中的路径)。接下来,一个 Localizable.strings 文件(使用 BBEdit 创建的 UTF-16)被放置在服务包中的 /Contents/Resources/English.lproj 包含以下内容的文件夹:
/* Automator localization test */
"NO_ERROR" = "There seems to have been no error.";
"TESTING" = "Hmmm, works OK for me...";

在我的桌面上使用 AppleScript 脚本包并添加了相同资源的附加测试也可以正常工作,因此只要您使用有效包目录结构的路径,看起来任何事情都可以。

关于localization - 如何在 Automator 工作流程中使用 AppleScript 的 “localized string”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345648/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com