11 Commits
0.7 ... 0.7.1

Author SHA1 Message Date
michael starke
c2dd64ff70 do not enabled non-working remove plugin button 2017-11-16 19:14:50 +01:00
michael starke
3113c38a20 bumped version 2017-11-16 19:13:22 +01:00
michael starke
089a3075ec using KeePassKit 1.7.6 2017-11-16 19:09:25 +01:00
michael starke
ad0a198b48 Extended and cleaned localizations 2017-11-16 19:08:38 +01:00
michael starke
36b98bcd6d customized open panels throughout the app. Added brows plugins button to plugin settings 2017-11-16 17:55:08 +01:00
michael starke
29a6c39c1f Added rudementary support to add plugins via the plugin settings tab 2017-11-16 17:34:03 +01:00
michael starke
95659e6121 Fixed typo in german localization for plugin settings view 2017-11-16 17:33:28 +01:00
michael starke
995625b229 disable notes field if nothing is selected (fixes #684) 2017-11-16 17:32:40 +01:00
michael starke
7a60b06c66 Added history item to table header selection 2017-11-16 11:20:17 +01:00
michael starke
97b3f3809b Using stringdicts for pluralization on duplicate entry action 2017-11-16 11:19:51 +01:00
michael starke
e1feefd041 Added missing english localizations 2017-11-16 06:50:57 +01:00
36 changed files with 470 additions and 442 deletions

View File

@@ -1,3 +1,3 @@
github "MacPass/KeePassKit" "1.7.5" github "MacPass/KeePassKit" "1.7.6"
github "mstarke/HNHUi" "1.4.1" github "mstarke/HNHUi" "1.4.1"
github "sparkle-project/Sparkle" "1.18.1" github "sparkle-project/Sparkle" "1.18.1"

View File

@@ -643,6 +643,8 @@
4C8B36A917A6ED4B005E1FF1 /* MPOutlineContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOutlineContextMenuDelegate.h; sourceTree = "<group>"; }; 4C8B36A917A6ED4B005E1FF1 /* MPOutlineContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOutlineContextMenuDelegate.h; sourceTree = "<group>"; };
4C8B36AA17A6ED4B005E1FF1 /* MPOutlineContextMenuDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOutlineContextMenuDelegate.m; sourceTree = "<group>"; }; 4C8B36AA17A6ED4B005E1FF1 /* MPOutlineContextMenuDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOutlineContextMenuDelegate.m; sourceTree = "<group>"; };
4C8DEAA11C314D2C00D24C32 /* MPTestAutotypeDelay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestAutotypeDelay.m; sourceTree = "<group>"; }; 4C8DEAA11C314D2C00D24C32 /* MPTestAutotypeDelay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestAutotypeDelay.m; sourceTree = "<group>"; };
4C93C5701FBDFEF700F36855 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
4C93C5711FBDFEF900F36855 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/AutotypeBuilderView.strings; sourceTree = "<group>"; };
4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = "<group>"; }; 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = "<group>"; };
4C97CCEF1FA727DC00E58F8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; }; 4C97CCEF1FA727DC00E58F8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
4CA08D9E17A831B200A6544B /* MPAddEntryContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAddEntryContextMenuDelegate.h; sourceTree = "<group>"; }; 4CA08D9E17A831B200A6544B /* MPAddEntryContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAddEntryContextMenuDelegate.h; sourceTree = "<group>"; };
@@ -2317,6 +2319,7 @@
FA9FD3281FB5E8F4003CEDD6 /* Base */, FA9FD3281FB5E8F4003CEDD6 /* Base */,
FA9FD32B1FB5E8FD003CEDD6 /* pl */, FA9FD32B1FB5E8FD003CEDD6 /* pl */,
4C73EB951FBB5A8F0033000F /* de */, 4C73EB951FBB5A8F0033000F /* de */,
4C93C5701FBDFEF700F36855 /* en */,
); );
name = AutotypeCandidateSelectionView.xib; name = AutotypeCandidateSelectionView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2327,6 +2330,7 @@
FA9FD32D1FB5EDD3003CEDD6 /* Base */, FA9FD32D1FB5EDD3003CEDD6 /* Base */,
FA9FD32F1FB5EDDE003CEDD6 /* pl */, FA9FD32F1FB5EDDE003CEDD6 /* pl */,
4C73EB961FBB5A910033000F /* de */, 4C73EB961FBB5A910033000F /* de */,
4C93C5711FBDFEF900F36855 /* en */,
); );
name = AutotypeBuilderView.xib; name = AutotypeBuilderView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2407,6 +2411,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 0.7.1;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -2459,6 +2464,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 0.7.1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -2488,6 +2494,7 @@
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = ""; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac", "$(PROJECT_DIR)/Carthage/Build/Mac",
@@ -2517,6 +2524,7 @@
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = ""; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac", "$(PROJECT_DIR)/Carthage/Build/Mac",

View File

@@ -134,7 +134,16 @@
<size key="maxSize" width="463" height="10000000"/> <size key="maxSize" width="463" height="10000000"/>
<color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> <color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<connections> <connections>
<binding destination="-2" name="editable" keyPath="representedObject.isHistory" id="zUB-H2-SkW"> <binding destination="-2" name="editable2" keyPath="representedObject" previousBinding="3gj-Fz-0G8" id="unc-qC-MMH">
<dictionary key="options">
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
<integer key="NSNoSelectionPlaceholder" value="-1"/>
<integer key="NSNotApplicablePlaceholder" value="-1"/>
<integer key="NSNullPlaceholder" value="-1"/>
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
<binding destination="-2" name="editable" keyPath="representedObject.isHistory" id="3gj-Fz-0G8">
<dictionary key="options"> <dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string> <string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary> </dictionary>

View File

@@ -1,14 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
<capability name="box content view" minToolsVersion="7.0"/> <capability name="box content view" minToolsVersion="7.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginSettingsController"> <customObject id="-2" userLabel="File's Owner" customClass="MPPluginSettingsController">
<connections> <connections>
<outlet property="addRemovePluginsControl" destination="B9Q-hq-K4N" id="Oqj-Ko-8UR"/>
<outlet property="loadInsecurePlugsinCheckButton" destination="CqP-oK-S8k" id="YET-o6-7Cc"/> <outlet property="loadInsecurePlugsinCheckButton" destination="CqP-oK-S8k" id="YET-o6-7Cc"/>
<outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/> <outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/>
<outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/> <outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/>
@@ -18,24 +19,24 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="520" height="434"/> <rect key="frame" x="0.0" y="0.0" width="520" height="473"/>
<subviews> <subviews>
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0"> <box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
<rect key="frame" x="175" y="16" width="328" height="342"/> <rect key="frame" x="175" y="46" width="328" height="351"/>
<view key="contentView" id="tD5-Na-7XI"> <view key="contentView" id="tD5-Na-7XI">
<rect key="frame" x="1" y="1" width="326" height="340"/> <rect key="frame" x="1" y="1" width="326" height="349"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</view> </view>
</box> </box>
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k"> <button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
<rect key="frame" x="18" y="398" width="159" height="18"/> <rect key="frame" x="18" y="437" width="159" height="18"/>
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX"> <buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
<rect key="frame" x="18" y="364" width="484" height="28"/> <rect key="frame" x="18" y="403" width="484" height="28"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM"> <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<string key="title">If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string> <string key="title">If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
@@ -44,13 +45,13 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8"> <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
<rect key="frame" x="20" y="20" width="150" height="336"/> <rect key="frame" x="20" y="50" width="150" height="345"/>
<clipView key="contentView" id="lTL-Q2-k45"> <clipView key="contentView" id="lTL-Q2-k45">
<rect key="frame" x="1" y="1" width="148" height="334"/> <rect key="frame" x="1" y="1" width="148" height="343"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d"> <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d">
<rect key="frame" x="0.0" y="0.0" width="148" height="334"/> <rect key="frame" x="0.0" y="0.0" width="148" height="343"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -106,23 +107,56 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
</scrollView> </scrollView>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
<rect key="frame" x="20" y="18" width="67" height="25"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
<font key="font" metaFont="system"/>
<segments>
<segment image="NSAddTemplate" width="32"/>
<segment image="NSRemoveTemplate" width="32" tag="1"/>
</segments>
</segmentedCell>
<connections>
<action selector="addOrRemovePlugin:" target="-2" id="ywK-Vi-MR4"/>
</connections>
</segmentedControl>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
<rect key="frame" x="383" y="18" width="117" height="25"/>
<buttonCell key="cell" type="roundTextured" title="Browse Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="browsePlugins:" target="-2" id="16S-2u-Tmi"/>
</connections>
</button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="1Rj-zS-7t2"/> <constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="1Rj-zS-7t2"/>
<constraint firstItem="vBs-Ga-aq0" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="top" id="2h6-C9-4N5"/> <constraint firstItem="vBs-Ga-aq0" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="top" id="2h6-C9-4N5"/>
<constraint firstItem="B9Q-hq-K4N" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="bottom" constant="8" symbolic="YES" id="3vA-Oh-cFO"/>
<constraint firstAttribute="bottom" secondItem="B9Q-hq-K4N" secondAttribute="bottom" constant="20" symbolic="YES" id="7HD-ji-Whc"/>
<constraint firstAttribute="trailing" secondItem="SNe-cc-CZs" secondAttribute="trailing" constant="20" symbolic="YES" id="8Je-yg-f1l"/>
<constraint firstAttribute="trailing" secondItem="aoG-FD-ds8" secondAttribute="trailing" constant="20" symbolic="YES" id="95O-Jh-0KG"/> <constraint firstAttribute="trailing" secondItem="aoG-FD-ds8" secondAttribute="trailing" constant="20" symbolic="YES" id="95O-Jh-0KG"/>
<constraint firstItem="vBs-Ga-aq0" firstAttribute="bottom" secondItem="fCk-fL-jU8" secondAttribute="bottom" id="BQ2-Wp-Fsh"/>
<constraint firstAttribute="bottom" secondItem="SNe-cc-CZs" secondAttribute="bottom" constant="20" symbolic="YES" id="Fqe-ch-vsS"/>
<constraint firstAttribute="trailing" secondItem="vBs-Ga-aq0" secondAttribute="trailing" constant="20" id="LUb-Un-azV"/> <constraint firstAttribute="trailing" secondItem="vBs-Ga-aq0" secondAttribute="trailing" constant="20" id="LUb-Un-azV"/>
<constraint firstItem="aoG-FD-ds8" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="NcW-ya-DPx"/> <constraint firstItem="aoG-FD-ds8" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="NcW-ya-DPx"/>
<constraint firstItem="B9Q-hq-K4N" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="Rtj-Ad-zkg"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="CqP-oK-S8k" secondAttribute="trailing" constant="20" symbolic="YES" id="TXL-mf-nxu"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="CqP-oK-S8k" secondAttribute="trailing" constant="20" symbolic="YES" id="TXL-mf-nxu"/>
<constraint firstAttribute="bottom" secondItem="fCk-fL-jU8" secondAttribute="bottom" constant="20" id="aeb-kZ-RSU"/> <constraint firstItem="SNe-cc-CZs" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="B9Q-hq-K4N" secondAttribute="trailing" constant="8" symbolic="YES" id="a62-en-kDA"/>
<constraint firstAttribute="bottom" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="20" id="czn-HC-o7k"/>
<constraint firstItem="fCk-fL-jU8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="fzW-4b-L8S"/> <constraint firstItem="fCk-fL-jU8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="fzW-4b-L8S"/>
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/> <constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="aoG-FD-ds8" secondAttribute="bottom" constant="8" id="vl9-MY-WW1"/> <constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="aoG-FD-ds8" secondAttribute="bottom" constant="8" id="vl9-MY-WW1"/>
<constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/> <constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/> <constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
</constraints> </constraints>
<point key="canvasLocation" x="108" y="118"/> <point key="canvasLocation" x="-214" y="11"/>
</customView> </customView>
</objects> </objects>
<resources>
<image name="NSAddTemplate" width="11" height="11"/>
<image name="NSRemoveTemplate" width="11" height="11"/>
</resources>
</document> </document>

View File

