2012-01-03 23 views
0

我正在基於Cocoa的Mac OS X項目中工作,並面臨MainMenu.xib國際化的一個問題。MainMenu.xib國際化面向基於Cocoa的Mac OS X應用程序的問題應用程序

在菜單項中,所有標題都需要以編程方式國際化。除了撤銷和重做菜單項標題之外,所有的菜單項如「剪切」,「複製」,「粘貼」都可以使用setTitle國際化。除此之外,在項目表單的文本字段中輸入任何內容後,撤銷菜單項標題會動態地更改爲「撤消鍵入」。 「重做」也是如此。

我可以使用設置其它菜單和的菜單項稱號的稱號,

[[[[NSApp mainMenu] itemAtIndex:1] submenu]setTitle:@"Edit_Test"] 

爲MainMenu.xib 「編輯」 菜單,同樣,

[[[[[NSApp mainMenu] itemAtIndex:1] submenu]itemAtIndex:4]setTitle:@"Copy_Test"] 

爲NSMenuItem 「複製」,這是在「編輯」菜單下。

,但如果我使用相同的代碼,

[[[[[NSApp mainMenu] itemAtIndex:1] submenu]itemAtIndex:0]setTitle:@"Undo_Test"] 

的菜單項的標題仍然是「撤消」

NSUndoManager提供方法undoMenuItemTitle和redoMenuItemTitle,但NSUndoManager不發送-setTitle :消息到「撤消」和「重做」菜單項。

那麼,如何跟蹤標題中的動態變化並使「撤消鍵入」國際化呢?

是否有可能手動獲取MainMenu.xib的第一響應者並從中獲得undomanager對象?因此,我可以使用撤銷菜單項目將第一響應者中當前存在的撤消操作解除綁定,並手動執行撤銷操作,或者可以僅通過編程方式更改標題而不執行所有這些操作。

如果有人遇到此問題並解決問題,請讓我知道。

回答