From 834c714f26ba4abfbf64a299dd75f3eb1088265f Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Fri, 25 Jan 2013 16:28:49 +0000 Subject: Mac OS: added support for internationalization of the application menu. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9809 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl.cxx | 6 +++--- src/Fl_cocoa.mm | 24 +++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/Fl.cxx b/src/Fl.cxx index f01ebe7c7..d6f98dc5e 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -74,13 +74,13 @@ extern double fl_mac_flush_and_wait(double time_to_wait, char in_idle); // Globals... // #if defined(__APPLE__) || defined(FL_DOXYGEN) -const char *Fl_Mac_App_Menu::about = "About "; +const char *Fl_Mac_App_Menu::about = "About %@"; const char *Fl_Mac_App_Menu::print = "Print Front Window"; const char *Fl_Mac_App_Menu::services = "Services"; -const char *Fl_Mac_App_Menu::hide = "Hide "; +const char *Fl_Mac_App_Menu::hide = "Hide %@"; const char *Fl_Mac_App_Menu::hide_others = "Hide Others"; const char *Fl_Mac_App_Menu::show = "Show All"; -const char *Fl_Mac_App_Menu::quit = "Quit "; +const char *Fl_Mac_App_Menu::quit = "Quit %@"; #endif // __APPLE__ #ifndef FL_DOXYGEN Fl_Widget *Fl::belowmouse_, diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 23b59b42d..8dfdd19fb 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3066,21 +3066,23 @@ static void createAppleMenu(void) NSMenu *mainmenu, *services = nil, *appleMenu; NSMenuItem *menuItem; NSString *title; - - NSString *nsappname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; + + SEL infodictSEL = (fl_mac_os_version >= 100200 ? @selector(localizedInfoDictionary) : @selector(infoDictionary)); + NSString *nsappname = [[[NSBundle mainBundle] performSelector:infodictSEL] objectForKey:@"CFBundleName"]; if (nsappname == nil) nsappname = [[NSProcessInfo processInfo] processName]; appleMenu = [[NSMenu alloc] initWithTitle:@""]; /* Add menu items */ - title = [[NSString stringWithUTF8String:Fl_Mac_App_Menu::about] stringByAppendingString:nsappname]; + title = [NSString stringWithFormat:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::about],nil), nsappname]; menuItem = [appleMenu addItemWithTitle:title action:@selector(showPanel) keyEquivalent:@""]; FLaboutItemTarget *about = [[FLaboutItemTarget alloc] init]; [menuItem setTarget:about]; [appleMenu addItem:[NSMenuItem separatorItem]]; // Print front window - if (strlen(Fl_Mac_App_Menu::print) > 0) { + title = NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::print], nil); + if ([title length] > 0) { menuItem = [appleMenu - addItemWithTitle:[NSString stringWithUTF8String:Fl_Mac_App_Menu::print] + addItemWithTitle:title action:@selector(printPanel) keyEquivalent:@""]; [menuItem setTarget:about]; @@ -3092,29 +3094,29 @@ static void createAppleMenu(void) // Services Menu services = [[NSMenu alloc] init]; menuItem = [appleMenu - addItemWithTitle:[NSString stringWithUTF8String:Fl_Mac_App_Menu::services] + addItemWithTitle:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::services], nil) action:nil keyEquivalent:@""]; [appleMenu setSubmenu:services forItem:menuItem]; [appleMenu addItem:[NSMenuItem separatorItem]]; // Hide AppName - title = [[NSString stringWithUTF8String:Fl_Mac_App_Menu::hide] stringByAppendingString:nsappname]; + title = [NSString stringWithFormat:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::hide],nil), nsappname]; [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; // Hide Others menuItem = [appleMenu - addItemWithTitle:[NSString stringWithUTF8String:Fl_Mac_App_Menu::hide_others] + addItemWithTitle:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::hide_others] , nil) action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; // Show All - [appleMenu addItemWithTitle:[NSString stringWithUTF8String:Fl_Mac_App_Menu::show] + [appleMenu addItemWithTitle:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::show] , nil) action:@selector(unhideAllApplications:) keyEquivalent:@""]; [appleMenu addItem:[NSMenuItem separatorItem]]; // Quit AppName - title = [[NSString stringWithUTF8String:Fl_Mac_App_Menu::quit] - stringByAppendingString:nsappname]; + title = [NSString stringWithFormat:NSLocalizedString([NSString stringWithUTF8String:Fl_Mac_App_Menu::quit] , nil), + nsappname]; [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; -- cgit v1.2.3