Я работаю в проекте Mac OS X на основе Какао и сталкиваюсь с одной проблемой при интернационализации MainMenu.xib.
В пунктах меню все заголовки необходимо программно интернационализировать. Все пункты меню, такие как «вырезать», «копировать», «вставить», можно интернационализировать с помощью setTitle, кроме заголовка пункта «Отменить» и «Повторить». Кроме того, после ввода чего-либо в текстовые поля форм проекта заголовок элемента меню отмены динамически меняется на «Отменить ввод». То же самое происходит и с «Redo».
Я могу установить заголовки других меню и заголовок пунктов меню, используя,
[[[[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"]
заголовок menuItem по-прежнему остается "Отменить"
NSUndoManager предоставляет методы undoMenuItemTitle и redoMenuItemTitle, но NSUndoManager не отправляет сообщения -setTitle: в пункты меню «Undo» и «Redo».
Так, как я могу отследить это динамическое изменение в заголовке и сделать интернационализацию "Undo Typing" также?
Можно ли вручную получить первый респондент файла MainMenu.xib и получить от него объект отмены менеджера? Чтобы я мог отменить привязку действия отмены, которое в настоящее время присутствует в первом респонденте, с помощью пункта меню отмены и выполнить операцию отмены вручную или можно просто изменить заголовок программно, не делая все это.
Пожалуйста, дайте мне знать, если кто-нибудь сталкивался с этой проблемой и решил ее.