Cocoa: Edit Menu i18n supported

This commit is contained in:
rich2014 2024-05-24 21:59:27 +08:00
parent 44b12c3199
commit f51005880f
4 changed files with 149 additions and 11 deletions

View File

@ -6,7 +6,7 @@ unit CocoaConst;
interface
uses
CocoaAll;
CocoaAll, LCLStrConsts;
function NSSTR_EMPTY: NSString;
@ -26,6 +26,14 @@ function NSSTR_KEY_PLUS: NSString;
function NSSTR_TABCONTROL_PREV_ARROW: NSSTRING;
function NSSTR_TABCONTROL_NEXT_ARROW: NSSTRING;
function NSSTR_EDIT_MENU: NSSTRING;
function NSSTR_EDIT_MENU_UNDO: NSSTRING;
function NSSTR_EDIT_MENU_REDO: NSSTRING;
function NSSTR_EDIT_MENU_CUT: NSSTRING;
function NSSTR_EDIT_MENU_COPY: NSSTRING;
function NSSTR_EDIT_MENU_PASTE: NSSTRING;
function NSSTR_EDIT_MENU_SELECTALL: NSSTRING;
implementation
const
@ -51,6 +59,14 @@ var
_NSSTR_TABCONTROL_PREV_ARROW: NSSTRING;
_NSSTR_TABCONTROL_NEXT_ARROW: NSSTRING;
_NSSTR_EDIT_MENU: NSSTRING;
_NSSTR_EDIT_MENU_UNDO: NSSTRING;
_NSSTR_EDIT_MENU_REDO: NSSTRING;
_NSSTR_EDIT_MENU_CUT: NSSTRING;
_NSSTR_EDIT_MENU_COPY: NSSTRING;
_NSSTR_EDIT_MENU_PASTE: NSSTRING;
_NSSTR_EDIT_MENU_SELECTALL: NSSTRING;
function NSSTR_EMPTY: NSString;
begin
Result:= _NSSTR_EMPTY;
@ -119,6 +135,62 @@ begin
Result:= _NSSTR_TABCONTROL_NEXT_ARROW;
end;
function NSSTR_EDIT_MENU: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU) then
_NSSTR_EDIT_MENU:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenu));
Result:= _NSSTR_EDIT_MENU;
end;
function NSSTR_EDIT_MENU_UNDO: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_UNDO) then
_NSSTR_EDIT_MENU_UNDO:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuUndo));
Result:= _NSSTR_EDIT_MENU_UNDO;
end;
function NSSTR_EDIT_MENU_REDO: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_REDO) then
_NSSTR_EDIT_MENU_REDO:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuRedo));
Result:= _NSSTR_EDIT_MENU_REDO;
end;
function NSSTR_EDIT_MENU_CUT: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_CUT) then
_NSSTR_EDIT_MENU_CUT:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuCut));
Result:= _NSSTR_EDIT_MENU_CUT;
end;
function NSSTR_EDIT_MENU_COPY: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_COPY) then
_NSSTR_EDIT_MENU_COPY:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuCopy));
Result:= _NSSTR_EDIT_MENU_COPY;
end;
function NSSTR_EDIT_MENU_PASTE: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_PASTE) then
_NSSTR_EDIT_MENU_PASTE:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuPaste));
Result:= _NSSTR_EDIT_MENU_PASTE;
end;
function NSSTR_EDIT_MENU_SELECTALL: NSSTRING;
begin
if NOT Assigned(_NSSTR_EDIT_MENU_SELECTALL) then
_NSSTR_EDIT_MENU_SELECTALL:= NSString.alloc.initWithUTF8String(pchar(
LCLStrConsts.rsMacOSEditMenuSelectAll));
Result:= _NSSTR_EDIT_MENU_SELECTALL;
end;
initialization
_NSSTR_EMPTY:= NSString.string_;
@ -146,5 +218,13 @@ finalization;
_NSSTR_TABCONTROL_PREV_ARROW.release;
_NSSTR_TABCONTROL_NEXT_ARROW.release;
_NSSTR_EDIT_MENU.release;
_NSSTR_EDIT_MENU_UNDO.release;
_NSSTR_EDIT_MENU_REDO.release;
_NSSTR_EDIT_MENU_CUT.release;
_NSSTR_EDIT_MENU_COPY.release;
_NSSTR_EDIT_MENU_PASTE.release;
_NSSTR_EDIT_MENU_SELECTALL.release;
end.

View File

