--- WindowMaker-0.80.1/src/rootmenu.c.menutrans 2002-10-19 23:48:00 +0400 +++ WindowMaker-0.80.1/src/rootmenu.c 2002-10-19 23:48:00 +0400 @@ -355,6 +355,17 @@ wShowLegalPanel(menu->frame->screen_ptr); } +/************ translate menu item on the fly *************/ +#define NOTRANSLATE_PREFIX "notranslate " +static char* +translateMenuTitle(char* title) +{ + if(!strncmp(NOTRANSLATE_PREFIX, title, strlen(NOTRANSLATE_PREFIX))) + return title + strlen(NOTRANSLATE_PREFIX); + if(wPreferences.translate_menu) + return dgettext("menu-messages", title); + return title; +} /********************************************************************/ @@ -1141,13 +1152,13 @@ /* start submenu */ - cascade = wMenuCreate(scr, title, False); + cascade = wMenuCreate(scr, translateMenuTitle(title), False); cascade->on_destroy = removeShortcutsForMenu; if (parseCascade(scr, cascade, file, file_name)==NULL) { wMenuDestroy(cascade, True); } else { wMenuEntrySetCascade(menu, - wMenuAddCallback(menu, title, NULL, NULL), + wMenuAddCallback(menu, translateMenuTitle(title), NULL, NULL), cascade); } } else if (strcasecmp(command, "END")==0) { @@ -1156,7 +1167,7 @@ } else { /* normal items */ - addMenuEntry(menu, title, shortcut[0] ? shortcut : NULL, command, + addMenuEntry(menu, translateMenuTitle(title), shortcut[0] ? shortcut : NULL, command, params[0] ? params : NULL, file_name); } } @@ -1528,7 +1539,7 @@ strcat(buffer, command); } - addMenuEntry(menu, data->name, NULL, "OPEN_MENU", buffer, path[data->index]); + addMenuEntry(menu, translateMenuTitle(data->name), NULL, "OPEN_MENU", buffer, path[data->index]); wfree(buffer); if (data->name) @@ -1576,7 +1587,7 @@ if (ptr && ptr!=data->name) *ptr = 0; } - addMenuEntry(menu, data->name, NULL, "SHEXEC", buffer, path[data->index]); + addMenuEntry(menu, translateMenuTitle(data->name), NULL, "SHEXEC", buffer, path[data->index]); wfree(buffer); if (data->name) @@ -1732,7 +1743,7 @@ /* submenu */ submenu = configureMenu(scr, elem); if (submenu) { - mentry = wMenuAddCallback(menu, submenu->frame->title, NULL, + mentry = wMenuAddCallback(menu, translateMenuTitle(submenu->frame->title), NULL, NULL); wMenuEntrySetCascade(menu, mentry, submenu); } @@ -1755,7 +1766,7 @@ if (!title || !command) goto error; - addMenuEntry(menu, WMGetFromPLString(title), + addMenuEntry(menu, translateMenuTitle(WMGetFromPLString(title)), shortcut ? WMGetFromPLString(shortcut) : NULL, WMGetFromPLString(command), params ? WMGetFromPLString(params) : NULL, "WMRootMenu"); --- WindowMaker-0.80.1/src/defaults.c.menutrans 2002-10-19 23:48:00 +0400 +++ WindowMaker-0.80.1/src/defaults.c 2002-10-19 23:54:26 +0400 @@ -558,6 +558,9 @@ {"ExecuteSystemScripts", "YES", NULL, &wPreferences.execute_system_scripts, getBool, NULL }, + {"TranslateMenu", "YES", NULL, + &wPreferences.translate_menu, getBool, NULL + }, /* style options */ {"MenuStyle", "normal", seMenuStyles, &wPreferences.menu_style, getEnum, setMenuStyle --- WindowMaker-0.80.1/src/WindowMaker.h.menutrans 2002-10-19 23:48:00 +0400 +++ WindowMaker-0.80.1/src/WindowMaker.h 2002-10-19 23:48:00 +0400 @@ -471,6 +471,8 @@ int execute_system_scripts; + int translate_menu; + int edge_resistance; char attract; --- WindowMaker-0.80.1/src/workspace.c.menutrans 2002-10-19 23:48:00 +0400 +++ WindowMaker-0.80.1/src/workspace.c 2002-10-19 23:48:01 +0400 @@ -947,7 +947,10 @@ { WMenu *wsmenu; - wsmenu = wMenuCreate(scr, titled ? _("Workspaces") : NULL, False); + if(wPreferences.translate_menu) + wsmenu = wMenuCreate(scr, titled ? _("Workspaces") : NULL, False); + else + wsmenu = wMenuCreate(scr, titled ? "Workspaces" : NULL, False); if (!wsmenu) { wwarning(_("could not create Workspace menu")); return NULL; @@ -956,8 +959,17 @@ /* callback to be called when an entry is edited */ wsmenu->on_edit = onMenuEntryEdited; - wMenuAddCallback(wsmenu, _("New"), newWSCommand, NULL); - wMenuAddCallback(wsmenu, _("Destroy Last"), deleteWSCommand, NULL); + + if(wPreferences.translate_menu) + { + wMenuAddCallback(wsmenu, _("New"), newWSCommand, NULL); + wMenuAddCallback(wsmenu, _("Destroy Last"), deleteWSCommand, NULL); + } + else + { + wMenuAddCallback(wsmenu, "New", newWSCommand, NULL); + wMenuAddCallback(wsmenu, "Destroy Last", deleteWSCommand, NULL); + } return wsmenu; }