我在Mac OS X 10.7(Lion)下創建了一個Automator 工作流程服務(不是Automator應用程序!),其核心是AppleScript操作。該操作需要在幾個地方通知用戶其操作(包括可能的中止),並且我希望將這些消息本地化爲用戶的語言。如何在Automator工作流程內使用AppleScript的「本地化字符串」
繼蘋果string localization guidelines,我已經創建工作流束區域內的資源文件夾(即<bundle>/Contents/Resources/<lang>.lproj/
文件夾),放在裏面包含UTF-16編碼字符串映射Localizable.strings
文件。我使用AppleScript的localized string of <string_mapping_token>
構造將它們稱爲。
當打包到一個AppleScript應用程序包(測試和確認)時,它工作得很好,但是如果在Automator生成的服務中使用完全相同的腳本和結構,本地化將失敗 - 我得到的只是原始令牌(請注意localized menu names在ServicesMenu.strings
被拾起就好 - 資源文件夾結構本身似乎不是問題)。
我的猜測是,在Automator工作流程內部,與應用程序包相反,localized string
的上下文是Automator(或Automator Runner,因爲它可能),而不是捆綁本身,因此本地化查找失敗。我曾嘗試向該服務添加一個Bundle標識符(CFBundleIdentifier
),並通過Automator自己的localized string in bundle with identifier <identifier>
構造引用該標識符,但似乎僅限於使用Automator註冊的操作包。
是否有解決此問題的方法,允許我在自包含的AppleScript服務中使用AppleScript的本地本地化機制?
它適用於我 - 您是否(重新)在Automator構建應用程序後添加Localizable.strings文件? – 2012-02-19 01:12:14
@Red_Menace:問題是我正在構建Automator *服務*,而不是Automator *應用程序*。後者提供了一個本地化存根(如果我正確的話,每個支持的OS X語言都有一個虛擬的'.nib'文件),並且如果將Localizable.strings文件重新添加到其各自的',則支持本地化的字符串。通過Automator每次構建後,都會生成lproj文件夾。前者本身不提供任何本地化結構,但可以手動添加。正如我的問題中所描述的那樣,對於服務菜單條目的本地化而言,這是有效的,但僅限於此 - 「Localizable.strings」被忽略。 –
kopischke
2012-02-19 15:29:45
只是在黑暗中捅:您使用的短名稱,如「de」和「en」,對吧?我只是問,因爲這是更長的名稱,在某些情況下工作,如果你真的使用這些,也許這就是你必須改變。除此之外,沒有想法。 –
2012-05-03 22:47:44