@ -33,7 +33,7 @@ uses
// Widgetset
WSLCLClasses, WSDialogs,
// LCL Cocoa
CocoaUtils, CocoaGDIObjects, Cocoa_Extra, CocoaMenus;
CocoaConst, CocoaUtils, CocoaGDIObjects, Cocoa_Extra, CocoaMenus;
type
@ -429,7 +429,7 @@ var
appMenu.release;
end;
editMenuIndex:= mainMenu.indexOfItemWithTitle(NSSTR('Edit'));
editMenuIndex:= mainMenu.indexOfItemWithTitle(CocoaConst.NSSTR_EDIT_MENU);
if editMenuIndex < 0 then begin
editMenuIndex:= mainMenu.numberOfItems;
end else begin
@ -442,20 +442,24 @@ var
mainMenu.insertItem_atIndex(editMenu, editMenuIndex);
editMenu.release;
editSubmenu:= NSMenu.alloc.initWithTitle(NSSTR('Edit'));
editSubmenu:= NSMenu.alloc.initWithTitle(CocoaConst.NSSTR_EDIT_MENU);
editMenu.setSubmenu(editSubmenu);
editSubmenu.release;
editSubmenu.addItemWithTitle_action_keyEquivalent(NSSTR('Undo'), objcselector('undo:'), NSSTR('z'));
editSubmenu.addItemWithTitle_action_keyEquivalent(NSSTR('Redo'), objcselector('redo:'), NSSTR('Z'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_UNDO, objcselector('undo:'), NSSTR('z'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_REDO, objcselector('redo:'), NSSTR('Z'));
editSubmenu.addItem(NSMenuItem.separatorItem);
editSubmenu.addItemWithTitle_action_keyEquivalent(NSSTR('Cut'), objcselector('cut:'), NSSTR('x'));
editSubmenu.addItemWithTitle_action_keyEquivalent(NSSTR('Copy'), objcselector('copy:'), NSSTR('c'));
editSubmenu.addItemWithTitle_action_keyEquivalent(NSSTR('Paste'), objcselector('paste:'), NSSTR('v'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
NSSTR('Select All'), objcselector('selectAll:'), NSSTR('a'));
CocoaConst.NSSTR_EDIT_MENU_CUT, objcselector('cut:'), NSSTR('x'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_COPY, objcselector('copy:'), NSSTR('c'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_PASTE, objcselector('paste:'), NSSTR('v'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_SELECTALL, objcselector('selectAll:'), NSSTR('a'));
end;
class procedure RestoreEditMenu();

View File

@ -243,10 +243,12 @@ msgid "&Directory"
msgstr ""
#: lclstrconsts.rsdocopy
msgctxt "lclstrconsts.rsdocopy"
msgid "Copy"
msgstr ""
#: lclstrconsts.rsdopaste
msgctxt "lclstrconsts.rsdopaste"
msgid "Paste"
msgstr ""
@ -255,6 +257,7 @@ msgid "Duplicate icon format."
msgstr ""
#: lclstrconsts.rseditrecordhint
msgctxt "lclstrconsts.rseditrecordhint"
msgid "Edit"
msgstr ""
@ -738,10 +741,46 @@ msgstr ""
msgid "List index exceeds bounds (%d)"
msgstr ""
#: lclstrconsts.rsmacoseditmenu
msgctxt "lclstrconsts.rsmacoseditmenu"
msgid "Edit"
msgstr ""
#: lclstrconsts.rsmacoseditmenucopy
msgctxt "lclstrconsts.rsmacoseditmenucopy"
msgid "Copy"
msgstr ""
#: lclstrconsts.rsmacoseditmenucut
msgid "Cut"
msgstr ""
#: lclstrconsts.rsmacoseditmenupaste
msgctxt "lclstrconsts.rsmacoseditmenupaste"
msgid "Paste"
msgstr ""
#: lclstrconsts.rsmacoseditmenuredo
msgid "Redo"
msgstr ""
#: lclstrconsts.rsmacoseditmenuselectall
msgid "Select All"
msgstr ""
#: lclstrconsts.rsmacoseditmenuundo
msgid "Undo"
msgstr ""
#: lclstrconsts.rsmacosfileformat
msgid "File Format:"
msgstr ""
#: lclstrconsts.rsmacosmenuabout
#, object-pascal-format
msgid "About %s"
msgstr ""
#: lclstrconsts.rsmacosmenuhide
#, object-pascal-format
msgid "Hide %s"
@ -751,6 +790,10 @@ msgstr ""
msgid "Hide Others"
msgstr ""
#: lclstrconsts.rsmacosmenupreferences
msgid "Preferences..."
msgstr ""
#: lclstrconsts.rsmacosmenuquit
#, object-pascal-format
msgid "Quit %s"

View File

@ -95,11 +95,22 @@ resourceString
rsRefreshRecordsHint = 'Refresh';
// macOS (cocoa) interface
rsMacOSMenuAbout = 'About %s';
rsMacOSMenuPreferences = 'Preferences...';
rsMacOSMenuHide = 'Hide %s';
rsMacOSMenuHideOthers = 'Hide Others';
rsMacOSMenuQuit = 'Quit %s';
rsMacOSMenuServices = 'Services';
rsMacOSMenuShowAll = 'Show All';
rsMacOSEditMenu = 'Edit';
rsMacOSEditMenuUndo = 'Undo';
rsMacOSEditMenuRedo = 'Redo';
rsMacOSEditMenuCut = 'Cut';
rsMacOSEditMenuCopy = 'Copy';
rsMacOSEditMenuPaste = 'Paste';
rsMacOSEditMenuSelectAll = 'Select All';
rsMacOSFileFormat = 'File Format:'; // used of FileDialog
// gtk interface