@@ -777,7 +777,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
} }
[copy addToGroup:group]; [copy addToGroup:group];
[self.undoManager setActionName:NSLocalizedString(@"ADD_TREMPLATE_ENTRY", "")]; [self.undoManager setActionName:NSLocalizedString(@"ADD_TREMPLATE_ENTRY", "Action to add an entry via template")];
} }
} }
} }
@@ -787,12 +787,11 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options { - (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
BOOL plural = self.selectedEntries.count > 1;
for(KPKEntry *entry in self.selectedEntries) { for(KPKEntry *entry in self.selectedEntries) {
KPKEntry *duplicate = [entry copyWithTitle:nil options:options]; KPKEntry *duplicate = [entry copyWithTitle:nil options:options];
[duplicate addToGroup:entry.parent]; [duplicate addToGroup:entry.parent];
} }
[self.undoManager setActionName:plural ? NSLocalizedString(@"DUPLICATE_ENTRIES", "") : NSLocalizedString(@"DUPLICATE_ENTRY", "")]; [self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_%ld", @"Action name for duplicating entries"), self.selectedEntries.count]];
} }
#pragma mark Validation #pragma mark Validation

View File

@@ -264,6 +264,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
openPanel.canChooseDirectories = NO; openPanel.canChooseDirectories = NO;
openPanel.canChooseFiles = YES; openPanel.canChooseFiles = YES;
openPanel.allowedFileTypes = @[(id)kUTTypeXML]; openPanel.allowedFileTypes = @[(id)kUTTypeXML];
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_IMPORT_XML_OPEN_PANEL", "Open button in the open panel to import an XML file");
openPanel.message = NSLocalizedString(@"MESSAGE_XML_OPEN_PANEL", "Message in the open panel to import an XML file");
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) { [openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
if(result == NSFileHandlingPanelOKButton) { if(result == NSFileHandlingPanelOKButton) {
[document readXMLfromURL:openPanel.URL]; [document readXMLfromURL:openPanel.URL];

View File

@@ -222,6 +222,8 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
openPanel.canChooseDirectories = NO; openPanel.canChooseDirectories = NO;
openPanel.canChooseFiles = YES; openPanel.canChooseFiles = YES;
openPanel.allowsMultipleSelection = YES; openPanel.allowsMultipleSelection = YES;
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_ADD_ATTACHMENT_OPEN_PANEL", "Open button in the open panel to add attachments to an entry");
openPanel.message = NSLocalizedString(@"MESSAGE_ADD_ATTACHMENT_OPEN_PANEL", "Message in the open panel to add attachments to an entry");
[openPanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) { [openPanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
if(result == NSFileHandlingPanelOKButton) { if(result == NSFileHandlingPanelOKButton) {
for (NSURL *attachmentURL in openPanel.URLs) { for (NSURL *attachmentURL in openPanel.URLs) {

View File

@@ -632,13 +632,14 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
- (void)_setupHeaderMenu { - (void)_setupHeaderMenu {
NSMenu *headerMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] init]; NSMenu *headerMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] init];
[headerMenu addItemWithTitle:NSLocalizedString(@"TITLE", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"TITLE", "Menu item to toggle display of title column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"USERNAME", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"USERNAME", "Menu item to toggle display of username column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"PASSWORD", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"PASSWORD", "Menu item to toggle display of password column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"URL", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"URL", "Menu item to toggle display of url column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"NOTES", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"NOTES", "Menu item to toggle display of notes column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"ATTACHMENTS", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"ATTACHMENTS", "Menu item to toggle display of attachment count column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"MODIFIED", "") action:NULL keyEquivalent:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"MODIFIED", "Menu item to toggle display of modified date column in entry table") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"HISTORY", "Menu item to toggle display of history count column in entry table") action:NULL keyEquivalent:@""];
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier, NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
MPEntryTableUserNameColumnIdentifier, MPEntryTableUserNameColumnIdentifier,
@@ -646,7 +647,8 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
MPEntryTableURLColumnIdentifier, MPEntryTableURLColumnIdentifier,
MPEntryTableNotesColumnIdentifier, MPEntryTableNotesColumnIdentifier,
MPEntryTableAttachmentColumnIdentifier, MPEntryTableAttachmentColumnIdentifier,
MPEntryTableModfiedColumnIdentifier ]; MPEntryTableModfiedColumnIdentifier,
MPEntryTableHistoryColumnIdentifier ];
NSDictionary *options = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName }; NSDictionary *options = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName };
for(NSMenuItem *item in headerMenu.itemArray) { for(NSMenuItem *item in headerMenu.itemArray) {

View File

@@ -170,7 +170,7 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
#pragma mark Custom Setter/Getter #pragma mark Custom Setter/Getter
- (void)setDatabaseNameWrapper:(NSString *)databaseNameWrapper { - (void)setDatabaseNameWrapper:(NSString *)databaseNameWrapper {
if(![_databaseNameWrapper isEqualToString:databaseNameWrapper]) { if(![_databaseNameWrapper isEqualToString:databaseNameWrapper]) {
_databaseNameWrapper = (databaseNameWrapper.length == 0) ? NSLocalizedString(@"DATABASE", "Default name database") : [databaseNameWrapper copy]; _databaseNameWrapper = (databaseNameWrapper.length == 0) ? NSLocalizedString(@"DATABASE", "Default display name for KDB databases") : [databaseNameWrapper copy];
} }
} }

View File

@@ -38,4 +38,6 @@ FOUNDATION_EXPORT NSString *const MPPluginHostPluginBundleIdentifiyerKey;
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (BOOL)installPluginAtURL:(NSURL *)url error:(NSError *__autoreleasing *)error;
@end @end

View File

@@ -26,6 +26,8 @@
#import "NSApplication+MPAdditions.h" #import "NSApplication+MPAdditions.h"
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "NSError+Messages.h"
#import "KeePassKit/KeePassKit.h" #import "KeePassKit/KeePassKit.h"
@@ -35,7 +37,7 @@ NSString *const MPPluginHostDidLoadPlugin = @"comt.hicknhack.macpass.MPPluginHos
NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBundleIdentifiyerKey"; NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBundleIdentifiyerKey";
@interface MPPluginHost () @interface MPPluginHost () <NSFileManagerDelegate>
@property (strong) NSMutableArray<MPPlugin __kindof *> *mutablePlugins; @property (strong) NSMutableArray<MPPlugin __kindof *> *mutablePlugins;
@property (nonatomic) BOOL loadUnsecurePlugins; @property (nonatomic) BOOL loadUnsecurePlugins;
@@ -80,6 +82,31 @@ NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBun
return [self.mutablePlugins copy]; return [self.mutablePlugins copy];
} }
- (BOOL)installPluginAtURL:(NSURL *)url error:(NSError *__autoreleasing *)error {
if(![self _validURL:url]) {
if(error) {
*error = [NSError errorWithCode:MPErrorInvalidPlugin description:NSLocalizedString(@"ERROR_INVALID_PLUGIN", @"Error description given when adding an invalid plugin")];
}
return NO;
}
NSString *fileName;
if(![url getResourceValue:&fileName forKey:NSURLNameKey error:error]) {
return NO;
}
NSURL *appSupportURL = [NSApp applicationSupportDirectoryURL:YES];
NSURL *destinationURL = [appSupportURL URLByAppendingPathComponent:fileName];
NSFileManager.defaultManager.delegate = self;
return [NSFileManager.defaultManager moveItemAtURL:url toURL:destinationURL error:error];
}
#pragma mark - NSFileManagerDelegate
- (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error movingItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL {
return NO;
}
#pragma mark - Plugin Loading
- (void)_loadPlugins { - (void)_loadPlugins {
NSURL *appSupportDir = [NSApp applicationSupportDirectoryURL:YES]; NSURL *appSupportDir = [NSApp applicationSupportDirectoryURL:YES];
NSError *error; NSError *error;
@@ -131,7 +158,7 @@ NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBun
} }
if(![pluginBundle loadAndReturnError:&error]) { if(![pluginBundle loadAndReturnError:&error]) {
NSLog(@"Bunlde Loading Error %@ %@", error.localizedDescription, error.localizedFailureReason); NSLog(@"Bundle Loading Error %@ %@", error.localizedDescription, error.localizedFailureReason);
continue; continue;
} }

View File

@@ -25,4 +25,7 @@
@interface MPPluginSettingsController : MPViewController <MPSettingsTab> @interface MPPluginSettingsController : MPViewController <MPSettingsTab>
- (IBAction)addOrRemovePlugin:(id)sender;
- (IBAction)browsePlugins:(id)sender;
@end @end

View File

@@ -26,11 +26,21 @@
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "NSApplication+MPAdditions.h"
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSUInteger, MPPluginSegmentType) {
MPAddPluginSegment = 0,
MPRemovePluginSegment = 1
};
@interface MPPluginSettingsController () <NSTableViewDataSource, NSTableViewDelegate> @interface MPPluginSettingsController () <NSTableViewDataSource, NSTableViewDelegate>
@property (weak) IBOutlet NSTableView *pluginTableView; @property (weak) IBOutlet NSTableView *pluginTableView;
@property (weak) IBOutlet NSView *settingsView; @property (weak) IBOutlet NSView *settingsView;
@property (weak) IBOutlet NSButton *loadInsecurePlugsinCheckButton; @property (weak) IBOutlet NSButton *loadInsecurePlugsinCheckButton;
@property (weak) IBOutlet NSSegmentedControl *addRemovePluginsControl;
@end @end
@@ -55,12 +65,14 @@
- (void)viewDidLoad { - (void)viewDidLoad {
self.pluginTableView.delegate = self; self.pluginTableView.delegate = self;
self.pluginTableView.dataSource = self; self.pluginTableView.dataSource = self;
[self.addRemovePluginsControl setEnabled:NO forSegment:MPRemovePluginSegment];
[self.loadInsecurePlugsinCheckButton bind:NSValueBinding [self.loadInsecurePlugsinCheckButton bind:NSValueBinding
toObject:[NSUserDefaultsController sharedUserDefaultsController] toObject:[NSUserDefaultsController sharedUserDefaultsController]
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyLoadUnsecurePlugins] withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyLoadUnsecurePlugins]
options:nil]; options:nil];
} }
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
@@ -98,7 +110,67 @@
- (void)tableViewSelectionDidChange:(NSNotification *)notification { - (void)tableViewSelectionDidChange:(NSNotification *)notification {
NSTableView *table = notification.object; NSTableView *table = notification.object;
[self showSettingsForPlugin:[self pluginForRow:table.selectedRow]]; MPPlugin *plugin = [self pluginForRow:table.selectedRow];
//[self.addRemovePluginsControl setEnabled:(nil != plugin) forSegment:MPRemovePluginSegment];
[self showSettingsForPlugin:plugin];
}
- (IBAction)browsePlugins:(id)sender {
[NSWorkspace.sharedWorkspace openURL:[NSApp applicationSupportDirectoryURL:YES]];
}
- (IBAction)addOrRemovePlugin:(id)sender {
if(sender != self.addRemovePluginsControl) {
return;
}
switch(self.addRemovePluginsControl.selectedSegment) {
case MPAddPluginSegment:
[self showAddPluginPanel];
break;
case MPRemovePluginSegment:
break;
default:
break;
}
}
- (void)showAddPluginPanel {
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
openPanel.allowedFileTypes = @[kMPPluginFileExtension];
openPanel.allowsMultipleSelection = NO;
openPanel.canChooseFiles = YES;
openPanel.canChooseDirectories = NO;
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_ADD_PLUGIN_OPEN_PANEL", "Open button in the add plugin open panel");
openPanel.message = NSLocalizedString(@"MESSAGE_ADD_PLUGIN_OPEN_PANEL", "Message in the add plugin open panel");
[openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse result) {
if(NSModalResponseOK) {
if(openPanel.URLs.count == 1) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self _addPlugin:openPanel.URLs.firstObject];
});
}
}
}];
}
- (void)_addPlugin:(NSURL *)bundleURL {
NSError *error;
if(![[MPPluginHost sharedHost] installPluginAtURL:bundleURL error:&error]) {
[NSApp presentError:error modalForWindow:self.view.window delegate:nil didPresentSelector:NULL contextInfo:NULL];
}
else {
NSAlert *alert = [[NSAlert alloc] init];
alert.alertStyle = NSAlertStyleInformational;
alert.messageText = NSLocalizedString(@"ALERT_MESSAGE_TEXT_PLUGIN_INSTALLED_SUGGEST_RESTART", "Alert message text when a plugin was successfully installed");
alert.informativeText = NSLocalizedString(@"ALERT_INFORMATIVE_TEXT_PLUGIN_INSTALLED_SUGGEST_RESTART", "ALert informative text when a plugin was sucessfully installed");
[alert addButtonWithTitle:NSLocalizedString(@"CANCEL", @"Cancel button in plugin installed, request restart alert")];
[alert addButtonWithTitle:NSLocalizedString(@"RESTART", @"Restart button in plugin installed, request restart alert")];
[alert beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode) {
if(returnCode == NSAlertSecondButtonReturn) {
[NSApp relaunchAfterDelay:3];
}
}];
}
} }
@end @end

