On 11 Jul 2015, at 09:39, Aandi Inston <aa...@quite.com> wrote:
> It turns out, and I'm sure this will surprise nobody but me, that for the
> copy/paste/cut keyboard commands to work in Cocoa my app needs to have a
> suitable Edit menu with copy/paste/cut menu items and keyboard equivalents.
> My question is about localisation. The app is localised via its own string
> files.

 In general I recommend using Apple's localization mechanisms where possible. 
In particular, use unique keys for each bit of text you localize, don't use the 
English strings. Words in languages are like circles in a Venn diagram, they 
overlap, but are rarely identical. Therefore, it's very easy to mis-translate 
something by using a translation that is correct in one context and nonsensical 
in another, because the other language would use a different word.

> Clearly I can add Edit/Copy/Cut/Paste to the strings for
> translation.
> 
> But is there a better way to display a suitable Edit menu and use the
> locale standard translation for these names?

 There aren't any standard translations provided by the OS. At some point Apple 
offered a set of standard localizations for download from its web site, but you 
have to copy those and provide them in your application bundle yourself, there 
is no automatic standard translation accessible to developers. I don't know if 
they're still available, I can't find anything since they redid the web site.

> Related: I observe that, even if I replace the [application mainMenu], that
> the menu which is then displayed has fixed, and localised, entries under
> the app name. That the title of the first menu is ignored and the contents
> merged with the standard ones. Old news I'm sure, but I can't find where
> this behaviour is documented, and what surprises it may have. Sometimes a
> "quit and leave Windows" or similar item appears, for instance. Can anyone
> point out what I should be reading?

There are variants of certain menu items that show when you hold down modifier 
keys like the Option/Alt key or the Command key. I think the menu item you 
mention is "Quit and Keep Windows" which is shown when you hold down option and 
comes from state restoration. It means that the app will behave like when you 
do a restart, where all open windows will be saved and the app will be 
re-launched after a restart in the same state it was in before, instead of how 
it happens when the user quits it, which will not restore window state.

I don't know where this is documented (beyond the info you can find in Apple's 
Macintosh Human Interface Guidelines, which describe what menus and items you 
should have and what they should do, IIRC), but numerous small behaviours like 
that have crept into the OS as Apple added system-wide features, but of course 
all applications' XIB files still contained the old menu layouts. Instead of a 
main menu with submenus, Apple turned the main menu into a menu bar when it 
bought NeXT, added a system-wide Apple menu, made the first menu that contains 
application-management menu items show the application name in boldface as its 
title, added the "Start Dictation" and "Emoji & Symbols" menu items to the Edit 
menu (neé "Special Characters…"), inseted a search field at the top of the Help 
menu …

It gets even funnier the farther you go back. E.g. the menu bar code was 
written for Carbon and shared with Cocoa (hence the utter nerfing of 
NSMenuView), and classic MacOS didn't have a Apple menu like we have today, and 
its application menu had the Apple logo, and the help menu used to be an icon 
like the Spotlight icon on the right side of the menu bar. So if you, today, 
launch a Cocoa app and bring up an alert before the menu bar has been created 
(e.g. from inside application*Will*Launch:), the system will see that the menus 
are empty, and will create standard Carbon Apple, application and Help menus 
for you. If you then afterwards load your menus, you will end up with two Help 
menus.

In short, it's a fun mess, but in general it Just Works(tm) and you don't have 
to worry about it. Just create menu items with the same actions and tags as the 
system-provided ones, and usually Cocoa will pick up that they're there.

Alternately, the easiest and most reliable way to get standard menus is still 
to use a XIB. Once you've loaded a minimal standard menu from your XIB, you can 
always insert and remove menu items as desired.

Cheers,
-- Uli
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to