2014-05-14 23 views
0

我已經安裝了OSX服務基於包含(等等)的的Automator工作流的OBJ-C行動
我已成功本地化了Obj-C操作,但是我無法本地化服務菜單項
Services implementation guide表示必須爲每個本地化創建一個ServicesMenu.strings文件。其他文檔,例如this,說的相同,而this SO entry建議在應用一些控制檯命令來刷新系統文件的答案中,但我害怕這樣做而不理解。
我在Obj-C動作(因爲Automator沒有本地化函數)的Xcode項目中創建了本地化的文件,但這些文件肯定存在錯誤的包中。
問題是我不知道在哪裏放置這些文件。
任何幫助表示讚賞。OSX服務菜單項:如何本地化?

編輯: One of the links cited above說:
添加本地化ServicesMenu.strings文件
要本地化本文,您將需要一個UTF-16編碼字符串文件名爲ServicesMenu.strings添加到您的應用程序項目或Automator工作流程捆綁資源(有關如何執行此操作的詳細信息如下)。對於您提供的每個服務菜單項,此字符串文件都將包含一個條目,該條目使用默認文本作爲鍵,並將翻譯的文本作爲值。對於您希望支持的每種語言,您將在項目資源中的特定於語言的項目(.lproj)目錄中提供已翻譯的ServicesMenu.strings文件。
...
如果您從Automator創建的工作流程提供服務,則需要手動將字符串文件和.lproj資源目錄添加到工作流程束。您可以在〜/ Library/Services下的主目錄中找到Automator創建的工作流程捆綁包。

我已經完成了這一點,但本地化不起作用。
下面我添加了我的Info.plist內容,文件夾結構和ServiceMenu.strings文件內容。
Info.plist
Folder
ServiceMenu.strings file

回答

2

這是我自己的解決方案。也許它可以幫助別人。

第一個問題是我沒有仔細閱讀文檔。在我的問題中引用的文本繼續:

刷新服務菜單
一旦你已經爲你的服務菜單項標題提供本地化的文本,您可能需要刷新服務菜單列表中看到的變化。刷新服務菜單中顯示的服務列表的一種方法是使用服務調試工具pbs。這是一個位於/System/Library/CoreServices的命令行工具,它提供了有用的服務調試功能,例如刷新服務列表或打印出當前註冊服務列表。清單3顯示了一個命令行示例,您可以在終端應用程序中輸入命令行來刷新英文和法文服務列表。
清單3使用pbs刷新服務的示例。
/System/Library/CoreServices/pbs -existing_languages en fr

第二個問題是,清單3中給出的上述命令並沒有爲我工作。然而,命令

/System/Library/CoreServices/pbs -update 

實際更新了服務菜單並顯示了本地化菜單條目。

+0

'/ System/Library/CoreServices/pbs -update'也不適用於我,但是'/ System/Library/CoreServices/pbs -flush'。 – reitermarkus