View File

@@ -228,16 +228,16 @@ NSString *const MPToolbarItemHistory = @"TOOLBAR_HISTORY";
static NSDictionary *labelDict; static NSDictionary *labelDict;
static dispatch_once_t onceToken; static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ dispatch_once(&onceToken, ^{
labelDict = @{ MPToolbarItemLock: NSLocalizedString(@"LOCK", @""), labelDict = @{ MPToolbarItemLock: NSLocalizedString(@"LOCK", @"Toolbar item to Lock the database"),
MPToolbarItemAction: NSLocalizedString(@"ACTION", @""), MPToolbarItemAction: NSLocalizedString(@"ACTION", @"Toolbar item with action menu"),
MPToolbarItemAddEntry: NSLocalizedString(@"NEW_ENTRY", @""), MPToolbarItemAddEntry: NSLocalizedString(@"NEW_ENTRY", @"Toolbar item new entry"),
MPToolbarItemAddGroup: NSLocalizedString(@"NEW_GROUP", @""), MPToolbarItemAddGroup: NSLocalizedString(@"NEW_GROUP", @"Toolbar item new group"),
MPToolbarItemCopyPassword: NSLocalizedString(@"COPY_PASSWORD", @""), MPToolbarItemCopyPassword: NSLocalizedString(@"COPY_PASSWORD", @"Toolbar item copy password"),
MPToolbarItemCopyUsername: NSLocalizedString(@"COPY_USERNAME", @""), MPToolbarItemCopyUsername: NSLocalizedString(@"COPY_USERNAME", @"Toolbar item copy username"),
MPToolbarItemDelete: NSLocalizedString(@"DELETE", @""), MPToolbarItemDelete: NSLocalizedString(@"DELETE", @"Toolbar item delete item"),
MPToolbarItemInspector: NSLocalizedString(@"INSPECTOR", @""), MPToolbarItemInspector: NSLocalizedString(@"INSPECTOR", @"Toolbar item toggle inspector"),
MPToolbarItemSearch: NSLocalizedString(@"SEARCH", @""), MPToolbarItemSearch: NSLocalizedString(@"SEARCH", @"Search input in Toolbar "),
MPToolbarItemHistory: NSLocalizedString(@"SHOW_HISTORY", @""), MPToolbarItemHistory: NSLocalizedString(@"SHOW_HISTORY", @"Toolbar item to toggel history display"),
}; };
}); });
return labelDict[identifier]; return labelDict[identifier];
@@ -263,13 +263,13 @@ NSString *const MPToolbarItemHistory = @"TOOLBAR_HISTORY";
- (NSMenu *)_allocateSearchMenuTemplate { - (NSMenu *)_allocateSearchMenuTemplate {
NSMenu *menu = [[NSMenu alloc] init]; NSMenu *menu = [[NSMenu alloc] init];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"CLEAR_RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""]; NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"CLEAR_RECENT_SEARCHES", @"Menu to clear recent searches") action:NULL keyEquivalent:@""];
item.tag = NSSearchFieldClearRecentsMenuItemTag; item.tag = NSSearchFieldClearRecentsMenuItemTag;
[menu addItem:item]; [menu addItem:item];
[menu addItem:[NSMenuItem separatorItem]]; [menu addItem:[NSMenuItem separatorItem]];
item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""]; item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"RECENT_SEARCHES", @"Recent searches menu item") action:NULL keyEquivalent:@""];
item.tag = NSSearchFieldRecentsTitleMenuItemTag; item.tag = NSSearchFieldRecentsTitleMenuItemTag;
[menu addItem:item]; [menu addItem:item];

View File

@@ -80,6 +80,8 @@
openPanel.allowsMultipleSelection = NO; openPanel.allowsMultipleSelection = NO;
openPanel.canChooseDirectories = NO; openPanel.canChooseDirectories = NO;
openPanel.canChooseFiles = YES; openPanel.canChooseFiles = YES;
openPanel.prompt = NSLocalizedString(@"SELECT_DEFAULT_BROWSER_OPEN_PANEL_SELECT_BUTTON", "Label for the select browser button on the open panel for selecting which browser to use for opening URLs");
openPanel.message = NSLocalizedString(@"SELECT_DEFAULT_BROWSER_OPEN_PANEL_MESSAGE", "Message on the open panel for selecting which browser to use for opening URLs");
openPanel.allowedFileTypes = @[@"app"]; openPanel.allowedFileTypes = @[@"app"];
[openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSInteger result) { [openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSInteger result) {

View File

@@ -58,7 +58,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.7</string> <string>${CURRENT_PROJECT_VERSION}</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@@ -29,8 +29,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (copy, readonly) NSString *applicationName; @property (copy, readonly) NSString *applicationName;
@property (copy, readonly, nullable) NSURL *applicationSupportDirectoryURL; @property (copy, readonly, nullable) NSURL *applicationSupportDirectoryURL;
- (NSURL * _Nullable)applicationSupportDirectoryURL:(BOOL)create; - (NSURL *_Nullable)applicationSupportDirectoryURL:(BOOL)create;
- (void)relaunchAfterDelay:(CGFloat)seconds;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@@ -52,4 +52,12 @@
return nil; return nil;
} }
- (void)relaunchAfterDelay:(CGFloat)seconds {
NSTask *task = [[NSTask alloc] init];
task.launchPath = @"/bin/sh";
task.arguments = @[ @"-c", [NSString stringWithFormat:@"sleep %f; open \"%@\"", seconds, NSBundle.mainBundle.bundlePath] ];
[task launch];
[self terminate:nil];
}
@end @end

View File

@@ -26,6 +26,7 @@ FOUNDATION_EXPORT NSString *const MPErrorDomain;
typedef NS_ENUM(NSInteger, MPErrorCodes) { typedef NS_ENUM(NSInteger, MPErrorCodes) {
MPErrorNoPasswordOrKeyFile = 10000, MPErrorNoPasswordOrKeyFile = 10000,
MPErrorInvalidPlugin
}; };
@interface NSError (Messages) @interface NSError (Messages)

View File

@@ -1,18 +1,9 @@
/* (No Comment) */
"%@_COPY" = "Kopie von %@";
/* Display format for days. Should contain a long decimal placeholder! */ /* Display format for days. Should contain a long decimal placeholder! */
"%ld_DAYS" = "%ld Tage"; "%ld_DAYS" = "%ld Tage";
/* % days ago */ /* % days ago */
"%ld_DAYS_AGO" = "%vor %ld Tagen"; "%ld_DAYS_AGO" = "%vor %ld Tagen";
/* (No Comment) */
"%ld_ENTRIES" = "%ld Einträge";
/* (No Comment) */
"%ld_ENTRY" = "%ld Eintrag";
/* % Hours ago */ /* % Hours ago */
"%ld_HOURS_AGO" = "vor etwa %ld Stunden"; "%ld_HOURS_AGO" = "vor etwa %ld Stunden";
@@ -162,14 +153,13 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"DOCUMENT_AUTOTYPE_CORRUPTION_WARNING" = "Bitte Autotypekorrektur durchführen!"; "DOCUMENT_AUTOTYPE_CORRUPTION_WARNING" = "Bitte Autotypekorrektur durchführen!";
/* No comment provided by engineer. */
"DUPLICATE_ENTRIES" = "Eintrag klonen";
/* Menu item to directly diplicate an entry */ /* Menu item to directly diplicate an entry */
"DUPLICATE_ENTRY" = "Eintrag klonen"; "DUPLICATE_ENTRY" = "Eintrag duplizieren";
"DUPLICATE_ENTRIES_%ld" = "Einträge duplizieren %ld";
/* Menu item to duplicate an entry with options how to duplicate. Will present a dialog. */ /* Menu item to duplicate an entry with options how to duplicate. Will present a dialog. */
"DUPLICATE_ENTRY_WITH_OPTIONS" = "Eintrag klonen …"; "DUPLICATE_ENTRY_WITH_OPTIONS" = "Eintrag duplizieren…";
/* (No Comment) */ /* (No Comment) */
"DUPLICTE_PASSWORDS" = "Doppelte Passwörter"; "DUPLICTE_PASSWORDS" = "Doppelte Passwörter";
@@ -181,9 +171,6 @@
Menu item on the add entry context menu to edit template groups */ Menu item on the add entry context menu to edit template groups */
"EDIT_TEMPLATE_GROUP" = "Vorlagengruppe bearbeiten"; "EDIT_TEMPLATE_GROUP" = "Vorlagengruppe bearbeiten";
/* (No Comment) */
"EMAIL" = "E-Mail";
/* Empty Trash /* Empty Trash
Menu item in the database outline context menu to empyt the trash Menu item in the database outline context menu to empyt the trash
Menu item in the database outline to empty the trash Menu item in the database outline to empty the trash
@@ -236,9 +223,6 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"FILE_OPEN_ERROR" = "Fehler beim Öffnen der Datei."; "FILE_OPEN_ERROR" = "Fehler beim Öffnen der Datei.";
/* (No Comment) */
"GENERAL" = "Allgemein";
/* General Settings Label */ /* General Settings Label */
"GENERAL_SETTINGS" = "Allgemein"; "GENERAL_SETTINGS" = "Allgemein";
@@ -248,9 +232,6 @@
/* History count column title */ /* History count column title */
"HISTORY" = "Historie"; "HISTORY" = "Historie";
/* (No Comment) */
"HOMEBANKING" = "Homebanking";
/* Imports a dragged URL for a new entry */ /* Imports a dragged URL for a new entry */
"IMPORT_URL" = "URL importieren"; "IMPORT_URL" = "URL importieren";
@@ -260,9 +241,6 @@
/* Label for the integration settings tab */ /* Label for the integration settings tab */
"INTEGRATION_SETTINGS" = "Integration"; "INTEGRATION_SETTINGS" = "Integration";
/* (No Comment) */
"INTERNET" = "Internet";
/* Just now */ /* Just now */
"JUST_NOW" = "Gerade eben"; "JUST_NOW" = "Gerade eben";
@@ -293,12 +271,6 @@
/* Action title for moving a group via drag and drop */ /* Action title for moving a group via drag and drop */
"MOVE_GROUP" = "Gruppe bewegem"; "MOVE_GROUP" = "Gruppe bewegem";
/* (No Comment) */
"NAME" = "Name";
/* (No Comment) */
"NETWORK" = "Netzwerk";
/* Name for a newly created Database */ /* Name for a newly created Database */
"NEW_DATABASE" = "Datenbank"; "NEW_DATABASE" = "Datenbank";
@@ -444,24 +416,6 @@
/* Set the selection as default file change strategy! */ /* Set the selection as default file change strategy! */
"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Die gewählte Strategie immer verwenden. Sie können die Strategie jederzeit in den Einstellungen anpassen."; "SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Die gewählte Strategie immer verwenden. Sie können die Strategie jederzeit in den Einstellungen anpassen.";
/* (No Comment) */
"SET_NAME" = "Name ändern";
/* (No Comment) */
"SET_NOTES" = "Notizen ändern";
/* (No Comment) */
"SET_PASSWORD" = "Passwort ändern";
/* (No Comment) */
"SET_TITLE" = "Titel ändern";
/* (No Comment) */
"SET_URL" = "Adresse ändern";
/* (No Comment) */
"SET_USERNAME" = "Benutzername ändern";
/* (No Comment) */ /* (No Comment) */
"SHORT_FILE_CHANGE_STRATEGY_ASK" = "Nachfragen"; "SHORT_FILE_CHANGE_STRATEGY_ASK" = "Nachfragen";

View File

@@ -1,12 +1,40 @@
{ <?xml version="1.0" encoding="UTF-8"?>
"EVERY_%ld_DAYS" = { <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
NSStringLocalizedFormatKey = "%#@variable@"; <plist version="1.0">
variable = { <dict>
NSStringFormatSpecTypeKey = NSStringPluralRuleType; <key>DUPLICATE_ENTRIES_%ld</key>
NSStringFormatValueTypeKey = ld; <dict>
one = "jeden Tag"; <key>NSStringLocalizedFormatKey</key>
other = "alle %ld Tage"; <string>%#@entries@</string>
zero = "nach jedem Entsperren"; <key>entries</key>
}; <dict>
}; <key>NSStringFormatSpecTypeKey</key>
} <string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>Eintrag duplizieren</string>
<key>other</key>
<string>Einträge duplizieren</string>
</dict>
</dict>
<key>EVERY_%ld_DAYS</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@days@</string>
<key>days</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>jeden Tag</string>
<key>other</key>
<string>alle %ld Tage</string>
<key>zero</key>
<string>nach jedem Entsperren</string>
</dict>
</dict>
</dict>
</plist>

