Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 409699c3c0 | |||
| 928bbe25b4 | |||
| 658a4e1e78 | |||
| bd3cf9bf9c | |||
| a4dd585497 | |||
| 843cb81697 | |||
| 9471ddbc7c | |||
| 46bd84f57d | |||
| 6233bfac56 | |||
| 03e3ed398a | |||
| 00b5041867 | |||
| 69b0a06656 | |||
| abb1ac2799 | |||
| 9bbb5b3e6a | |||
| 00dd8616f1 | |||
| d359752bef | |||
| 6b80ea95b5 | |||
| 8e14c20ca4 | |||
| d0063130b5 | |||
| c384d0e94b | |||
| e267d30bfd | |||
| d32fc188ca | |||
| 2b2fb80556 | |||
| 60978895b2 | |||
| 6a97ae68e9 | |||
| 29d047c928 | |||
| 5a18ccc5e1 | |||
| e83732400b | |||
| 2730683848 | |||
| 471322a113 | |||
| 09b7364130 | |||
| 82a06382f0 | |||
| dd2507b7f9 | |||
| a0af086f16 | |||
| a73a254ce7 | |||
| ed694bc1a5 | |||
| ded95506c6 | |||
| b99a1a4dc4 | |||
| dd0a37c785 | |||
| a06ef8d27c | |||
| 8b669cea8d | |||
| 3cca4da610 | |||
| 78bd9fbd77 | |||
| c7fc9a555a | |||
| 86be6257cb | |||
| 9f5db7ad25 | |||
| 814934072a |
@@ -1,3 +1,24 @@
|
||||
2.3.4 2016/8/12
|
||||
- Simplified and traditional Chinese localization [MichaelRow]
|
||||
- Add Korean, Dutch, Polish, Russian & update Spanish localizations [Radek Pietruszewski]
|
||||
- Improved German localization [Florian Schliep]
|
||||
– Add a Makefile to improve command-line building [sfsam]
|
||||
|
||||
2.3.3 2016/1/9
|
||||
- Improved Japanese localization [oreshinya]
|
||||
- Improved Frech localization [magiclantern]
|
||||
- Fixed CocoaPods localization with use_frameworks! [nivanchikov]
|
||||
|
||||
2.3.2 2015/10/12
|
||||
- Fixed localization when building through CocoaPods [Allan Beaufour]
|
||||
|
||||
2.3.1 2015/9/10
|
||||
- Trying to work around a strange build error in CocoaPods.
|
||||
|
||||
2.3.0 2015/9/10
|
||||
- Basic localization support for Czech, German, Spanish,
|
||||
Italian, French, and Japanese. Native speaking testers welcome!
|
||||
|
||||
2.2.0 2015/8/18
|
||||
- Basic accessibility support [starkos]
|
||||
- Added an option to hide the shortcut delete button [oreshinya]
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
# Backward Compatibility
|
||||
|
||||
Please note that this framework supports older OS X versions down to 10.6. When changing the code, be careful not to call any API functions not available in 10.6 or call them conditionally, only where supported.
|
||||
|
||||
# Commit Messages
|
||||
|
||||
Please use descriptive commit message. As an example, _Bug fix_ commit message doesn’t say much, while _Fixed a memory-management bug in formatting code_ works much better.
|
||||
|
||||
# How to Release a New Version
|
||||
|
||||
First, update the version numbers. (MASShortcut uses [Semantic Versioning](http://semver.org/), so please read the docs if you’re not sure what the deal is.) The version number is stored in `Framework/Info.plist` and `MASShortcut.podspec` (twice in both files).
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ static void *MASObservingContext = &MASObservingContext;
|
||||
- (void)playShortcutFeedback
|
||||
{
|
||||
[[NSSound soundNamed:@"Ping"] play];
|
||||
[_feedbackTextField setStringValue:@"Shortcut pressed!"];
|
||||
[_feedbackTextField setStringValue:NSLocalizedString(@"Shortcut pressed!", @"Feedback that’s displayed when user presses the sample shortcut.")];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[_feedbackTextField setStringValue:@""];
|
||||
});
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.shpakovski.mac.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/* Feedback that’s displayed when user presses the sample shortcut. */
|
||||
"Shortcut pressed!" = "Funguje!";
|
||||
|
||||
@@ -0,0 +1,734 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8173.3" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8173.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="494" id="495"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<menu title="AMainMenu" systemMenu="main" id="29">
|
||||
<items>
|
||||
<menuItem title="Demo" id="56">
|
||||
<menu key="submenu" title="Demo" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About Demo" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="236">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129"/>
|
||||
<menuItem isSeparatorItem="YES" id="143">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="131">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="144">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Demo" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="367"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="368"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="370"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Quit Demo" keyEquivalent="q" id="136">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-3" id="449"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="83">
|
||||
<menu key="submenu" title="File" id="81">
|
||||
<items>
|
||||
<menuItem title="New" keyEquivalent="n" id="82">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="-1" id="373"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="72">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="-1" id="374"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="124">
|
||||
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="125">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="126">
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="127"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="79">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="73">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="193"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save…" keyEquivalent="s" id="75">
|
||||
<connections>
|
||||
<action selector="saveDocument:" target="-1" id="362"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Revert to Saved" id="112">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="revertDocumentToSaved:" target="-1" id="364"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="74">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Page Setup..." keyEquivalent="P" id="77">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="-1" id="87"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="78">
|
||||
<connections>
|
||||
<action selector="print:" target="-1" id="86"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="217">
|
||||
<menu key="submenu" title="Edit" id="205">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="207">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="223"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="215">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="231"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="206">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="199">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="228"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="197">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="224"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="203">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="226"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="485">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteAsPlainText:" target="-1" id="486"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="202">
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="235"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="198">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="232"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="214">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Find" id="218">
|
||||
<menu key="submenu" title="Find" id="220">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="241"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="534">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="535"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="487"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="488"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="489"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="216">
|
||||
<menu key="submenu" title="Spelling and Grammar" id="200">
|
||||
<items>
|
||||
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="204">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="230"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Document Now" keyEquivalent=";" id="201">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="225"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="453"/>
|
||||
<menuItem title="Check Spelling While Typing" id="219">
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="346">
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Correct Spelling Automatically" id="454">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="456"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="348">
|
||||
<menu key="submenu" title="Substitutions" id="349">
|
||||
<items>
|
||||
<menuItem title="Show Substitutions" id="457">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="458"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="459"/>
|
||||
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Dashes" id="460">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="461"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Text Replacement" id="462">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticTextReplacement:" target="-1" id="463"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Transformations" id="450">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Transformations" id="451">
|
||||
<items>
|
||||
<menuItem title="Make Upper Case" id="452">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="uppercaseWord:" target="-1" id="464"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Lower Case" id="465">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowercaseWord:" target="-1" id="468"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Capitalize" id="466">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="capitalizeWord:" target="-1" id="467"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="211">
|
||||
<menu key="submenu" title="Speech" id="212">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="196">
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="233"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="195">
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="227"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Format" id="375">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Format" id="376">
|
||||
<items>
|
||||
<menuItem title="Font" id="377">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Font" systemMenu="font" id="388">
|
||||
<items>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="389">
|
||||
<connections>
|
||||
<action selector="orderFrontFontPanel:" target="420" id="424"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="390">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="420" id="421"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="391">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="420" id="422"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Underline" keyEquivalent="u" id="392">
|
||||
<connections>
|
||||
<action selector="underline:" target="-1" id="432"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="393"/>
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="394">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="420" id="425"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="395">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="420" id="423"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="396"/>
|
||||
<menuItem title="Kern" id="397">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Kern" id="415">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="416">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardKerning:" target="-1" id="438"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="417">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffKerning:" target="-1" id="441"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Tighten" id="418">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="tightenKerning:" target="-1" id="431"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Loosen" id="419">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="loosenKerning:" target="-1" id="435"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Ligatures" id="398">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Ligatures" id="411">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="412">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardLigatures:" target="-1" id="439"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="413">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffLigatures:" target="-1" id="440"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use All" id="414">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useAllLigatures:" target="-1" id="434"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Baseline" id="399">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Baseline" id="405">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="406">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unscript:" target="-1" id="437"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Superscript" id="407">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="superscript:" target="-1" id="430"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Subscript" id="408">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="subscript:" target="-1" id="429"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Raise" id="409">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="raiseBaseline:" target="-1" id="426"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Lower" id="410">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowerBaseline:" target="-1" id="427"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="400"/>
|
||||
<menuItem title="Show Colors" keyEquivalent="C" id="401">
|
||||
<connections>
|
||||
<action selector="orderFrontColorPanel:" target="-1" id="433"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="402"/>
|
||||
<menuItem title="Copy Style" keyEquivalent="c" id="403">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyFont:" target="-1" id="428"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Style" keyEquivalent="v" id="404">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteFont:" target="-1" id="436"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Text" id="496">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Text" id="497">
|
||||
<items>
|
||||
<menuItem title="Align Left" keyEquivalent="{" id="498">
|
||||
<connections>
|
||||
<action selector="alignLeft:" target="-1" id="524"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Center" keyEquivalent="|" id="499">
|
||||
<connections>
|
||||
<action selector="alignCenter:" target="-1" id="518"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Justify" id="500">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="alignJustified:" target="-1" id="523"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Align Right" keyEquivalent="}" id="501">
|
||||
<connections>
|
||||
<action selector="alignRight:" target="-1" id="521"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="502"/>
|
||||
<menuItem title="Writing Direction" id="503">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Writing Direction" id="508">
|
||||
<items>
|
||||
<menuItem title="Paragraph" enabled="NO" id="509">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="510">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionNatural:" target="-1" id="525"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="511">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="526"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="512">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="527"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="513"/>
|
||||
<menuItem title="Selection" enabled="NO" id="514">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="515">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionNatural:" target="-1" id="528"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="516">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="529"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="517">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="530"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="504"/>
|
||||
<menuItem title="Show Ruler" id="505">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleRuler:" target="-1" id="520"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="506">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyRuler:" target="-1" id="522"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="507">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteRuler:" target="-1" id="519"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="View" id="295">
|
||||
<menu key="submenu" title="View" id="296">
|
||||
<items>
|
||||
<menuItem title="Show Toolbar" keyEquivalent="t" id="297">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleToolbarShown:" target="-1" id="366"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Customize Toolbar…" id="298">
|
||||
<connections>
|
||||
<action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="19">
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="24">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="37"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="239">
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="240"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="92">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="5">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="39"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="490">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="491">
|
||||
<items>
|
||||
<menuItem title="Demo Help" keyEquivalent="?" id="492">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="493"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<window title="Demo" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="DemoWindow" animationBehavior="default" id="371">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="335" y="390" width="393" height="129"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="372">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="129"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<customView id="536" customClass="MASShortcutView">
|
||||
<rect key="frame" x="142" y="90" width="158" height="19"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="PG0-jh-Onh">
|
||||
<rect key="frame" x="9" y="92" width="120" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Klávesová zkratka:" id="85u-1A-n7H">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button id="zCi-ki-Uuh">
|
||||
<rect key="frame" x="140" y="63" width="196" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Zapnout klávesovou zkratku" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Y47-p3-sDa">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="rCO-Ve-DT5" name="value" keyPath="values.customShortcutEnabled" id="VjS-3V-VdA"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="KnS-ut-phz">
|
||||
<rect key="frame" x="18" y="65" width="111" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Předvolby:" id="cUE-gA-heG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button id="F4r-KM-wn9">
|
||||
<rect key="frame" x="140" y="43" width="237" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Zapnout vestavěnou zkratku (⌘F2)" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="7gv-jN-44g">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="rCO-Ve-DT5" name="value" keyPath="values.hardcodedShortcutEnabled" id="dlZ-si-HeN"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="9fB-XS-8pK">
|
||||
<rect key="frame" x="18" y="20" width="111" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Zkratka v akci:" id="Zbz-mV-NDc">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="Aso-dH-W8I">
|
||||
<rect key="frame" x="140" y="20" width="211" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" placeholderString="stiskněte klávesovou zkratku" id="Ckx-v7-e6x">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" red="0.37647062540054321" green="0.85098046064376831" blue="0.17647059261798859" alpha="1" colorSpace="deviceRGB"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="6.5" y="248.5"/>
|
||||
</window>
|
||||
<customObject id="494" customClass="AppDelegate">
|
||||
<connections>
|
||||
<outlet property="customShortcutView" destination="536" id="aO6-hh-1vm"/>
|
||||
<outlet property="feedbackTextField" destination="Aso-dH-W8I" id="hk8-xL-ieC"/>
|
||||
<outlet property="window" destination="371" id="532"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="420" customClass="NSFontManager"/>
|
||||
<userDefaultsController representsSharedInstance="YES" id="rCO-Ve-DT5"/>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,3 @@
|
||||
/* Feedback that’s displayed when user presses the sample shortcut. */
|
||||
"Shortcut pressed!" = "Kurzbefehl gedrückt!";
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/* Feedback that’s displayed when user presses the sample shortcut. */
|
||||
"Shortcut pressed!" = "Shortcut pressed!";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="14B25" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8173.3" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8173.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -0,0 +1,3 @@
|
||||
/* Feedback that’s displayed when user presses the sample shortcut. */
|
||||
"Shortcut pressed!" = "ショートカットが押されました!";
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.github.shpakovski.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.2.0</string>
|
||||
<string>2.3.4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.2.0</string>
|
||||
<string>2.3.4</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014–2015 Vadim Shpakovski. All rights reserved.</string>
|
||||
<string>Copyright © Vadim Shpakovski. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
Reads a localized string from the framework’s bundle.
|
||||
|
||||
Normally you would use NSLocalizedString to read the localized
|
||||
strings, but that’s just a shortcut for loading the strings from
|
||||
the main bundle. And once the framework ends up in an app, the
|
||||
main bundle will be the app’s bundle and won’t contain our strings.
|
||||
So we introduced this helper function that makes sure to load the
|
||||
strings from the framework’s bundle. Please avoid using
|
||||
NSLocalizedString throughout the framework, it wouldn’t work
|
||||
properly.
|
||||
*/
|
||||
NSString *MASLocalizedString(NSString *key, NSString *comment);
|
||||
@@ -0,0 +1,34 @@
|
||||
#import "MASLocalization.h"
|
||||
#import "MASShortcut.h"
|
||||
|
||||
static NSString *const MASLocalizationTableName = @"Localizable";
|
||||
static NSString *const MASPlaceholderLocalizationString = @"XXX";
|
||||
|
||||
// The CocoaPods trickery here is needed because when the code
|
||||
// is built as a part of CocoaPods, it won’t make a separate framework
|
||||
// and the Localized.strings file won’t be bundled correctly.
|
||||
// See https://github.com/shpakovski/MASShortcut/issues/74
|
||||
NSString *MASLocalizedString(NSString *key, NSString *comment) {
|
||||
static NSBundle *localizationBundle = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSBundle *frameworkBundle = [NSBundle bundleForClass:[MASShortcut class]];
|
||||
// first we'll check if resources bundle was copied to MASShortcut framework bundle when !use_frameworks option is active
|
||||
NSURL *cocoaPodsBundleURL = [frameworkBundle URLForResource:@"MASShortcut" withExtension:@"bundle"];
|
||||
if (cocoaPodsBundleURL) {
|
||||
localizationBundle = [NSBundle bundleWithURL: cocoaPodsBundleURL];
|
||||
} else {
|
||||
// trying to fetch cocoapods bundle from main bundle
|
||||
cocoaPodsBundleURL = [[NSBundle mainBundle] URLForResource: @"MASShortcut" withExtension:@"bundle"];
|
||||
if (cocoaPodsBundleURL) {
|
||||
localizationBundle = [NSBundle bundleWithURL: cocoaPodsBundleURL];
|
||||
} else {
|
||||
// fallback to framework bundle
|
||||
localizationBundle = frameworkBundle;
|
||||
}
|
||||
}
|
||||
});
|
||||
return [localizationBundle localizedStringForKey:key
|
||||
value:MASPlaceholderLocalizationString
|
||||
table:MASLocalizationTableName];
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
#import "MASShortcut.h"
|
||||
#import "MASLocalization.h"
|
||||
|
||||
static NSString *const MASShortcutKeyCode = @"KeyCode";
|
||||
static NSString *const MASShortcutModifierFlags = @"ModifierFlags";
|
||||
@@ -100,7 +101,7 @@ static NSString *const MASShortcutModifierFlags = @"ModifierFlags";
|
||||
case kVK_F17: return @"F17";
|
||||
case kVK_F18: return @"F18";
|
||||
case kVK_F19: return @"F19";
|
||||
case kVK_Space: return NSLocalizedString(@"Space", @"Shortcut glyph name for SPACE key");
|
||||
case kVK_Space: return MASLocalizedString(@"Space", @"Shortcut glyph name for SPACE key");
|
||||
case kVK_Escape: return NSStringFromMASKeyCode(kMASShortcutGlyphEscape);
|
||||
case kVK_Delete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteLeft);
|
||||
case kVK_ForwardDelete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteRight);
|
||||
|
||||
@@ -1,9 +1,23 @@
|
||||
#import "MASShortcut.h"
|
||||
|
||||
/**
|
||||
This class is used by the recording control to tell which shortcuts are acceptable.
|
||||
|
||||
There are two kinds of shortcuts that are not considered acceptable: shortcuts that
|
||||
are too simple (like single letter keys) and shortcuts that are already used by the
|
||||
operating system.
|
||||
*/
|
||||
@interface MASShortcutValidator : NSObject
|
||||
|
||||
// The following API enable hotkeys with the Option key as the only modifier
|
||||
// For example, Option-G will not generate © and Option-R will not paste ®
|
||||
/**
|
||||
Set to `YES` if you want to accept Option-something shortcuts.
|
||||
|
||||
`NO` by default, since Option-something shortcuts are often used by system,
|
||||
for example Option-G will type the © sign. This also applies to Option-Shift
|
||||
shortcuts – in other words, shortcut recorder will not accept shortcuts like
|
||||
Option-Shift-K by default. (Again, since Option-Shift-K inserts the Apple
|
||||
logo sign by default.)
|
||||
*/
|
||||
@property(assign) BOOL allowAnyShortcutWithOptionModifier;
|
||||
|
||||
+ (instancetype) sharedValidator;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#import "MASShortcutValidator.h"
|
||||
#import "MASLocalization.h"
|
||||
|
||||
@implementation MASShortcutValidator
|
||||
|
||||
@@ -68,7 +69,7 @@
|
||||
|
||||
if (equalFlags && equalHotkeyLowercase) {
|
||||
if (explanation) {
|
||||
*explanation = NSLocalizedString(@"This shortcut cannot be used because it is already used by the menu item ‘%@’.",
|
||||
*explanation = MASLocalizedString(@"This shortcut cannot be used because it is already used by the menu item ‘%@’.",
|
||||
@"Message for alert when shortcut is already used");
|
||||
*explanation = [NSString stringWithFormat:*explanation, menuItem.title];
|
||||
}
|
||||
@@ -95,7 +96,7 @@
|
||||
([(__bridge NSNumber *)enabled boolValue])) {
|
||||
|
||||
if (explanation) {
|
||||
*explanation = NSLocalizedString(@"This combination cannot be used because it is already used by a system-wide "
|
||||
*explanation = MASLocalizedString(@"This combination cannot be used because it is already used by a system-wide "
|
||||
@"keyboard shortcut.\nIf you really want to use this key combination, most shortcuts "
|
||||
@"can be changed in the Keyboard & Mouse panel in System Preferences.",
|
||||
@"Message for alert when shortcut is already used by the system");
|
||||
|
||||
+21
-13
@@ -1,5 +1,6 @@
|
||||
#import "MASShortcutView.h"
|
||||
#import "MASShortcutValidator.h"
|
||||
#import "MASLocalization.h"
|
||||
|
||||
NSString *const MASShortcutBinding = @"shortcutValue";
|
||||
|
||||
@@ -137,16 +138,23 @@ static const CGFloat MASButtonFontSize = 11;
|
||||
[self setNeedsDisplay:YES];
|
||||
|
||||
// Give VoiceOver users feedback on the result. Requires at least 10.9 to run.
|
||||
// We’re silencing the “tautological compare” warning here so that if someone
|
||||
// takes the naked source files and compiles them with -Wall, the following
|
||||
// NSAccessibilityPriorityKey comparison doesn’t cause a warning. See:
|
||||
// https://github.com/shpakovski/MASShortcut/issues/76
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wtautological-compare"
|
||||
if (_recording == NO && (&NSAccessibilityPriorityKey != NULL)) {
|
||||
NSString* msg = _shortcutValue ?
|
||||
NSLocalizedString(@"Shortcut set", @"VoiceOver: Shortcut set") :
|
||||
NSLocalizedString(@"Shortcut cleared", @"VoiceOver: Shortcut cleared");
|
||||
MASLocalizedString(@"Shortcut set", @"VoiceOver: Shortcut set") :
|
||||
MASLocalizedString(@"Shortcut cleared", @"VoiceOver: Shortcut cleared");
|
||||
NSDictionary *announcementInfo = @{
|
||||
NSAccessibilityAnnouncementKey : msg,
|
||||
NSAccessibilityPriorityKey : @(NSAccessibilityPriorityHigh),
|
||||
};
|
||||
NSAccessibilityPostNotificationWithUserInfo(self, NSAccessibilityAnnouncementRequestedNotification, announcementInfo);
|
||||
}
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
|
||||
- (void)setShortcutValue:(MASShortcut *)shortcutValue
|
||||
@@ -217,10 +225,10 @@ static const CGFloat MASButtonFontSize = 11;
|
||||
[self getShortcutRect:&shortcutRect hintRect:NULL];
|
||||
NSString *title = (self.recording
|
||||
? (_hinting
|
||||
? NSLocalizedString(@"Use Old Shortcut", @"Cancel action button for non-empty shortcut in recording state")
|
||||
? MASLocalizedString(@"Use Old Shortcut", @"Cancel action button for non-empty shortcut in recording state")
|
||||
: (self.shortcutPlaceholder.length > 0
|
||||
? self.shortcutPlaceholder
|
||||
: NSLocalizedString(@"Type New Shortcut", @"Non-empty shortcut button in recording state")))
|
||||
: MASLocalizedString(@"Type New Shortcut", @"Non-empty shortcut button in recording state")))
|
||||
: _shortcutValue ? _shortcutValue.description : @"");
|
||||
[self drawInRect:shortcutRect withTitle:title alignment:NSCenterTextAlignment state:self.isRecording ? NSOnState : NSOffState];
|
||||
}
|
||||
@@ -232,15 +240,15 @@ static const CGFloat MASButtonFontSize = 11;
|
||||
CGRect shortcutRect;
|
||||
[self getShortcutRect:&shortcutRect hintRect:NULL];
|
||||
NSString *title = (_hinting
|
||||
? NSLocalizedString(@"Cancel", @"Cancel action button in recording state")
|
||||
? MASLocalizedString(@"Cancel", @"Cancel action button in recording state")
|
||||
: (self.shortcutPlaceholder.length > 0
|
||||
? self.shortcutPlaceholder
|
||||
: NSLocalizedString(@"Type Shortcut", @"Empty shortcut button in recording state")));
|
||||
: MASLocalizedString(@"Type Shortcut", @"Empty shortcut button in recording state")));
|
||||
[self drawInRect:shortcutRect withTitle:title alignment:NSCenterTextAlignment state:NSOnState];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self drawInRect:self.bounds withTitle:NSLocalizedString(@"Record Shortcut", @"Empty shortcut button in normal state")
|
||||
[self drawInRect:self.bounds withTitle:MASLocalizedString(@"Record Shortcut", @"Empty shortcut button in normal state")
|
||||
alignment:NSCenterTextAlignment state:NSOffState];
|
||||
}
|
||||
}
|
||||
@@ -373,10 +381,10 @@ void *kUserDataHint = &kUserDataHint;
|
||||
- (NSString *)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(CGPoint)point userData:(void *)data
|
||||
{
|
||||
if (data == kUserDataShortcut) {
|
||||
return NSLocalizedString(@"Click to record new shortcut", @"Tooltip for non-empty shortcut button");
|
||||
return MASLocalizedString(@"Click to record new shortcut", @"Tooltip for non-empty shortcut button");
|
||||
}
|
||||
else if (data == kUserDataHint) {
|
||||
return NSLocalizedString(@"Delete shortcut", @"Tooltip for hint button near the non-empty shortcut");
|
||||
return MASLocalizedString(@"Delete shortcut", @"Tooltip for hint button near the non-empty shortcut");
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
@@ -431,13 +439,13 @@ void *kUserDataHint = &kUserDataHint;
|
||||
// Prevent cancel of recording when Alert window is key
|
||||
[weakSelf activateResignObserver:NO];
|
||||
[weakSelf activateEventMonitoring:NO];
|
||||
NSString *format = NSLocalizedString(@"The key combination %@ cannot be used",
|
||||
NSString *format = MASLocalizedString(@"The key combination %@ cannot be used",
|
||||
@"Title for alert when shortcut is already used");
|
||||
NSAlert* alert = [[NSAlert alloc]init];
|
||||
alert.alertStyle = NSCriticalAlertStyle;
|
||||
alert.informativeText = explanation;
|
||||
alert.messageText = [NSString stringWithFormat:format, shortcut];
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"OK", @"Alert button when shortcut is already used")];
|
||||
[alert addButtonWithTitle:MASLocalizedString(@"OK", @"Alert button when shortcut is already used")];
|
||||
|
||||
[alert runModal];
|
||||
weakSelf.shortcutPlaceholder = nil;
|
||||
@@ -544,7 +552,7 @@ void *kUserDataHint = &kUserDataHint;
|
||||
|
||||
- (NSString *)accessibilityHelp
|
||||
{
|
||||
return NSLocalizedString(@"To record a new shortcut, click this button, and then type the"
|
||||
return MASLocalizedString(@"To record a new shortcut, click this button, and then type the"
|
||||
@" new shortcut, or press delete to clear an existing shortcut.",
|
||||
@"VoiceOver shortcut help");
|
||||
}
|
||||
@@ -552,7 +560,7 @@ void *kUserDataHint = &kUserDataHint;
|
||||
- (NSString *)accessibilityLabel
|
||||
{
|
||||
NSString* title = _shortcutValue.description ?: @"Empty";
|
||||
title = [title stringByAppendingFormat:@" %@", NSLocalizedString(@"keyboard shortcut", @"VoiceOver title")];
|
||||
title = [title stringByAppendingFormat:@" %@", MASLocalizedString(@"keyboard shortcut", @"VoiceOver title")];
|
||||
return title;
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -1,6 +1,7 @@
|
||||
# coding: utf-8
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'MASShortcut'
|
||||
s.version = '2.2.0'
|
||||
s.version = '2.3.4'
|
||||
s.summary = 'Modern framework for managing global keyboard shortcuts compatible with Mac App Store'
|
||||
s.homepage = 'https://github.com/shpakovski/MASShortcut'
|
||||
s.license = 'BSD 2-clause'
|
||||
@@ -9,9 +10,10 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.platform = :osx
|
||||
s.osx.deployment_target = "10.6"
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.2.0' }
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.3.4' }
|
||||
s.source_files = 'Framework/*.{h,m}'
|
||||
s.exclude_files = 'Framework/*Tests.m'
|
||||
s.osx.frameworks = 'Carbon', 'AppKit'
|
||||
s.requires_arc = true
|
||||
s.osx.resource_bundles = { 'MASShortcut' => ['*.lproj'] }
|
||||
end
|
||||
|
||||
@@ -7,6 +7,11 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0D2CAB131B8332E5005431FC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0D2CAB151B8332E5005431FC /* Localizable.strings */; };
|
||||
0D2CAB191B8339F4005431FC /* MASLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D2CAB171B8339F4005431FC /* MASLocalization.h */; };
|
||||
0D2CAB1A1B8339F4005431FC /* MASLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2CAB181B8339F4005431FC /* MASLocalization.m */; };
|
||||
0D2CAB1B1B83409C005431FC /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0D2CAB1D1B83409C005431FC /* MainMenu.xib */; };
|
||||
0D2CAB211B834464005431FC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0D2CAB231B834464005431FC /* Localizable.strings */; };
|
||||
0D39DCA21A668A4400639145 /* MASHotKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D39DCA11A668A4400639145 /* MASHotKeyTests.m */; };
|
||||
0D39DCA41A668E5500639145 /* MASShortcutMonitorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D39DCA31A668E5500639145 /* MASShortcutMonitorTests.m */; };
|
||||
0D827CD71990D4420010B8EF /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D827CD61990D4420010B8EF /* Cocoa.framework */; };
|
||||
@@ -17,7 +22,6 @@
|
||||
0D827D381990D5E70010B8EF /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D827CD61990D4420010B8EF /* Cocoa.framework */; };
|
||||
0D827D6F1990D6110010B8EF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D827D6A1990D6110010B8EF /* AppDelegate.m */; };
|
||||
0D827D711990D6110010B8EF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D827D6D1990D6110010B8EF /* main.m */; };
|
||||
0D827D721990D6110010B8EF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0D827D6E1990D6110010B8EF /* MainMenu.xib */; };
|
||||
0D827D731990D6590010B8EF /* MASShortcut.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D827CD31990D4420010B8EF /* MASShortcut.framework */; };
|
||||
0D827D751990D6A60010B8EF /* MASShortcut.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 0D827CD31990D4420010B8EF /* MASShortcut.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
0D827D771990F81E0010B8EF /* Shortcut.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D827D761990F81E0010B8EF /* Shortcut.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@@ -66,8 +70,21 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0D2CAB141B8332E5005431FC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D2CAB161B8332EE005431FC /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D2CAB171B8339F4005431FC /* MASLocalization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MASLocalization.h; path = Framework/MASLocalization.h; sourceTree = "<group>"; };
|
||||
0D2CAB181B8339F4005431FC /* MASLocalization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASLocalization.m; path = Framework/MASLocalization.m; sourceTree = "<group>"; };
|
||||
0D2CAB1C1B83409C005431FC /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
0D2CAB1E1B8340A4005431FC /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = cs.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
0D2CAB221B834464005431FC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D2CAB241B834467005431FC /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D39DCA11A668A4400639145 /* MASHotKeyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASHotKeyTests.m; path = Framework/MASHotKeyTests.m; sourceTree = "<group>"; };
|
||||
0D39DCA31A668E5500639145 /* MASShortcutMonitorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASShortcutMonitorTests.m; path = Framework/MASShortcutMonitorTests.m; sourceTree = "<group>"; };
|
||||
0D58DE521BA165FC0023BFBE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D58DE531BA166170023BFBE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D58DE541BA166270023BFBE /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D58DE551BA166390023BFBE /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D58DE561BA166420023BFBE /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0D827CD31990D4420010B8EF /* MASShortcut.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MASShortcut.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0D827CD61990D4420010B8EF /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
0D827CD91990D4420010B8EF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
@@ -84,9 +101,8 @@
|
||||
0D827D6B1990D6110010B8EF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0D827D6C1990D6110010B8EF /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
|
||||
0D827D6D1990D6110010B8EF /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
0D827D6E1990D6110010B8EF /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
|
||||
0D827D761990F81E0010B8EF /* Shortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Shortcut.h; path = Framework/Shortcut.h; sourceTree = "<group>"; };
|
||||
0D827D8319910AFF0010B8EF /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0D827D8319910AFF0010B8EF /* MASShortcutTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MASShortcutTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0D827D8719910AFF0010B8EF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0D827D8D19910AFF0010B8EF /* Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
|
||||
0D827D9319910B740010B8EF /* MASShortcutTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASShortcutTests.m; path = Framework/MASShortcutTests.m; sourceTree = "<group>"; };
|
||||
@@ -106,7 +122,15 @@
|
||||
0DC2F18F199372B4003A0131 /* MASDictionaryTransformerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASDictionaryTransformerTests.m; path = Framework/MASDictionaryTransformerTests.m; sourceTree = "<group>"; };
|
||||
0DC2F19619938EFA003A0131 /* MASShortcutView+Bindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "MASShortcutView+Bindings.h"; path = "Framework/MASShortcutView+Bindings.h"; sourceTree = "<group>"; };
|
||||
0DC2F19719938EFA003A0131 /* MASShortcutView+Bindings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "MASShortcutView+Bindings.m"; path = "Framework/MASShortcutView+Bindings.m"; sourceTree = "<group>"; };
|
||||
0DEDAA021C6BB479001605F5 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6EA6034E1CBF822000A3ED9C /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6EA6034F1CBF822800A3ED9C /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6EA603501CBF822D00A3ED9C /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6EA603511CBF823600A3ED9C /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
76A0597D1C51DC940014B271 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
76A0597E1C51DC9F0014B271 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
EAFFDC811AACFF3300F38834 /* MASShortcut.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = MASShortcut.modulemap; path = Framework/MASShortcut.modulemap; sourceTree = "<group>"; };
|
||||
ED8737791BCE459800BB1716 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -154,7 +178,7 @@
|
||||
children = (
|
||||
0D827CD31990D4420010B8EF /* MASShortcut.framework */,
|
||||
0D827D371990D5E70010B8EF /* Demo.app */,
|
||||
0D827D8319910AFF0010B8EF /* Tests.xctest */,
|
||||
0D827D8319910AFF0010B8EF /* MASShortcutTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -179,6 +203,7 @@
|
||||
0D827DA119912A6D0010B8EF /* UI */,
|
||||
0D827D2F1990D5640010B8EF /* Info.plist */,
|
||||
EAFFDC811AACFF3300F38834 /* MASShortcut.modulemap */,
|
||||
0D2CAB151B8332E5005431FC /* Localizable.strings */,
|
||||
0D827D98199110F60010B8EF /* Prefix.pch */,
|
||||
0D827D761990F81E0010B8EF /* Shortcut.h */,
|
||||
);
|
||||
@@ -188,9 +213,10 @@
|
||||
0D827D681990D6110010B8EF /* Demo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0D2CAB231B834464005431FC /* Localizable.strings */,
|
||||
0D827D691990D6110010B8EF /* AppDelegate.h */,
|
||||
0D827D6A1990D6110010B8EF /* AppDelegate.m */,
|
||||
0D827D6E1990D6110010B8EF /* MainMenu.xib */,
|
||||
0D2CAB1D1B83409C005431FC /* MainMenu.xib */,
|
||||
0D827D6B1990D6110010B8EF /* Info.plist */,
|
||||
0D827D6C1990D6110010B8EF /* Prefix.pch */,
|
||||
0D827D6D1990D6110010B8EF /* main.m */,
|
||||
@@ -224,6 +250,8 @@
|
||||
0D827DA119912A6D0010B8EF /* UI */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0D2CAB171B8339F4005431FC /* MASLocalization.h */,
|
||||
0D2CAB181B8339F4005431FC /* MASLocalization.m */,
|
||||
0D827D211990D55E0010B8EF /* MASShortcutView.h */,
|
||||
0D827D221990D55E0010B8EF /* MASShortcutView.m */,
|
||||
0DC2F19619938EFA003A0131 /* MASShortcutView+Bindings.h */,
|
||||
@@ -274,6 +302,7 @@
|
||||
0DC2F18D1993708A003A0131 /* MASDictionaryTransformer.h in Headers */,
|
||||
0D827DA519912D240010B8EF /* MASShortcutMonitor.h in Headers */,
|
||||
0D827DAD199132840010B8EF /* MASShortcutBinder.h in Headers */,
|
||||
0D2CAB191B8339F4005431FC /* MASLocalization.h in Headers */,
|
||||
0DC2F17619922798003A0131 /* MASHotKey.h in Headers */,
|
||||
0D827D771990F81E0010B8EF /* Shortcut.h in Headers */,
|
||||
);
|
||||
@@ -333,7 +362,7 @@
|
||||
);
|
||||
name = MASShortcutTests;
|
||||
productName = Tests;
|
||||
productReference = 0D827D8319910AFF0010B8EF /* Tests.xctest */;
|
||||
productReference = 0D827D8319910AFF0010B8EF /* MASShortcutTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
@@ -342,7 +371,7 @@
|
||||
0D827CCA1990D4420010B8EF /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0610;
|
||||
LastUpgradeCheck = 0730;
|
||||
ORGANIZATIONNAME = "Vadim Shpakovski";
|
||||
TargetAttributes = {
|
||||
0D827D8219910AFF0010B8EF = {
|
||||
@@ -356,7 +385,18 @@
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
cs,
|
||||
de,
|
||||
es,
|
||||
it,
|
||||
fr,
|
||||
ja,
|
||||
"zh-Hans",
|
||||
"zh-Hant",
|
||||
pl,
|
||||
ko,
|
||||
ru,
|
||||
nl,
|
||||
);
|
||||
mainGroup = 0D827CC91990D4420010B8EF;
|
||||
productRefGroup = 0D827CD41990D4420010B8EF /* Products */;
|
||||
@@ -375,6 +415,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0D2CAB131B8332E5005431FC /* Localizable.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -382,7 +423,8 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0D827D721990D6110010B8EF /* MainMenu.xib in Resources */,
|
||||
0D2CAB1B1B83409C005431FC /* MainMenu.xib in Resources */,
|
||||
0D2CAB211B834464005431FC /* Localizable.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -406,6 +448,7 @@
|
||||
0D827D2C1990D55E0010B8EF /* MASShortcutView.m in Sources */,
|
||||
0D827D261990D55E0010B8EF /* MASShortcut.m in Sources */,
|
||||
0DC2F18E1993708A003A0131 /* MASDictionaryTransformer.m in Sources */,
|
||||
0D2CAB1A1B8339F4005431FC /* MASLocalization.m in Sources */,
|
||||
0DC2F19919938EFA003A0131 /* MASShortcutView+Bindings.m in Sources */,
|
||||
0DC2F17D199232F7003A0131 /* MASShortcutBinder.m in Sources */,
|
||||
);
|
||||
@@ -442,6 +485,49 @@
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
0D2CAB151B8332E5005431FC /* Localizable.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0D2CAB141B8332E5005431FC /* en */,
|
||||
0D2CAB161B8332EE005431FC /* cs */,
|
||||
0D58DE521BA165FC0023BFBE /* de */,
|
||||
0D58DE531BA166170023BFBE /* es */,
|
||||
0D58DE541BA166270023BFBE /* it */,
|
||||
0D58DE551BA166390023BFBE /* fr */,
|
||||
0D58DE561BA166420023BFBE /* ja */,
|
||||
76A0597D1C51DC940014B271 /* zh-Hans */,
|
||||
76A0597E1C51DC9F0014B271 /* zh-Hant */,
|
||||
6EA6034E1CBF822000A3ED9C /* pl */,
|
||||
6EA6034F1CBF822800A3ED9C /* ko */,
|
||||
6EA603501CBF822D00A3ED9C /* ru */,
|
||||
6EA603511CBF823600A3ED9C /* nl */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0D2CAB1D1B83409C005431FC /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0D2CAB1C1B83409C005431FC /* en */,
|
||||
0D2CAB1E1B8340A4005431FC /* cs */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0D2CAB231B834464005431FC /* Localizable.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0D2CAB221B834464005431FC /* en */,
|
||||
0D2CAB241B834467005431FC /* cs */,
|
||||
ED8737791BCE459800BB1716 /* ja */,
|
||||
0DEDAA021C6BB479001605F5 /* de */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0D827CF91990D4420010B8EF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
@@ -460,6 +546,7 @@
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
@@ -529,6 +616,7 @@
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
MODULEMAP_FILE = Framework/MASShortcut.modulemap;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.github.shpakovski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
WRAPPER_EXTENSION = framework;
|
||||
@@ -549,6 +637,7 @@
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
MODULEMAP_FILE = Framework/MASShortcut.modulemap;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.github.shpakovski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
WRAPPER_EXTENSION = framework;
|
||||
@@ -568,6 +657,7 @@
|
||||
);
|
||||
INFOPLIST_FILE = Demo/Info.plist;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.shpakovski.mac.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
@@ -582,6 +672,7 @@
|
||||
GCC_PREFIX_HEADER = Demo/Prefix.pch;
|
||||
INFOPLIST_FILE = Demo/Info.plist;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.shpakovski.mac.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
@@ -602,6 +693,7 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.github.shpakovski.MASShortcut.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
@@ -618,6 +710,7 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Tests/Prefix.pch;
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.github.shpakovski.MASShortcut.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0610"
|
||||
LastUpgradeVersion = "0730"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -23,10 +23,10 @@
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
@@ -38,17 +38,21 @@
|
||||
ReferencedContainer = "container:MASShortcut.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0D827D361990D5E70010B8EF"
|
||||
@@ -61,12 +65,13 @@
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0D827D361990D5E70010B8EF"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0610"
|
||||
LastUpgradeVersion = "0730"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -37,10 +37,10 @@
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@@ -62,15 +62,18 @@
|
||||
ReferencedContainer = "container:MASShortcut.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
@@ -85,10 +88,10 @@
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
.PHONY: release
|
||||
|
||||
ifndef BUILDDIR
|
||||
BUILDDIR := $(shell mktemp -d "$(TMPDIR)/MASShortcut.XXXXXX")
|
||||
endif
|
||||
|
||||
release:
|
||||
xcodebuild -scheme MASShortcut -configuration Release -derivedDataPath "$(BUILDDIR)" build
|
||||
open "$(BUILDDIR)/Build/Products/Release"
|
||||
|
||||
@@ -7,7 +7,7 @@ Some time ago Cocoa developers used a brilliant framework [ShortcutRecorder](htt
|
||||
|
||||
The MASShortcut project introduces a modern API and user interface for recording, storing and using system-wide keyboard shortcuts.
|
||||
|
||||

|
||||

|
||||
|
||||
Features:
|
||||
|
||||
@@ -19,11 +19,11 @@ Features:
|
||||
* Mac App Store friendly
|
||||
* Works on OS X 10.6 and up
|
||||
* Hacking-friendly codebase covered with tests
|
||||
* Basic accessibility support
|
||||
|
||||
Important features currently missing:
|
||||
Partially done:
|
||||
|
||||
* Localisation
|
||||
* Accessibility support. There’s some basic accessibility code, testers and feedback welcome.
|
||||
* Localisation. The English and Czech localization should be complete, there’s basic support for German, French, Spanish, Italian, and Japanese. If you’re a native speaker in one of the mentioned languages, please test the localization and report issues or add missing strings.
|
||||
|
||||
Pull requests welcome :)
|
||||
|
||||
@@ -37,7 +37,9 @@ If you want to stick to the 1.x branch, you can use the version smart match oper
|
||||
|
||||
pod 'MASShortcut', '~> 1'
|
||||
|
||||
Or can use Git submodules and link against the MASShortcut framework.
|
||||
You can also install via [Carthage](https://github.com/Carthage/Carthage), or you can use Git submodules and link against the MASShortcut framework manually.
|
||||
|
||||
To build from the command line, type 'make release'. The framework will be created in a temporary directory and revealed in Finder when the build is complete.
|
||||
|
||||
# Usage
|
||||
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.github.shpakovski.MASShortcut.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Zrušit";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Kliknutím nahrajete novou zkratku";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Smazat zkratku";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "klávesová zkratka";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Nahrát zkratku";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "zkratka smazána";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "zkratka nastavena";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Mezerník";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "Kombinace %@ se nedá použít";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Tato zkratka se nedá použít, protože už ji obsadil systém.\nKdybyste na ní trvali, většina systémových zkratek se dá přenastavit v Předvolbách systému.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Tato zkratka se nedá použít, protože už je použita pro menu (%@).";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Pokud chcete nahrát novou zkratku, stiskněte toto tlačítko a následně vybranou zkratku. Stisknutím Delete vymažete stávající zkratku.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Stiskněte zkratku";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Stiskněte zkratku";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Vrátit se k původní";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Abbrechen";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Klicken um neuen Kurzbefehl aufzunehmen";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Kurzbefehl Löschen";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "Kurzbefehl";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Kurzbefehl aufnehmen";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Kurzbefehl gelöscht";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Kurzbefehl gesetzt";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Leertaste";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "Die Tastenkombination %@ kann nicht genutzt werden";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Diese Kombination kann nicht genutzt werden, weil sie bereits als systemweiter Kurzbefehl genutzt wird.\nFalls du diese Tastenkombination wirklich benutzen willst, können die meisten Kurzbefehle in den Tastatur Systemeinstellungen geändert werden.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Dieser Kurzbefehl kann nicht genutzt werden, weil er bereits vom Menüpunkt „%@“ genutzt wird.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Drücke diesen Button, um einen neuen Kurzbefehl aufzunehmen. Tippe dann den neuen Kurzbefehl oder drücke Löschen, um den aktuellen Kurzbefehl zu löschen.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Neuen eingeben";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Kurzbefehl eingeben";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Alten nutzen";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Click to record new shortcut";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Delete shortcut";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "keyboard shortcut";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Record Shortcut";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Shortcut cleared";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Shortcut set";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Space";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "The key combination %@ cannot be used";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "This shortcut cannot be used because it is already used by the menu item ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Type New Shortcut";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Type Shortcut";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Use Old Shortcut";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Haga clic para grabar nuevo atajo";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Borrar atajo";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "atajo de teklado";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Grabar atajo";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Atajo borrado";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Atajo creado";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Espacio";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "La combinación de claves %@ no se puede utilizada";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Esta combinación no se puede utilizar debido a que ya es en us como atajo del sistema.\nSi realmente desea utilizar esta combinación de teclas, la mayoría de los atajos se puede cambiar en el panel de Teclado y Ratón de Preferencias del Sistema.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Este atajo no se puede utilizar debido a que ya es utilizado por el elemento de menú '%@'.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Para grabar un nuevo atajo, haga clic en este botón, a continuar, escriba el nuevo atajo, o pulse borrar para qutar un atajo existente.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Escribir atajo";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Escribir atajo";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Usa atajo anterior";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Annuler";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Cliquez pour enregistrer le raccourci";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Supprimer le raccourci";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "raccourci clavier";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Enregistrer le raccourci";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Raccourci supprimé";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Raccourci configuré";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Espace";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "La combinaison %@ ne peut être utilisée";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Cette combinaison de touches ne peut être utilisée parce qu’elle est réservée pour un raccourci du système.\nSi vous désirez l’utiliser, la plupart des raccourcis peuvent être modifiés dans l’onglet Clavier, dans Préférences Système.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Ce raccourci ne peut être utilisé parce qu’il est déjà utilisé par le point de menu «%@».";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Pour enregistrer un nouveau raccourci, cliquez sur ce bouton et tapez le nouveau raccourci, ou bien, tapez sur «Supprimer» pour supprimer le raccourci configuré.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Saisir un raccourci";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Saisir un raccourci";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Revenir au raccourci précédent";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Annulla";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Click to record new shortcut";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Delete shortcut";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "keyboard shortcut";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Registra scorciatoia";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Shortcut cleared";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Shortcut set";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Spazio";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "The key combination %@ cannot be used";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "This shortcut cannot be used because it is already used by the menu item ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Digita scorciatoia";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Digita scorciatoia";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Use Old Shortcut";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "キャンセルする";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "クリックしてショートカットを入力";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "ショートカットを削除";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "キーボードショートカット";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "ショートカットを入力";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "ショートカットが削除されました";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "ショートカットが設定されました";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "スペース";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "%@ はショートカットに設定できません";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "このショートカットは、システム全体で使用されているショートカットのため、設定することができません。\nもしこのショートカットを使用したい場合、「システム環境設定」の「キーボード」、「マウス」のパネルから既に設定されているショートカットを変更してください。";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "このショートカットは、メニュー操作の「%@」で使われているため、設定できません。";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "このボタンをクリックし、ショートカットを入力すると、新しいショートカットが設定されます。また、削除ボタンをおすと、ショートカットが削除されます。";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "ショートカットを入力";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "ショートカットを入力";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "古いショートカットを使用";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "취소";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "클릭해 단축 키를 입력";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "단축키 삭제";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "키보드 단축키";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "좋아";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "단축키 입력";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "단축키 삭제됨";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "단축키 설정됨";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "스페이스 바";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "%@ 단축키로 설정할 수 없습니다";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "이 결합은 시스템 전체에서 사용 때문에 단축키로 설정 할 수 없습니다.\n단축키를 사용하고 싶으면 시스템 환경 설정의 키보드, 마우스 패널에서 이미 설정되어있는 단축키를 변경하십시오.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "이 단축키는 ‘%@’ 메뉴 아이템에 사용되고 있기 때문에 설정할 수 없습니다.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "이 버튼을 클릭하고 단축키를 입력하면 새로운 단축키가 설정됩니다. 또한 삭제 버튼을 누르면 단축키가 삭제됩니다.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "새 단축키 입력";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "단축키 입력";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "오래된 단축키를 사용";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Verbreken";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Druk om een nieuwe sneltoets in te voeren";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Verwijder sneltoets";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "sneltoets";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Sneltoets opnemen";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Sneltoets verwijderd";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Sneltoets zetten";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Spatie";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "De sneltoetsencombinatie kan niet worden gebruikt";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Deze combinatie kan niet worden gebruikt want hij wordt al gebruikt door een systeembreed sneltoets.\nAls je deze combinatie echt wilt gebruiken, kun je de meeste sneltoetsen binnen Toetsenbordinstellingen veranderen.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Deze sneltoets kan niet worden gebruikt want hij wordt al gebruikt door het menu item ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Om nieuwe sneltoets op te nemen, druk op deze knop, en voer een nieuwe sneltoets in, of druk op verwijder om bestaande sneltoets te verwijderen.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Voer Nieuwe Sneltoets in";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Voer Sneltoets in";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Gebruik Oude Sneltoets";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Anuluj";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Kliknij, by ustawić nowy skrót";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Usuń skrót";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "skrót klawiszowy";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Utwórz skrót";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Skrót usunięty";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Skrót ustawiony";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Spacja";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "Nie można użyć kombinacji klawiszy %@";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Nie można użyć tej kombinacji, ponieważ jest już zajęta przez skrót systemowy.\nMożesz to zmienić w panelu Klawiatura w Preferencjach systemowych.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Ten skrót nie może być użyty, ponieważ w menu ma już przypisaną funkcję ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Aby ustawić nowy skrót, użyj tego przycisku, a następnie wpisz nowy skrót albo naciśnij klawisz delete, by usunąć istniejący skrót";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Wpisz nowy skrót";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Wpisz skrót";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Użyj starego skrótu";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "Отмена";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Нажмите для записи сочетания клавиш";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Удалить горячую клавишу";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "сочетание клавиш";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "ОК";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "Ввести сочетание";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Сочетание клавиш удалено";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Сочетание клавиш назначено";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Пробел";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "Нельзя использовать сочетание клавиш %@";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Нельзя использовать это сочетание клавиш, потому что оно уже используется в системе.\n Если вы хотите использовать это сочетание, измените существующее системное сочетание клавиш через панель Клавиатура в Cистемных настройках.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Нельзя использовать это сочетание, потому что оно уже связано с элементом ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Чтобы назначить новое сочетание клавиш, нажмите эту кнопку и введите новое сочетание, или нажмите \"Удалить\", чтобы удалить действующее сочетание клавиш.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Введите сочетание";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Введите сочетание";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Вернуть старое";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "取消";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "点击以记录新快捷键";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "删除快捷键";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "键盘快捷键";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "好";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "记录快捷键";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "快捷键已清除";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "快捷键已设置";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "空格键";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "按键组合“%@”无法使用";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "当前按键组合无法使用,因为它已经用作其他系统全局快捷键。\n如果您真的想使用这个按键组合,大部分系统全局快捷键能在“系统偏好设置”里的“键盘”和“鼠标”面板中重设。";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "当前快捷键无法使用,因为它已用作菜单项“%@”的快捷键。";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "若要记录新的快捷键,单击此按钮,然后键入新的快捷键,或者按“delete键”删除已经存在的快捷键。";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "键入新快捷键";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "键入快捷键";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "还原快捷键";
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Cancel action button in recording state */
|
||||
"Cancel" = "取消";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "點選以記錄新快捷鍵";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "刪除快捷鍵";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "鍵盤快捷鍵";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "好";
|
||||
|
||||
/* Empty shortcut button in normal state */
|
||||
"Record Shortcut" = "記錄快捷鍵";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "快捷鍵已清除";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "快捷鍵已設定";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "空格鍵";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "按鍵組合“%@”無法使用";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "當前按鍵組合無法使用,因為它已經用作其他系統全局快捷鍵。\n如果您真的想使用這個按鍵組合,大部分系統全局快捷鍵能在“系統偏好設定”裡的“鍵盤”和“滑鼠”面板中重設。";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "當前快捷鍵無法使用,因為它已用作選單項“%@”的快捷鍵。";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "若要記錄新的快捷鍵,單擊此按鈕,然後鍵入新的快捷鍵,或者按“delete鍵”刪除已經存在的快捷鍵。";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "鍵入新快捷鍵";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "鍵入快捷鍵";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "還原快捷鍵";
|
||||
Reference in New Issue
Block a user