View File

@@ -1,5 +1,5 @@
/* Class = "NSTextFieldCell"; title = "If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart."; ObjectID = "2bX-8S-9XM"; */ /* Class = "NSTextFieldCell"; title = "If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart."; ObjectID = "2bX-8S-9XM"; */
"2bX-8S-9XM.title" = "Wenn diese Einstellung aktiv ist, werden nur korrekt signierte Plugins geladen. Bitte beachten Sie, dass Plugins vollständigen Zugriff auf Ihre Daten habe. Änderungen werden erst beim Neustart aktiv!"; "2bX-8S-9XM.title" = "Wenn diese Einstellung aktiv ist, werden nur korrekt signierte Plugins geladen. Bitte beachten Sie, dass Plugins vollständigen Zugriff auf Ihre Daten haben. Änderungen werden erst beim Neustart aktiv!";
/* Class = "NSButtonCell"; title = "Load unsecure Plugins"; ObjectID = "C4B-6z-ZqX"; */ /* Class = "NSButtonCell"; title = "Load unsecure Plugins"; ObjectID = "C4B-6z-ZqX"; */
"C4B-6z-ZqX.title" = "Unsichere Plugins laden"; "C4B-6z-ZqX.title" = "Unsichere Plugins laden";

View File

@@ -0,0 +1,9 @@
/* Class = "NSTextFieldCell"; title = "Autotype Sequence"; ObjectID = "8ny-Qk-Jvo"; */
"8ny-Qk-Jvo.title" = "Autotype Sequence";
/* Class = "NSButtonCell"; title = "Set Autotype Sequence"; ObjectID = "aOD-Ih-Sft"; */
"aOD-Ih-Sft.title" = "Set Autotype Sequence";
/* Class = "NSTextFieldCell"; title = "Available Commands and Placeholders"; ObjectID = "lug-97-H9D"; */
"lug-97-H9D.title" = "Available Commands and Placeholders";

View File

@@ -0,0 +1,15 @@
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "60p-7v-Nje"; */
"60p-7v-Nje.title" = "Cancel";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "PKW-gr-yqN"; */
"PKW-gr-yqN.title" = "Text Cell";
/* Class = "NSTextFieldCell"; title = "Content"; ObjectID = "TN3-3a-LaA"; */
"TN3-3a-LaA.title" = "Content";
/* Class = "NSTextFieldCell"; title = "There are multiple matches for the current window. Please select which match should be used."; ObjectID = "gcf-gb-ZsF"; */
"gcf-gb-ZsF.title" = "There are multiple matches for the current window. Please select which match should be used.";
/* Class = "NSButtonCell"; title = "Perform Autotype"; ObjectID = "w7H-hx-CUF"; */
"w7H-hx-CUF.title" = "Perform Autotype";

View File

@@ -1,7 +1,18 @@
/* Class = "NSWindow"; title = "Window"; ObjectID = "1"; */ /* Class = "NSWindow"; title = "Window"; ObjectID = "1"; */
"1.title" = "Window"; "1.title" = "Window";
/* Class = "NSTextFieldCell"; title = "Threads"; ObjectID = "2QI-ne-N5d"; */
"2QI-ne-N5d.title" = "Threads";
/* Class = "NSTextFieldCell"; title = "Iterations"; ObjectID = "2ZA-Gc-JdZ"; */
"2ZA-Gc-JdZ.title" = "Iterations";
/* Class = "NSTextFieldCell"; title = "Enforce key change"; ObjectID = "5QH-N1-FHK"; */
"5QH-N1-FHK.title" = "Enforce key change";
/* Class = "NSTabViewItem"; label = "Argon2"; ObjectID = "6qB-sH-9FI"; */
"6qB-sH-9FI.label" = "Argon2";
/* Class = "NSTextFieldCell"; title = "Database name:"; ObjectID = "190"; */ /* Class = "NSTextFieldCell"; title = "Database name:"; ObjectID = "190"; */
"190.title" = "Database name:"; "190.title" = "Database name:";
@@ -62,18 +73,6 @@
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1740"; */ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1740"; */
"1740.title" = "OtherViews"; "1740.title" = "OtherViews";
/* Class = "NSTextFieldCell"; title = "Threads"; ObjectID = "2QI-ne-N5d"; */
"2QI-ne-N5d.title" = "Threads";
/* Class = "NSTextFieldCell"; title = "Iterations"; ObjectID = "2ZA-Gc-JdZ"; */
"2ZA-Gc-JdZ.title" = "Iterations";
/* Class = "NSTextFieldCell"; title = "Enforce key change"; ObjectID = "5QH-N1-FHK"; */
"5QH-N1-FHK.title" = "Enforce key change";
/* Class = "NSTabViewItem"; label = "Argon2"; ObjectID = "6qB-sH-9FI"; */
"6qB-sH-9FI.label" = "Argon2";
/* Class = "NSButtonCell"; title = "Recommend key change"; ObjectID = "CtU-Eq-dgy"; */ /* Class = "NSButtonCell"; title = "Recommend key change"; ObjectID = "CtU-Eq-dgy"; */
"CtU-Eq-dgy.title" = "Recommend key change"; "CtU-Eq-dgy.title" = "Recommend key change";
@@ -109,3 +108,4 @@
/* Class = "NSButtonCell"; title = "Force key change"; ObjectID = "z6u-YT-7LE"; */ /* Class = "NSButtonCell"; title = "Force key change"; ObjectID = "z6u-YT-7LE"; */
"z6u-YT-7LE.title" = "Force key change"; "z6u-YT-7LE.title" = "Force key change";

View File

@@ -1,18 +1,9 @@
/* (No Comment) */
"%@_COPY" = "%@ Copy";
/* Display format for days. Should contain a long decimal placeholder! */ /* Display format for days. Should contain a long decimal placeholder! */
"%ld_DAYS" = "%ld_DAYS"; "%ld_DAYS" = "%ld days";
/* % days ago */ /* % days ago */
"%ld_DAYS_AGO" = "%ld days ago"; "%ld_DAYS_AGO" = "%ld days ago";
/* (No Comment) */
"%ld_ENTRIES" = "%ld Entries";
/* (No Comment) */
"%ld_ENTRY" = "%ld Entry";
/* % Hours ago */ /* % Hours ago */
"%ld_HOURS_AGO" = "about %ld hours ago"; "%ld_HOURS_AGO" = "about %ld hours ago";
@@ -26,7 +17,7 @@
"90_DAYS" = "in 90 days"; "90_DAYS" = "in 90 days";
/* Button label to abort a merge on a file with changed master key! */ /* Button label to abort a merge on a file with changed master key! */
"ABORT_MERGE_KEEP_MINE" = "ABORT_MERGE_KEEP_MINE"; "ABORT_MERGE_KEEP_MINE" = "Abort Merge. Keep Mine.";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"ACTION" = "Action"; "ACTION" = "Action";
@@ -34,13 +25,20 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"ADD_TREMPLATE_ENTRY" = "Create Template Entry"; "ADD_TREMPLATE_ENTRY" = "Create Template Entry";
/* Informartive text in alert when adding entry requires KDBX format */ /* ALert informative text when a plugin was sucessfully installed */
"ALERT_KDB_UNSUPPORTED_ADD_ENTRY_INFORMATIVE" = "ALERT_KDB_UNSUPPORTED_ADD_ENTRY_INFORMATIVE"; "ALERT_INFORMATIVE_TEXT_PLUGIN_INSTALLED_SUGGEST_RESTART" = "Plugins can only be loaded at start up. To activate the installed pluing, please restart MacPass.";
/* Message in alert to inform the user that adding an entry requires KDBX format */ /* (No Comment) */
"ALERT_KDB_UNSUPPORTED_ADD_ENTRY_MESSAGE" = "ALERT_KDB_UNSUPPORTED_ADD_ENTRY_MESSAGE"; "ALERT_KDB_UNSUPPORTED_ADD_ENTRY_INFORMATIVE" = "The KDB format does not support entries inside this group. The entry will be moved when the file is saved.";
/* No comment provided by engineer. */ /* (No Comment) */
"ALERT_KDB_UNSUPPORTED_ADD_ENTRY_MESSAGE" = "Adding entries not supported";
/* Alert message text when a plugin was successfully installed */
"ALERT_MESSAGE_TEXT_PLUGIN_INSTALLED_SUGGEST_RESTART" = "Sucessfully installed Plugin!";
/* Attachments column title (shows counts)
Menu item to toggle display of attachment count column in entry table */
"ATTACHMENTS" = "Attachments"; "ATTACHMENTS" = "Attachments";
/* Menu item for automatic trash creation */ /* Menu item for automatic trash creation */
@@ -64,10 +62,12 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"AUTOTYPE_YES" = "Enable Autotype"; "AUTOTYPE_YES" = "Enable Autotype";
/* No comment provided by engineer. */ /* Sucessfully merged external changes */
"AUTO_MERGE_NOTIFICATION_TEXT" = "AUTO_MERGE_NOTIFICATION_TEXT"; "AUTO_MERGE_NOTIFICATION_TEXT" = "Auto merge successfull!";
/* Cancel */ /* Cancel
Cancel button in plugin installed, request restart alert
Cancel button to postpone password change */
"CANCEL" = "Cancel"; "CANCEL" = "Cancel";
/* Menu item in the database outline context menu to change the database name */ /* Menu item in the database outline context menu to change the database name */
@@ -76,7 +76,8 @@
/* (No Comment) */ /* (No Comment) */
"CHANGE_FORMAT" = "Change File Format to KDBX"; "CHANGE_FORMAT" = "Change File Format to KDBX";
/* No comment provided by engineer. */ /* Button to show the password change dialog
Single button to show the password change dialog */
"CHANGE_PASSWORD_WITH_DOTS" = "Change Password…"; "CHANGE_PASSWORD_WITH_DOTS" = "Change Password…";
/* Menu item in the database outline context menu to change the trash group */ /* Menu item in the database outline context menu to change the trash group */
@@ -86,7 +87,7 @@
"CLEARING_PASTEBOARD" = "Cleared"; "CLEARING_PASTEBOARD" = "Cleared";
/* Clear Autotype Button */ /* Clear Autotype Button */
"CLEAR_AUTOTYPE" = "CLEAR_AUTOTYPE"; "CLEAR_AUTOTYPE" = "Clear Autotype";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"CLEAR_RECENT_SEARCHES" = "Clear recent searches"; "CLEAR_RECENT_SEARCHES" = "Clear recent searches";
@@ -107,34 +108,34 @@
"COPY_CUSTOM_FIELDS" = "Copy Custom Fields"; "COPY_CUSTOM_FIELDS" = "Copy Custom Fields";
/* Context menu sub-menu to copy custom fields to clipboard */ /* Context menu sub-menu to copy custom fields to clipboard */
"COPY_CUSTOM_FIELDS_MENU" = "COPY_CUSTOM_FIELDS_MENU"; "COPY_CUSTOM_FIELDS_MENU" = "Copy Custom Field…";
/* No comment provided by engineer. */ /* Action title for copying an entry via drag and drop */
"COPY_ENTRY" = "Copy Entry"; "COPY_ENTRY" = "Copy Entry";
/* Mask for title to copy field value */ /* Mask for title to copy field value */
"COPY_FIELD_%@" = "Copy %@"; "COPY_FIELD_%@" = "Copy %@";
/* No comment provided by engineer. */ /* Action title for copying a group via drag and drop */
"COPY_GROUP" = "Copy Group"; "COPY_GROUP" = "Copy Group";
/* No comment provided by engineer. */ /* Menu item to copy the password of an entry */
"COPY_PASSWORD" = "Copy Password"; "COPY_PASSWORD" = "Copy Password";
/* No comment provided by engineer. */ /* Menu item to copy the URL of an entry */
"COPY_URL" = "Copy URL"; "COPY_URL" = "Copy URL";
/* No comment provided by engineer. */ /* Menu item to copy the username of an entry */
"COPY_USERNAME" = "Copy Username"; "COPY_USERNAME" = "Copy Username";
/* Created at template string. %@ is replaced by locaized date and time */ /* (No Comment) */
"CREATED_AT_%@" = "Created: %@"; "CREATED_AT_%@" = "Created: %@";
/* Curstom attribute reference item */ /* Curstom attribute reference item */
"CUSTOM_ATTRIBUTE" = "CUSTOM_ATTRIBUTE"; "CUSTOM_ATTRIBUTE" = "Custom Attribute";
/* Title for menu for custom search filters */ /* Title for menu for custom search filters */
"CUSTOM_SEARCH_FILTER_MENU" = "CUSTOM_SEARCH_FILTER_MENU"; "CUSTOM_SEARCH_FILTER_MENU" = "Custom Search Filter…";
/* Default name database */ /* Default name database */
"DATABASE" = "Database"; "DATABASE" = "Database";
@@ -154,10 +155,13 @@
/* Title for a newly created group */ /* Title for a newly created group */
"DEFAULT_GROUP_NAME" = "New Group"; "DEFAULT_GROUP_NAME" = "New Group";
/* No comment provided by engineer. */ /* Default window title for a new window association */
"DEFAULT_WINDOW_TITLE" = "Window Title"; "DEFAULT_WINDOW_TITLE" = "Window Title";
/* Menu item in the database outline context menu to delete the node from the trash */ /* Menu item in the database outline context menu to delete the node from the trash
Menu item to delete an entry
Menu item to delete the selected attached file
Menu item to delete the selected custom icon */
"DELETE" = "Delete"; "DELETE" = "Delete";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
@@ -167,21 +171,21 @@
"DELETE_GROUP" = "Delete Group"; "DELETE_GROUP" = "Delete Group";
/* Empty Trash */ /* Empty Trash */
"DELETE_TRASHED_ENTRY" = "DELETE_TRASHED_ENTRY"; "DELETE_TRASHED_ENTRY" = "Delete Trashed Entry";
/* Empty Trash */ /* Empty Trash */
"DELETE_TRASHED_GROUP" = "DELETE_TRASHED_GROUP"; "DELETE_TRASHED_GROUP" = "Delete Trashed Group";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"DOCUMENT_AUTOTYPE_CORRUPTION_WARNING" = "Please run Fix Autotype..."; "DOCUMENT_AUTOTYPE_CORRUPTION_WARNING" = "Please run Fix Autotype...";
/* No comment provided by engineer. */ /* Action name for duplicating entries */
"DUPLICATE_ENTRIES" = "DUPLICATE_ENTRIES"; "DUPLICATE_ENTRIES_%ld" = "Duplicate Entries %ld";
/* No comment provided by engineer. */ /* Menu item to directly diplicate an entry */
"DUPLICATE_ENTRY" = "Duplicate Entry"; "DUPLICATE_ENTRY" = "Duplicate Entry";
/* No comment provided by engineer. */ /* Menu item to duplicate an entry with options how to duplicate. Will present a dialog. */
"DUPLICATE_ENTRY_WITH_OPTIONS" = "Duplicate Entry…"; "DUPLICATE_ENTRY_WITH_OPTIONS" = "Duplicate Entry…";
/* (No Comment) */ /* (No Comment) */
@@ -194,23 +198,24 @@
Menu item on the add entry context menu to edit template groups */ Menu item on the add entry context menu to edit template groups */
"EDIT_TEMPLATE_GROUP" = "Edit Entry Template Group"; "EDIT_TEMPLATE_GROUP" = "Edit Entry Template Group";
/* (No Comment) */
"EMAIL" = "EMail";
/* Empty Trash /* Empty Trash
Menu item in the database outline context menu to empyt the trash Menu item in the database outline context menu to empyt the trash
Menu item in the database outline to empty the trash */ Menu item in the database outline to empty the trash
Menu item to empty the trash */
"EMPTY_TRASH" = "Empty Trash"; "EMPTY_TRASH" = "Empty Trash";
/* No comment provided by engineer. */ /* Informative text for the enforce password change alert */
"ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "You will be unable to save until the password and/or keyfile has been changed."; "ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "You will be unable to save until the password and/or keyfile has been changed.";
/* No comment provided by engineer. */ /* Message text for the enforce password change alert */
"ENFORCE_PASSWORD_CHANGE_ALERT_TITLE" = "The database password expired!"; "ENFORCE_PASSWORD_CHANGE_ALERT_TITLE" = "The database password expired!";
/* Keyfile not valid */ /* Keyfile not valid */
"ERROR_INVALID_KEYFILE" = "Keyfile is invalid!"; "ERROR_INVALID_KEYFILE" = "Keyfile is invalid!";
/* Error description given when adding an invalid plugin */
"ERROR_INVALID_PLUGIN" = "Invalid plugin";
/* Passwords do not match */ /* Passwords do not match */
"ERROR_PASSWORD_MISSMATCH" = "Passwords do not match!"; "ERROR_PASSWORD_MISSMATCH" = "Passwords do not match!";
@@ -218,13 +223,13 @@
"ERROR_PASSWORD_MISSMATCH_INVALID_KEYFILE" = "Passwords do not match and keyfile is invalid!"; "ERROR_PASSWORD_MISSMATCH_INVALID_KEYFILE" = "Passwords do not match and keyfile is invalid!";
/* Recommend/Enforce key change intervall format */ /* Recommend/Enforce key change intervall format */
"EVERY_%ld_DAYS" = "EVERY_%ld_DAYS"; "EVERY_%ld_DAYS" = "Every %ld days";
/* Format to returen the date an item expires. Includes %@ placehoder for date */ /* Format to returen the date an item expires. Includes %@ placehoder for date */
"EXPIRES_AT_DATE_%@" = "Expires: %@"; "EXPIRES_AT_DATE_%@" = "Expires: %@";
/* The master key was changed by an extrenal programm! */ /* The master key was changed by an extrenal programm! */
"EXTERN_CHANGE_OF_MASTERKEY" = "EXTERN_CHANGE_OF_MASTERKEY"; "EXTERN_CHANGE_OF_MASTERKEY" = "Master key was changed by another programm";
/* Informative text displayed when the file was change from another application */ /* Informative text displayed when the file was change from another application */
"FILE_CHANGED_BY_OTHERS_INFO_TEXT" = "The file loaded is not the same as the on on disk. How do you want to move on?"; "FILE_CHANGED_BY_OTHERS_INFO_TEXT" = "The file loaded is not the same as the on on disk. How do you want to move on?";
@@ -232,38 +237,34 @@
/* Message displayed when an open file was changed from another application */ /* Message displayed when an open file was changed from another application */
"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT" = "The database file was modified!"; "FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT" = "The database file was modified!";
/* No comment provided by engineer. */ /* External file change strategy option: ask what to do */
"FILE_CHANGE_STRATEGY_ASK" = "Ask"; "FILE_CHANGE_STRATEGY_ASK" = "Ask";
/* No comment provided by engineer. */ /* External file change strategy option: Keep local file an ignore external changes */
"FILE_CHANGE_STRATEGY_KEEP_MINE" = "Keep My Version and Ignore Other Changes"; "FILE_CHANGE_STRATEGY_KEEP_MINE" = "Keep My Version and Ignore Other Changes";
/* Merge changes into file! */ /* External file change strategy option: Merge external changes into local file.
Merge changes into file! */
"FILE_CHANGE_STRATEGY_MERGE" = "Merge Changes"; "FILE_CHANGE_STRATEGY_MERGE" = "Merge Changes";
/* No comment provided by engineer. */ /* External file change strategy option: Use the changed file and discard local changes */
"FILE_CHANGE_STRATEGY_USE_OTHER" = "Load Changed Version and Discard Mine"; "FILE_CHANGE_STRATEGY_USE_OTHER" = "Load Changed Version and Discard Mine";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"FILE_OPEN_ERROR" = "Error opening file."; "FILE_OPEN_ERROR" = "Error opening file.";
/* (No Comment) */
"GENERAL" = "General";
/* General Settings Label */ /* General Settings Label */
"GENERAL_SETTINGS" = "General"; "GENERAL_SETTINGS" = "General";
/* No comment provided by engineer. */ /* Group column title */
"GROUP" = "Group"; "GROUP" = "Group";
/* No comment provided by engineer. */ /* History count column title
"HISTORY" = "HISTORY"; Menu item to toggle display of history count column in entry table */
"HISTORY" = "History";
/* (No Comment) */
"HOMEBANKING" = "Homebanking";
/* Imports a dragged URL for a new entry */ /* Imports a dragged URL for a new entry */
"IMPORT_URL" = "IMPORT_URL"; "IMPORT_URL" = "Import URL";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"INSPECTOR" = "Inspector"; "INSPECTOR" = "Inspector";
@@ -271,9 +272,6 @@
/* Label for the integration settings tab */ /* Label for the integration settings tab */
"INTEGRATION_SETTINGS" = "Integration"; "INTEGRATION_SETTINGS" = "Integration";
/* (No Comment) */
"INTERNET" = "Internet";
/* Just now */ /* Just now */
"JUST_NOW" = "Just now"; "JUST_NOW" = "Just now";
@@ -292,40 +290,44 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"LOCK" = "Lock"; "LOCK" = "Lock";
/* Modifed at template string. %@ is replaced by locaized date and time */ /* Message in the open panel to add attachments to an entry */
"MODIFED_AT_%@" = "Modified: %@"; "MESSAGE_ADD_ATTACHMENT_OPEN_PANEL" = "Select the file to attach";
/* No comment provided by engineer. */ /* Message in the add plugin open panel */
"MESSAGE_ADD_PLUGIN_OPEN_PANEL" = "Select the plugin to install";
/* Message in the open panel to import an XML file */
"MESSAGE_XML_OPEN_PANEL" = "Select the XML file to import";
/* Menu item to toggle display of modified date column in entry table
Modification date column title */
"MODIFIED" = "Modified"; "MODIFIED" = "Modified";
/* No comment provided by engineer. */ /* Action title for moving an entry via drag and drop */
"MOVE_ENTRY" = "Move Entry"; "MOVE_ENTRY" = "Move Entry";
/* No comment provided by engineer. */ /* Action title for moving a group via drag and drop */
"MOVE_GROUP" = "Move Group"; "MOVE_GROUP" = "Move Group";
/* (No Comment) */
"NAME" = "Name";
/* (No Comment) */
"NETWORK" = "Network";
/* Name for a newly created Database */ /* Name for a newly created Database */
"NEW_DATABASE" = "Database"; "NEW_DATABASE" = "Database";
/* No comment provided by engineer. */ /* Menu item to create a new entry */
"NEW_ENTRY" = "New Entry"; "NEW_ENTRY" = "New Entry";
/* Submenu to add an entry via template */ /* Submenu to add an entry via template */
"NEW_ENTRY_WITH_TEMPLATE_%@" = "Create Entry with Template %@"; "NEW_ENTRY_WITH_TEMPLATE_%@" = "Create Entry with Template %@";
/* No comment provided by engineer. */ /* Menu item to create a new group */
"NEW_GROUP" = "New Group"; "NEW_GROUP" = "New Group";
/* No comment provided by engineer. */ /* Placeholder text for input fields if no entry or group is selected */
"NONE" = "None"; "NONE" = "None";
/* Notes reference item */ /* Displayed name when notes or part of notes was copied
Menu item to toggle display of notes column in entry table
Notes column title
Notes reference item */
"NOTES" = "Notes"; "NOTES" = "Notes";
/* Expiration date format, when item does not expire */ /* Expiration date format, when item does not expire */
@@ -352,16 +354,27 @@
/* preset to expire after one year from now */ /* preset to expire after one year from now */
"ONE_YEAR" = "in one year"; "ONE_YEAR" = "in one year";
/* No comment provided by engineer. */ /* Open button in the open panel to add attachments to an entry */
"OPEN_BUTTON_ADD_ATTACHMENT_OPEN_PANEL" = "Attach";
/* Open button in the add plugin open panel */
"OPEN_BUTTON_ADD_PLUGIN_OPEN_PANEL" = "Install";
/* Open button in the open panel to import an XML file */
"OPEN_BUTTON_IMPORT_XML_OPEN_PANEL" = "Import";
/* Menu item to open the URL with the default application */
"OPEN_URL" = "Open URL"; "OPEN_URL" = "Open URL";
/* Select Browser */ /* Select Browser */
"OTHER_BROWSER" = "Select Browser…"; "OTHER_BROWSER" = "Select Browser…";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"OUTPUT_VALUE" = "OUTPUT_VALUE"; "OUTPUT_VALUE" = "Output Value";
/* Password reference item */ /* Menu item to toggle display of password column in entry table
Password column title
Password reference item */
"PASSWORD" = "Password"; "PASSWORD" = "Password";
/* Button to reset the password defaults for a single entry */ /* Button to reset the password defaults for a single entry */
@@ -370,55 +383,62 @@
/* Button to set the defaults of the password generator */ /* Button to set the defaults of the password generator */
"PASSWORD_GENERATOR_SET_DEFAULTS" = "Set Defaults"; "PASSWORD_GENERATOR_SET_DEFAULTS" = "Set Defaults";
/* Placeholder in the unlock-password input field if password is enabled */ /* Placeholder for the password field to aks for password
Placeholder in the unlock-password input field if password is enabled */
"PASSWORD_INPUT_ENTER_PASSWORD" = "Enter Password"; "PASSWORD_INPUT_ENTER_PASSWORD" = "Enter Password";
/* Placeholder in the unlock-password input field if password is disabled */ /* Placeholder for the password input field if passwords are disabled
Placeholder for the repeat password input if passwords are disabled
Placeholder in the unlock-password input field if password is disabled */
"PASSWORD_INPUT_NO_PASSWORD" = "No Password"; "PASSWORD_INPUT_NO_PASSWORD" = "No Password";
/* No comment provided by engineer. */ /* Placeholder for the repeat password field to aks for the repeated password */
"PASSWORD_INPUT_REPEAT_PASSWORD" = "Repeat Password"; "PASSWORD_INPUT_REPEAT_PASSWORD" = "Repeat Password";
/* No comment provided by engineer. */ /* Menu item to perform autotype with the selected entry */
"PERFORM_AUTOTYPE_FOR_ENTRY" = "Perform Autotype"; "PERFORM_AUTOTYPE_FOR_ENTRY" = "Perform Autotype";
/* Label for plugin settings tab */ /* Label for plugin settings tab */
"PLUGIN_SETTINGS" = "Plugins"; "PLUGIN_SETTINGS" = "Plugins";
/* No comment provided by engineer. */ /* Menu item to preview the selected attached file. */
"PREVIEW" = "Preview"; "PREVIEW" = "Preview";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"RECENT_SEARCHES" = "Recent searches"; "RECENT_SEARCHES" = "Recent searches";
/* No comment provided by engineer. */ /* Informative text for the recommend password change alert */
"RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "It is recommended to change the password and/or keyfile."; "RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "It is recommended to change the password and/or keyfile.";
/* No comment provided by engineer. */ /* Message text for the recommend password change alert */
"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE" = "Please change the database password!"; "RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE" = "Please change the database password!";
/* Action to restore and Entry to a previous state of it's history */ /* Restart button in plugin installed, request restart alert */
"RESTORE_HISTORY_ENTRY" = "RESTORE_HISTORY_ENTRY"; "RESTART" = "Restart";
/* No comment provided by engineer. */ /* Action to restore and Entry to a previous state of it's history */
"RESTORE_HISTORY_ENTRY" = "Restore History Entry";
/* Menu item to save the selected attached file.
Save file menu item title when save will just save the file */
"SAVE" = "Save"; "SAVE" = "Save";
/* No comment provided by engineer. */ /* Button title to save the generated key file */
"SAVE_KEYFILE" = "Save Keyfile"; "SAVE_KEYFILE" = "Save Keyfile";
/* (No Comment) */ /* (No Comment) */
"SAVE_LOSSY" = "Save and lose data"; "SAVE_LOSSY" = "Save and lose data";
/* No comment provided by engineer. */ /* Save file menu item title when save will prompt for a location to save or ask for a password/key */
"SAVE_WITH_DOTS" = "Save…"; "SAVE_WITH_DOTS" = "Save…";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"SEARCH" = "Search"; "SEARCH" = "Search";
/* No comment provided by engineer. */ /* Search option: Find duplicate passwords */
"SEARCH_DUPLICATE_PASSWORDS" = "Duplicate Passwords"; "SEARCH_DUPLICATE_PASSWORDS" = "Duplicate Passwords";
/* No comment provided by engineer. */ /* Search option: Find expired entries */
"SEARCH_EXPIRED_ENTRIES" = "Expired"; "SEARCH_EXPIRED_ENTRIES" = "Expired";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
@@ -428,63 +448,50 @@
"SEARCH_NO" = "Exclude from Search"; "SEARCH_NO" = "Exclude from Search";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"SEARCH_VALUE" = ""; "SEARCH_VALUE" = "Search Value";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"SEARCH_YES" = "Include in Search"; "SEARCH_YES" = "Include in Search";
/* (No Comment) */ /* (No Comment) */
"SELECT_AUTOTYPE_CANDIDATE" = "Select candidate!"; "SELECT_AUTOTYPE_CANDIDATE" = "Select Candidate!";
/* Menu item title for the expiry preset selection menu in the date picker */ /* Menu item title for the expiry preset selection menu in the date picker */
"SELECT_DATE_PRESET" = "Use preset…"; "SELECT_DATE_PRESET" = "Use preset…";
/* Message for the dialog to open a file for merge */ /* Message on the open panel for selecting which browser to use for opening URLs */
"SELECT_FILE_TO_MERGE" = ""; "SELECT_DEFAULT_BROWSER_OPEN_PANEL_MESSAGE" = "Select the Browser to open URL with.";
/* No comment provided by engineer. */ /* Label for the select browser button on the open panel for selecting which browser to use for opening URLs */
"SELECT_DEFAULT_BROWSER_OPEN_PANEL_SELECT_BUTTON" = "Choose";
/* Message for the dialog to open a file for merge */
"SELECT_FILE_TO_MERGE" = "Select file to merge";
/* Menu displayed as popup selection for search options */
"SELECT_FILTER_WITH_DOTS" = "Select…"; "SELECT_FILTER_WITH_DOTS" = "Select…";
/* Set the selection as default file change strategy! */ /* Set the selection as default file change strategy! */
"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use this method as default. You can change this at any time in the preferences."; "SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use this method as default. You can change this at any time in the preferences.";
/* (No Comment) */
"SET_NAME" = "Edit Name";
/* (No Comment) */
"SET_NOTES" = "Edit Notes";
/* (No Comment) */
"SET_PASSWORD" = "Edit Password";
/* (No Comment) */
"SET_TITLE" = "Edit Title";
/* (No Comment) */
"SET_URL" = "Edit URL";
/* (No Comment) */
"SET_USERNAME" = "Edit Username";
/* (No Comment) */ /* (No Comment) */
"SHORT_FILE_CHANGE_STRATEGY_ASK" = "Ask"; "SHORT_FILE_CHANGE_STRATEGY_ASK" = "Ask";
/* No comment provided by engineer. */ /* Menu item to show the history of the selected entry */
"SHOW_HISTORY" = "Show History"; "SHOW_HISTORY" = "Show History";
/* Menu item to show the reference builder in a text view's context menu */ /* Menu item to show the reference builder in a text view's context menu */
"SHOW_REFERENCE_BUILDER" = "Show Reference Builder"; "SHOW_REFERENCE_BUILDER" = "Show Reference Builder";
/* Displayed name when title field was copied /* Displayed name when title field was copied
Menu item to toggle display of title column in entry table
Title column title
Title reference item */ Title reference item */
"TITLE" = "Title"; "TITLE" = "Title";
/* preset to expire tomorrow */ /* preset to expire tomorrow */
"TOMORROW" = "Tomorrow"; "TOMORROW" = "Tomorrow";
/* (No Comment) */
"TRASH" = "Trash";
/* Move Entry to Trash */ /* Move Entry to Trash */
"TRASH_ENTRY" = "Trash Entry"; "TRASH_ENTRY" = "Trash Entry";
@@ -492,18 +499,23 @@
"TRASH_GROUP" = "Trash Group"; "TRASH_GROUP" = "Trash Group";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"UNKNOWN_FILE_VERSION" = ""; "UNKNOWN_FILE_VERSION" = "Unknown File Version";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"UNKNOWN_TOOLBAR_ITEM" = ""; "UNKNOWN_TOOLBAR_ITEM" = "Unknown Toolbar Item";
/* Update Settings Label */ /* Update Settings Label */
"UPDATE_SETTINGS" = "Updates"; "UPDATE_SETTINGS" = "Updates";
/* URL reference item */ /* Menu item to toggle display of url column in entry table
Submenu with options what to do with the URL of an entry
Url column title
URL reference item */
"URL" = "URL"; "URL" = "URL";
/* Username reference item */ /* Menu item to toggle display of username column in entry table
Username column title
Username reference item */
"USERNAME" = "Username"; "USERNAME" = "Username";
/* Displayed name when uuid field was copied /* Displayed name when uuid field was copied
@@ -517,15 +529,15 @@
"WARNING_NO_PASSWORD_OR_KEYFILE" = "No password or keyfile supplied!"; "WARNING_NO_PASSWORD_OR_KEYFILE" = "No password or keyfile supplied!";
/* Informative Text displayed when clearing the Trash */ /* Informative Text displayed when clearing the Trash */
"WARNING_ON_DELETE_TRASHED_NODE_DESCRIPTION" = ""; "WARNING_ON_DELETE_TRASHED_NODE_DESCRIPTION" = "The Trashed item(s) will be deleted!";
/* No comment provided by engineer. */ /* Message text for the alert displayed when deleting a node */
"WARNING_ON_DELETE_TRASHED_NODE_TITLE" = ""; "WARNING_ON_DELETE_TRASHED_NODE_TITLE" = "Deleting Trashed Item";
/* Informative Text displayed when clearing the Trash */ /* Informative Text displayed when clearing the Trash */
"WARNING_ON_EMPTY_TRASH_DESCRIPTION" = "Emptying the Trash is not undoable."; "WARNING_ON_EMPTY_TRASH_DESCRIPTION" = "Emptying the Trash is not undoable.";
/* No comment provided by engineer. */ /* Message text for the alert displayed when clearing the Trash */
"WARNING_ON_EMPTY_TRASH_TITLE" = "Empty Trash?"; "WARNING_ON_EMPTY_TRASH_TITLE" = "Empty Trash?";
/* (No Comment) */ /* (No Comment) */

View File

@@ -1,7 +1,17 @@
{ {
"DUPLICATE_ENTRIES_%ld" = {
NSStringLocalizedFormatKey = "%#@entries@";
entries = {
NSStringFormatSpecTypeKey = NSStringPluralRuleType;
NSStringFormatValueTypeKey = ld;
one = "Duplicate Entry";
other = "Duplicate Entries";
zero = "Duplicate Entries";
};
};
"EVERY_%ld_DAYS" = { "EVERY_%ld_DAYS" = {
NSStringLocalizedFormatKey = "%#@variable@"; NSStringLocalizedFormatKey = "%#@days@";
variable = { days = {
NSStringFormatSpecTypeKey = NSStringPluralRuleType; NSStringFormatSpecTypeKey = NSStringPluralRuleType;
NSStringFormatValueTypeKey = ld; NSStringFormatValueTypeKey = ld;
one = "every day"; one = "every day";

View File

@@ -10,6 +10,9 @@
/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "fug-79-n9g"; */ /* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "fug-79-n9g"; */
"fug-79-n9g.title" = "Table View Cell"; "fug-79-n9g.title" = "Table View Cell";
/* Class = "NSButtonCell"; title = "Browse Plugins…"; ObjectID = "sqO-8H-n1y"; */
"sqO-8H-n1y.title" = "Browse Plugins…";
/* Class = "NSBox"; title = "Box"; ObjectID = "vBs-Ga-aq0"; */ /* Class = "NSBox"; title = "Box"; ObjectID = "vBs-Ga-aq0"; */
"vBs-Ga-aq0.title" = "Box"; "vBs-Ga-aq0.title" = "Box";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reiniciar"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reiniciar";
"TRASH_ENTRY" = "Entrada de Papelera"; "TRASH_ENTRY" = "Entrada de Papelera";
"TRASH_GROUP" = "Grupo de Papelera"; "TRASH_GROUP" = "Grupo de Papelera";
"SET_NAME" = "Editar Nombre";
"SET_TITLE" = "Editar Título";
"SET_USERNAME" = "Editar Nombre de Usuario";
"SET_PASSWORD" = "Editar Contraseña";
"SET_URL" = "Editar URL";
"SET_NOTES" = "Editar Notas";
"SHOW_HISTORY" = "Show History"; "SHOW_HISTORY" = "Show History";
/* /*
@@ -70,16 +64,10 @@
"DATABASE" = "Base de Datos"; "DATABASE" = "Base de Datos";
"DELETE" = "Eliminar"; "DELETE" = "Eliminar";
"EDIT" = "Editar"; "EDIT" = "Editar";
"EMAIL" = "EMail";
"GROUP" = "Grupo"; "GROUP" = "Grupo";
"GENERAL" = "General";
"HOMEBANKING" = "Bancos";
"INSPECTOR" = "Inspector"; "INSPECTOR" = "Inspector";
"INTERNET" = "Internet";
"LOCK" = "Bloquear"; "LOCK" = "Bloquear";
"MODIFIED" = "Modificado"; "MODIFIED" = "Modificado";
"NAME" = "Nombre";
"NETWORK" = "Red";
"NONE" = "Ninguno"; "NONE" = "Ninguno";
"NOTES" = "Notas"; "NOTES" = "Notas";
"PASSWORD" = "Contraseña"; "PASSWORD" = "Contraseña";
@@ -87,7 +75,6 @@
"SAVE_WITH_DOTS" = "Guardar…"; "SAVE_WITH_DOTS" = "Guardar…";
"SEARCH" = "Buscar"; "SEARCH" = "Buscar";
"TITLE" = "Título"; "TITLE" = "Título";
"TRASH" = "Papelera";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "Nombre de usuario"; "USERNAME" = "Nombre de usuario";
"WINDOWS" = "Ventanas"; "WINDOWS" = "Ventanas";
@@ -95,7 +82,6 @@
"CHANGE_DATABASE_NAME" = "Cambiar Nombre de Base"; "CHANGE_DATABASE_NAME" = "Cambiar Nombre de Base";
"CHANGE_TRASH_GROUP" = "Cambiar Grupo de Papelera"; "CHANGE_TRASH_GROUP" = "Cambiar Grupo de Papelera";
"%@_COPY" = "%@ Copiar";
"DUPLICTE_PASSWORDS" = "Duplicar Contraseñas"; "DUPLICTE_PASSWORDS" = "Duplicar Contraseñas";
@@ -144,13 +130,6 @@
"DEFAULT_GROUP_NAME" = "Nuevo Grupo"; "DEFAULT_GROUP_NAME" = "Nuevo Grupo";
"DEFAULT_WINDOW_TITLE" = "Título de Ventana"; "DEFAULT_WINDOW_TITLE" = "Título de Ventana";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld Entradas";
"%ld_ENTRY" = "%ld Entrada";
/* Settings */ /* Settings */
"GENERAL_SETTINGS" = "General"; "GENERAL_SETTINGS" = "General";
"INTEGRATION_SETTINGS" = "Integración"; "INTEGRATION_SETTINGS" = "Integración";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Réinitialiser"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Réinitialiser";
"TRASH_ENTRY" = "Effacer entrée"; "TRASH_ENTRY" = "Effacer entrée";
"TRASH_GROUP" = "Effacer groupe"; "TRASH_GROUP" = "Effacer groupe";
"SET_NAME" = "Modifier le nom";
"SET_TITLE" = "Modifier le titre";
"SET_USERNAME" = "Modifier utilisateur";
"SET_PASSWORD" = "Modifier mot de passe";
"SET_URL" = "Modifier URL";
"SET_NOTES" = "Modifier notes";
"SHOW_HISTORY" = "SHOW_HISTORY"; "SHOW_HISTORY" = "SHOW_HISTORY";
@@ -71,16 +65,10 @@
"DATABASE" = "Base de données"; "DATABASE" = "Base de données";
"DELETE" = "Effacer"; "DELETE" = "Effacer";
"EDIT" = "Modifier"; "EDIT" = "Modifier";
"EMAIL" = "Courrier électronique";
"GROUP" = "Groupe"; "GROUP" = "Groupe";
"GENERAL" = "Général";
"HOMEBANKING" = "Banque";
"INSPECTOR" = "Inspecteur"; "INSPECTOR" = "Inspecteur";
"INTERNET" = "Internet";
"LOCK" = "Verrouiller"; "LOCK" = "Verrouiller";
"MODIFIED" = "Modifié"; "MODIFIED" = "Modifié";
"NAME" = "Nom";
"NETWORK" = "Réseau";
"NONE" = "NONE"; "NONE" = "NONE";
"NOTES" = "Notes"; "NOTES" = "Notes";
"PASSWORD" = "Mot de passe"; "PASSWORD" = "Mot de passe";
@@ -88,7 +76,6 @@
"SAVE_WITH_DOTS" = "Sauvegarder…"; "SAVE_WITH_DOTS" = "Sauvegarder…";
"SEARCH" = "Rechercher"; "SEARCH" = "Rechercher";
"TITLE" = "Titre"; "TITLE" = "Titre";
"TRASH" = "Corbeille";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "Utilisateur"; "USERNAME" = "Utilisateur";
"WINDOWS" = "Windows"; "WINDOWS" = "Windows";
@@ -96,7 +83,6 @@
"CHANGE_DATABASE_NAME" = "Modifier nom base de données"; "CHANGE_DATABASE_NAME" = "Modifier nom base de données";
"CHANGE_TRASH_GROUP" = "Modifier le groupe corbeille"; "CHANGE_TRASH_GROUP" = "Modifier le groupe corbeille";
"%@_COPY" = "%@_COPY"; //TODO
"DUPLICTE_PASSWORDS" = "Dupliquer mots de passe"; "DUPLICTE_PASSWORDS" = "Dupliquer mots de passe";
@@ -145,13 +131,6 @@
"DEFAULT_GROUP_NAME" = "Nouveau groupe"; "DEFAULT_GROUP_NAME" = "Nouveau groupe";
"DEFAULT_WINDOW_TITLE" = "Titre de la fenêtre"; "DEFAULT_WINDOW_TITLE" = "Titre de la fenêtre";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld entrées";
"%ld_ENTRY" = "%ld entrée";
/* General Settings Label */ /* General Settings Label */
"GENERAL_SETTINGS" = "Général"; "GENERAL_SETTINGS" = "Général";
"INTEGRATION_SETTINGS" = "Intégration"; "INTEGRATION_SETTINGS" = "Intégration";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reimposta"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reimposta";
"TRASH_ENTRY" = "Cestina Elemento"; "TRASH_ENTRY" = "Cestina Elemento";
"TRASH_GROUP" = "Cestina Gruppo"; "TRASH_GROUP" = "Cestina Gruppo";
"SET_NAME" = "Modifica Nome";
"SET_TITLE" = "Modifica Titolo";
"SET_USERNAME" = "Modifica Nome Utente";
"SET_PASSWORD" = "Modifica Password";
"SET_URL" = "Modifica URL";
"SET_NOTES" = "Modifica Note";
"SHOW_HISTORY" = "SHOW_HISTORY"; "SHOW_HISTORY" = "SHOW_HISTORY";
/* /*
@@ -70,16 +64,10 @@
"DATABASE" = "Database"; "DATABASE" = "Database";
"DELETE" = "Elimina"; "DELETE" = "Elimina";
"EDIT" = "Modifica"; "EDIT" = "Modifica";
"EMAIL" = "EMail";
"GROUP" = "Gruppo"; "GROUP" = "Gruppo";
"GENERAL" = "Generale";
"HOMEBANKING" = "Homebanking";
"INSPECTOR" = "Inspector"; "INSPECTOR" = "Inspector";
"INTERNET" = "Internet";
"LOCK" = "Blocca"; "LOCK" = "Blocca";
"MODIFIED" = "Modificato"; "MODIFIED" = "Modificato";
"NAME" = "Nome";
"NETWORK" = "Rete";
"NONE" = "Nessun"; "NONE" = "Nessun";
"NOTES" = "Note"; "NOTES" = "Note";
"PASSWORD" = "Password"; "PASSWORD" = "Password";
@@ -87,7 +75,6 @@
"SAVE_WITH_DOTS" = "Salva…"; "SAVE_WITH_DOTS" = "Salva…";
"SEARCH" = "Cerca"; "SEARCH" = "Cerca";
"TITLE" = "Titolo"; "TITLE" = "Titolo";
"TRASH" = "Cestino";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "Nome Utente"; "USERNAME" = "Nome Utente";
"WINDOWS" = "Windows"; "WINDOWS" = "Windows";
@@ -95,7 +82,6 @@
"CHANGE_DATABASE_NAME" = "Cambia Nome Database"; "CHANGE_DATABASE_NAME" = "Cambia Nome Database";
"CHANGE_TRASH_GROUP" = "Cambia Gruppo Cestino"; "CHANGE_TRASH_GROUP" = "Cambia Gruppo Cestino";
"%@_COPY" = "%@ Copia";
"DUPLICTE_PASSWORDS" = "Duplica Passwords"; "DUPLICTE_PASSWORDS" = "Duplica Passwords";
@@ -144,13 +130,6 @@
"DEFAULT_GROUP_NAME" = "Nuovo Gruppo"; "DEFAULT_GROUP_NAME" = "Nuovo Gruppo";
"DEFAULT_WINDOW_TITLE" = "Titolo Finestra"; "DEFAULT_WINDOW_TITLE" = "Titolo Finestra";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld Elementi";
"%ld_ENTRY" = "%ld Elemento";
/* Settings */ /* Settings */
"GENERAL_SETTINGS" = "Generale"; "GENERAL_SETTINGS" = "Generale";
"INTEGRATION_SETTINGS" = "Integrazione"; "INTEGRATION_SETTINGS" = "Integrazione";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reset"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reset";
"TRASH_ENTRY" = "Prullenmand Item"; "TRASH_ENTRY" = "Prullenmand Item";
"TRASH_GROUP" = "Prullenmand Groep"; "TRASH_GROUP" = "Prullenmand Groep";
"SET_NAME" = "Wijzig Naam";
"SET_TITLE" = "Wijzig Titel";
"SET_USERNAME" = "Wijzig Gebruikersnaam";
"SET_PASSWORD" = "Wijzig Wachtwoord";
"SET_URL" = "Wijzig URL";
"SET_NOTES" = "Wijzig Notities";
"SHOW_HISTORY" = "SHOW_HISTORY"; "SHOW_HISTORY" = "SHOW_HISTORY";
/* /*
@@ -70,16 +64,10 @@
"DATABASE" = "Database"; "DATABASE" = "Database";
"DELETE" = "Verwijder"; "DELETE" = "Verwijder";
"EDIT" = "Wijzig"; "EDIT" = "Wijzig";
"EMAIL" = "E-Mail";
"GROUP" = "Groep"; "GROUP" = "Groep";
"GENERAL" = "Algemeen";
"HOMEBANKING" = "Thuisbankieren";
"INSPECTOR" = "Inspector"; "INSPECTOR" = "Inspector";
"INTERNET" = "Internet";
"LOCK" = "Vergrendel"; "LOCK" = "Vergrendel";
"MODIFIED" = "Gewijzigd"; "MODIFIED" = "Gewijzigd";
"NAME" = "Naam";
"NETWORK" = "Netwerk";
"NOTES" = "Notities"; "NOTES" = "Notities";
"NONE" = "NONE"; "NONE" = "NONE";
"PASSWORD" = "Wachtwoord"; "PASSWORD" = "Wachtwoord";
@@ -87,7 +75,6 @@
"SAVE_WITH_DOTS" = "Bewaar…"; "SAVE_WITH_DOTS" = "Bewaar…";
"SEARCH" = "Zoeken"; "SEARCH" = "Zoeken";
"TITLE" = "Titel"; "TITLE" = "Titel";
"TRASH" = "Prullenmand";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "Gebruikersnaam"; "USERNAME" = "Gebruikersnaam";
"WINDOWS" = "Vensters"; "WINDOWS" = "Vensters";
@@ -95,7 +82,6 @@
"CHANGE_DATABASE_NAME" = "Wijzig Databasenaam"; "CHANGE_DATABASE_NAME" = "Wijzig Databasenaam";
"CHANGE_TRASH_GROUP" = "Wijzig Prullenmand Groep"; "CHANGE_TRASH_GROUP" = "Wijzig Prullenmand Groep";
"%@_COPY" = "%@ Kopieer";
"DUPLICTE_PASSWORDS" = "Dupliceer Wachtwoorden"; "DUPLICTE_PASSWORDS" = "Dupliceer Wachtwoorden";
@@ -144,13 +130,6 @@
"DEFAULT_GROUP_NAME" = "Nieuwe Groep"; "DEFAULT_GROUP_NAME" = "Nieuwe Groep";
"DEFAULT_WINDOW_TITLE" = "Window Title"; "DEFAULT_WINDOW_TITLE" = "Window Title";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld Items";
"%ld_ENTRY" = "%ld Item";
/* Settings */ /* Settings */
"GENERAL_SETTINGS" = "Algemeen"; "GENERAL_SETTINGS" = "Algemeen";
"INTEGRATION_SETTINGS" = "Integratie"; "INTEGRATION_SETTINGS" = "Integratie";

View File

@@ -1,18 +1,9 @@
/* (No Comment) */
"%@_COPY" = "%@ kopiuj";
/* Display format for days. Should contain a long decimal placeholder! */ /* Display format for days. Should contain a long decimal placeholder! */
"%ld_DAYS" = "%ld dni"; "%ld_DAYS" = "%ld dni";
/* % days ago */ /* % days ago */
"%ld_DAYS_AGO" = "%ld days ago"; "%ld_DAYS_AGO" = "%ld days ago";
/* (No Comment) */
"%ld_ENTRIES" = "%ld wpisy/ów";
/* (No Comment) */
"%ld_ENTRY" = "%ld wpis";
/* % Hours ago */ /* % Hours ago */
"%ld_HOURS_AGO" = "about %ld hours ago"; "%ld_HOURS_AGO" = "about %ld hours ago";
@@ -167,9 +158,6 @@
Menu item on the add entry context menu to edit template groups */ Menu item on the add entry context menu to edit template groups */
"EDIT_TEMPLATE_GROUP" = "Edit Entry Template Group"; "EDIT_TEMPLATE_GROUP" = "Edit Entry Template Group";
/* (No Comment) */
"EMAIL" = "E-mail";
/* Empty Trash /* Empty Trash
Menu item in the database outline context menu to empyt the trash Menu item in the database outline context menu to empyt the trash
Menu item in the database outline to empty the trash */ Menu item in the database outline to empty the trash */
@@ -214,9 +202,6 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"FILE_OPEN_ERROR" = "Błąd! Nie można otworzyć pliku."; "FILE_OPEN_ERROR" = "Błąd! Nie można otworzyć pliku.";
/* (No Comment) */
"GENERAL" = "Ogólne";
/* General Settings Label */ /* General Settings Label */
"GENERAL_SETTINGS" = "Ogólne"; "GENERAL_SETTINGS" = "Ogólne";
@@ -226,18 +211,12 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"HISTORY" = "Historia"; "HISTORY" = "Historia";
/* (No Comment) */
"HOMEBANKING" = "Homebanking";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"INSPECTOR" = "Inspektor"; "INSPECTOR" = "Inspektor";
/* Label for the integration settings tab */ /* Label for the integration settings tab */
"INTEGRATION_SETTINGS" = "Integracje"; "INTEGRATION_SETTINGS" = "Integracje";
/* (No Comment) */
"INTERNET" = "Internet";
/* Just now */ /* Just now */
"JUST_NOW" = "Just now"; "JUST_NOW" = "Just now";
@@ -268,12 +247,6 @@
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"MOVE_GROUP" = "Przenieś grupę"; "MOVE_GROUP" = "Przenieś grupę";
/* (No Comment) */
"NAME" = "Nazwa";
/* (No Comment) */
"NETWORK" = "Sieć";
/* Name for a newly created Database */ /* Name for a newly created Database */
"NEW_DATABASE" = "Database"; "NEW_DATABASE" = "Database";
@@ -360,7 +333,7 @@
"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE" = "Proszę zmienić hasło bazy danych!"; "RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE" = "Proszę zmienić hasło bazy danych!";
/* Action to restore and Entry to a previous state of it's history */ /* Action to restore and Entry to a previous state of it's history */
"RESTORE_HISTORY_ENTRY" = ""; "RESTORE_HISTORY_ENTRY" = "RESTORE_HISTORY_ENTRY";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"SAVE" = "Zapisz"; "SAVE" = "Zapisz";
@@ -404,24 +377,6 @@
/* Set the selection as default file change strategy! */ /* Set the selection as default file change strategy! */
"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use this method as default. You can change this at any time in the preferences."; "SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use this method as default. You can change this at any time in the preferences.";
/* (No Comment) */
"SET_NAME" = "Edit Name";
/* (No Comment) */
"SET_NOTES" = "Edit Notes";
/* (No Comment) */
"SET_PASSWORD" = "Edit Password";
/* (No Comment) */
"SET_TITLE" = "Edit Title";
/* (No Comment) */
"SET_URL" = "Edit URL";
/* (No Comment) */
"SET_USERNAME" = "Edit Username";
/* (No Comment) */ /* (No Comment) */
"SHORT_FILE_CHANGE_STRATEGY_ASK" = "Pytaj"; "SHORT_FILE_CHANGE_STRATEGY_ASK" = "Pytaj";
@@ -435,9 +390,6 @@
/* preset to expire tomorrow */ /* preset to expire tomorrow */
"TOMORROW" = "jutro"; "TOMORROW" = "jutro";
/* (No Comment) */
"TRASH" = "Kosz";
/* Move Entry to Trash */ /* Move Entry to Trash */
"TRASH_ENTRY" = "Trash Entry"; "TRASH_ENTRY" = "Trash Entry";

View File

@@ -1,9 +1,9 @@
{ {
"EVERY_%ld_DAYS" = { "EVERY_%ld_DAYS" = {
NSStringLocalizedFormatKey = "%#@variable@"; "NSStringLocalizedFormatKey" = "%#@days@";
variable = { days = {
NSStringFormatSpecTypeKey = NSStringPluralRuleType; "NSStringFormatSpecTypeKey" = "NSStringPluralRuleType";
NSStringFormatValueTypeKey = ld; "NSStringFormatValueTypeKey" = ld;
few = "co %ld dni"; few = "co %ld dni";
many = "co %ld dni"; many = "co %ld dni";
one = "co dzie\U0144"; one = "co dzie\U0144";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Сброс"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Сброс";
"TRASH_ENTRY" = "Удалить Запись"; "TRASH_ENTRY" = "Удалить Запись";
"TRASH_GROUP" = "Удалить Группу"; "TRASH_GROUP" = "Удалить Группу";
"SET_NAME" = "Изменить Имя";
"SET_TITLE" = "Изменить Заголовок";
"SET_USERNAME" = "Изменить Имя пользователя";
"SET_PASSWORD" = "Изменить Пароль";
"SET_URL" = "Изменить URL";
"SET_NOTES" = "Изменить Заметки";
"SHOW_HISTORY" = "SHOW_HISTORY"; "SHOW_HISTORY" = "SHOW_HISTORY";
/* /*
@@ -70,16 +64,10 @@
"DATABASE" = "База данных"; "DATABASE" = "База данных";
"DELETE" = "Удалить"; "DELETE" = "Удалить";
"EDIT" = "Изменено"; "EDIT" = "Изменено";
"EMAIL" = "EMail";
"GROUP" = "Группа"; "GROUP" = "Группа";
"GENERAL" = "Общие";
"HOMEBANKING" = "Домашний банк";
"INSPECTOR" = "Инспектор"; "INSPECTOR" = "Инспектор";
"INTERNET" = "Интернет";
"LOCK" = "Блокировка"; "LOCK" = "Блокировка";
"MODIFIED" = "Изменить"; "MODIFIED" = "Изменить";
"NAME" = "Имя";
"NETWORK" = "Сеть";
"NONE" = "Нет"; "NONE" = "Нет";
"NOTES" = "Заметки"; "NOTES" = "Заметки";
"PASSWORD" = "Пароль"; "PASSWORD" = "Пароль";
@@ -87,7 +75,6 @@
"SAVE_WITH_DOTS" = "Сохранить…"; "SAVE_WITH_DOTS" = "Сохранить…";
"SEARCH" = "Поиск"; "SEARCH" = "Поиск";
"TITLE" = "Заголовок"; "TITLE" = "Заголовок";
"TRASH" = "Удалить";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "Имя пользователя"; "USERNAME" = "Имя пользователя";
"WINDOWS" = "Окна"; "WINDOWS" = "Окна";
@@ -95,7 +82,6 @@
"CHANGE_DATABASE_NAME" = "Изменить Имя базы данных"; "CHANGE_DATABASE_NAME" = "Изменить Имя базы данных";
"CHANGE_TRASH_GROUP" = "Изменить группу для мусора"; "CHANGE_TRASH_GROUP" = "Изменить группу для мусора";
"%@_COPY" = "%@ Копировать";
"DUPLICTE_PASSWORDS" = "Дубли паролей"; "DUPLICTE_PASSWORDS" = "Дубли паролей";
@@ -144,13 +130,6 @@
"DEFAULT_GROUP_NAME" = "Новая Группа"; "DEFAULT_GROUP_NAME" = "Новая Группа";
"DEFAULT_WINDOW_TITLE" = "Заголовок Окна"; "DEFAULT_WINDOW_TITLE" = "Заголовок Окна";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld записей";
"%ld_ENTRY" = "%ld запись";
/* Settings */ /* Settings */
"GENERAL_SETTINGS" = "Общие"; "GENERAL_SETTINGS" = "Общие";
"INTEGRATION_SETTINGS" = "Интеграция"; "INTEGRATION_SETTINGS" = "Интеграция";

View File

@@ -44,12 +44,6 @@
"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "重置"; "PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "重置";
"TRASH_ENTRY" = "将项目移入废纸篓"; "TRASH_ENTRY" = "将项目移入废纸篓";
"TRASH_GROUP" = "将组移入废纸篓"; "TRASH_GROUP" = "将组移入废纸篓";
"SET_NAME" = "编辑名称";
"SET_TITLE" = "编辑标题";
"SET_USERNAME" = "编辑用户名";
"SET_PASSWORD" = "编辑密码";
"SET_URL" = "编辑 URL";
"SET_NOTES" = "编辑注释";
"SHOW_HISTORY" = "显示历史"; "SHOW_HISTORY" = "显示历史";
/* /*
@@ -70,16 +64,10 @@
"DATABASE" = "数据库"; "DATABASE" = "数据库";
"DELETE" = "删除"; "DELETE" = "删除";
"EDIT" = "编辑"; "EDIT" = "编辑";
"EMAIL" = "电子邮件";
"GROUP" = "组"; "GROUP" = "组";
"GENERAL" = "通用";
"HOMEBANKING" = "家庭银行";
"INSPECTOR" = "检查器"; "INSPECTOR" = "检查器";
"INTERNET" = "互联网";
"LOCK" = "锁定"; "LOCK" = "锁定";
"MODIFIED" = "修改时间"; "MODIFIED" = "修改时间";
"NAME" = "名称";
"NETWORK" = "网络";
"NONE" = "无"; "NONE" = "无";
"NOTES" = "注释"; "NOTES" = "注释";
"PASSWORD" = "密码"; "PASSWORD" = "密码";
@@ -87,7 +75,6 @@
"SAVE_WITH_DOTS" = "保存…"; "SAVE_WITH_DOTS" = "保存…";
"SEARCH" = "搜索"; "SEARCH" = "搜索";
"TITLE" = "标题"; "TITLE" = "标题";
"TRASH" = "废纸篓";
"URL" = "URL"; "URL" = "URL";
"USERNAME" = "用户名"; "USERNAME" = "用户名";
"WINDOWS" = "Windows"; "WINDOWS" = "Windows";
@@ -95,7 +82,6 @@
"CHANGE_DATABASE_NAME" = "修改数据库名称"; "CHANGE_DATABASE_NAME" = "修改数据库名称";
"CHANGE_TRASH_GROUP" = "修改废纸篓的项目组"; "CHANGE_TRASH_GROUP" = "修改废纸篓的项目组";
"%@_COPY" = "%@ 拷贝";
"DUPLICTE_PASSWORDS" = "重复的密码"; "DUPLICTE_PASSWORDS" = "重复的密码";
@@ -144,13 +130,6 @@
"DEFAULT_GROUP_NAME" = "项目组"; "DEFAULT_GROUP_NAME" = "项目组";
"DEFAULT_WINDOW_TITLE" = "Window Title"; "DEFAULT_WINDOW_TITLE" = "Window Title";
/* Number of Entries
Plural (0, >1)
Singular (1)
*/
"%ld_ENTRIES" = "%ld 个项目";
"%ld_ENTRY" = "%ld 个项目";
/* Settings */ /* Settings */
"GENERAL_SETTINGS" = "通用"; "GENERAL_SETTINGS" = "通用";
"INTEGRATION_SETTINGS" = "集成"; "INTEGRATION_SETTINGS" = "集成";