From 801889865f3ffea5eea2cf72b7a32ec00317f42d Mon Sep 17 00:00:00 2001 From: michael starke Date: Fri, 25 Aug 2017 14:01:40 +0200 Subject: [PATCH] Added spanish localization. Extended english and german localization. --- MacPass.xcodeproj/project.pbxproj | 45 ++++ MacPass/Base.lproj/GeneralSettings.xib | 19 +- MacPass/MPDocument.m | 46 +++- MacPass/MPGeneralSettingsController.h | 1 + MacPass/MPGeneralSettingsController.m | 17 +- MacPass/MPSettingsHelper.h | 12 +- MacPass/MPSettingsHelper.m | 6 +- MacPass/de.lproj/Localizable.strings | 16 +- MacPass/en.lproj/Localizable.strings | 10 +- MacPass/{sp.lproj => es.lproj}/Credits.rtf | 0 .../DatabaseSettingsWindow.strings | 0 .../DatePickingView.strings | 0 .../EntryInspectorView.strings | 0 .../GeneralSettings.strings | 0 .../GroupInspectorView.strings | 0 .../IconSelection.strings | 0 .../{sp.lproj => es.lproj}/InfoPlist.strings | 0 .../InspectorView.strings | 0 .../IntegrationSettings.strings | 0 .../KPKLocalizable.strings | 0 MacPass/es.lproj/Localizable.strings | 224 ++++++++++++++++++ .../{sp.lproj => es.lproj}/MainMenu.strings | 0 .../PasswordCreatorView.strings | 0 .../PasswordEditWindow.strings | 0 .../PasswordInputView.strings | 0 MacPass/es.lproj/PluginSettings.strings | 15 ++ MacPass/es.lproj/ReferenceBuilderView.strings | 27 +++ .../UpdateSettings.strings | 0 .../WelcomeWindow.strings | 0 .../WorkflowSettings.strings | 0 MacPass/sp.lproj/Localizable.strings | Bin 15060 -> 0 bytes MacPassTests/es.lproj/InfoPlist.strings | 2 + 32 files changed, 400 insertions(+), 40 deletions(-) rename MacPass/{sp.lproj => es.lproj}/Credits.rtf (100%) rename MacPass/{sp.lproj => es.lproj}/DatabaseSettingsWindow.strings (100%) rename MacPass/{sp.lproj => es.lproj}/DatePickingView.strings (100%) rename MacPass/{sp.lproj => es.lproj}/EntryInspectorView.strings (100%) rename MacPass/{sp.lproj => es.lproj}/GeneralSettings.strings (100%) rename MacPass/{sp.lproj => es.lproj}/GroupInspectorView.strings (100%) rename MacPass/{sp.lproj => es.lproj}/IconSelection.strings (100%) rename MacPass/{sp.lproj => es.lproj}/InfoPlist.strings (100%) rename MacPass/{sp.lproj => es.lproj}/InspectorView.strings (100%) rename MacPass/{sp.lproj => es.lproj}/IntegrationSettings.strings (100%) rename MacPass/{sp.lproj => es.lproj}/KPKLocalizable.strings (100%) create mode 100644 MacPass/es.lproj/Localizable.strings rename MacPass/{sp.lproj => es.lproj}/MainMenu.strings (100%) rename MacPass/{sp.lproj => es.lproj}/PasswordCreatorView.strings (100%) rename MacPass/{sp.lproj => es.lproj}/PasswordEditWindow.strings (100%) rename MacPass/{sp.lproj => es.lproj}/PasswordInputView.strings (100%) create mode 100644 MacPass/es.lproj/PluginSettings.strings create mode 100644 MacPass/es.lproj/ReferenceBuilderView.strings rename MacPass/{sp.lproj => es.lproj}/UpdateSettings.strings (100%) rename MacPass/{sp.lproj => es.lproj}/WelcomeWindow.strings (100%) rename MacPass/{sp.lproj => es.lproj}/WorkflowSettings.strings (100%) delete mode 100644 MacPass/sp.lproj/Localizable.strings create mode 100644 MacPassTests/es.lproj/InfoPlist.strings diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 6b8e6ad1..0680f66f 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -413,6 +413,28 @@ 4C3C4EAD18D7039300153127 /* MPValueTransformerHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPValueTransformerHelper.h; sourceTree = ""; }; 4C3C4EAE18D7039300153127 /* MPValueTransformerHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPValueTransformerHelper.m; sourceTree = ""; }; 4C3FFD9D16DAF60600DF9186 /* ContextBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContextBar.xib; sourceTree = ""; }; + 4C4161021F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatabaseSettingsWindow.strings; sourceTree = ""; }; + 4C4161031F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/PasswordEditWindow.strings; sourceTree = ""; }; + 4C4161041F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/GeneralSettings.strings; sourceTree = ""; }; + 4C4161051F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/IntegrationSettings.strings; sourceTree = ""; }; + 4C4161061F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/WorkflowSettings.strings; sourceTree = ""; }; + 4C4161071F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/UpdateSettings.strings; sourceTree = ""; }; + 4C4161081F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/PluginSettings.strings; sourceTree = ""; }; + 4C4161091F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InspectorView.strings; sourceTree = ""; }; + 4C41610A1F50333B003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/GroupInspectorView.strings; sourceTree = ""; }; + 4C41610B1F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/EntryInspectorView.strings; sourceTree = ""; }; + 4C41610C1F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/PasswordInputView.strings; sourceTree = ""; }; + 4C41610D1F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/PasswordCreatorView.strings; sourceTree = ""; }; + 4C41610E1F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/IconSelection.strings; sourceTree = ""; }; + 4C41610F1F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatePickingView.strings; sourceTree = ""; }; + 4C4161101F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/ReferenceBuilderView.strings; sourceTree = ""; }; + 4C4161111F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/WelcomeWindow.strings; sourceTree = ""; }; + 4C4161121F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/MainMenu.strings; sourceTree = ""; }; + 4C4161131F50333C003BC0AF /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + 4C4161141F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = es; path = es.lproj/Credits.rtf; sourceTree = ""; }; + 4C4161151F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + 4C4161161F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/KPKLocalizable.strings; sourceTree = ""; }; + 4C4161171F50333C003BC0AF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; 4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasteBoardController.h; sourceTree = ""; }; 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasteBoardController.m; sourceTree = ""; }; 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OverlayWindow.xib; sourceTree = ""; }; @@ -1529,6 +1551,7 @@ ru, it, pl, + es, ); mainGroup = 4C77E35715B84A240093A587; productRefGroup = 4C77E36315B84A240093A587 /* Products */; @@ -1840,6 +1863,7 @@ 713F9B481C95CEA000605880 /* fr */, 4C840C4B1D773E5E0081F605 /* pl */, 60ECAD221F12231B00EA9DB3 /* zh-Hans */, + 4C4161081F50333B003BC0AF /* es */, ); name = PluginSettings.xib; sourceTree = ""; @@ -1854,6 +1878,7 @@ FA638D231C39BFCC00B10CC6 /* ru */, 4825CC961C414D58003E37E9 /* it */, 4C840C551D773E6B0081F605 /* pl */, + 4C4161171F50333C003BC0AF /* es */, ); name = InfoPlist.strings; sourceTree = ""; @@ -1868,6 +1893,7 @@ BD6C366619484CF40089EB37 /* nl */, FA638D221C39BFCC00B10CC6 /* ru */, 4825CC951C414D58003E37E9 /* it */, + 4C4161161F50333C003BC0AF /* es */, ); name = KPKLocalizable.strings; sourceTree = ""; @@ -1884,6 +1910,7 @@ FA638D1C1C39BFCC00B10CC6 /* ru */, 4825CC8F1C414D58003E37E9 /* it */, 4C840C521D773E5E0081F605 /* pl */, + 4C41610E1F50333C003BC0AF /* es */, ); name = IconSelection.xib; sourceTree = ""; @@ -1900,6 +1927,7 @@ FA638D111C39BFCB00B10CC6 /* ru */, 4825CC841C414D57003E37E9 /* it */, 4C840C471D773E5D0081F605 /* pl */, + 4C4161041F50333B003BC0AF /* es */, ); name = GeneralSettings.xib; sourceTree = ""; @@ -1916,6 +1944,7 @@ FA638D171C39BFCC00B10CC6 /* ru */, 4825CC8A1C414D57003E37E9 /* it */, 4C840C4D1D773E5E0081F605 /* pl */, + 4C41610C1F50333C003BC0AF /* es */, ); name = PasswordInputView.xib; sourceTree = ""; @@ -1932,6 +1961,7 @@ FA638D191C39BFCC00B10CC6 /* ru */, 4825CC8C1C414D58003E37E9 /* it */, 4C840C4F1D773E5E0081F605 /* pl */, + 4C4161091F50333B003BC0AF /* es */, ); name = InspectorView.xib; sourceTree = ""; @@ -1946,6 +1976,7 @@ BD6C366519484CF40089EB37 /* nl */, FA638D211C39BFCC00B10CC6 /* ru */, 4825CC941C414D58003E37E9 /* it */, + 4C4161151F50333C003BC0AF /* es */, ); name = InfoPlist.strings; sourceTree = ""; @@ -1962,6 +1993,7 @@ FA638D161C39BFCC00B10CC6 /* ru */, 4825CC891C414D57003E37E9 /* it */, 4C840C4C1D773E5E0081F605 /* pl */, + 4C4161121F50333C003BC0AF /* es */, ); name = MainMenu.xib; sourceTree = ""; @@ -1978,6 +2010,7 @@ FA638D101C39BFCB00B10CC6 /* ru */, 4825CC831C414D57003E37E9 /* it */, 4C840C461D773E5D0081F605 /* pl */, + 4C4161111F50333C003BC0AF /* es */, ); name = WelcomeWindow.xib; sourceTree = ""; @@ -1993,6 +2026,7 @@ FA638D1F1C39BFCC00B10CC6 /* ru */, 4825CC921C414D58003E37E9 /* it */, 4C43B02F1E266A3A000CB4D7 /* pl */, + 4C4161131F50333C003BC0AF /* es */, ); name = Localizable.strings; sourceTree = ""; @@ -2008,6 +2042,7 @@ FA638D201C39BFCC00B10CC6 /* ru */, 4825CC931C414D58003E37E9 /* it */, 4C43B0301E266A41000CB4D7 /* pl */, + 4C4161141F50333C003BC0AF /* es */, ); name = Credits.rtf; sourceTree = ""; @@ -2019,6 +2054,7 @@ FA638D1E1C39BFCC00B10CC6 /* ru */, 4825CC911C414D58003E37E9 /* it */, 4C840C541D773E5E0081F605 /* pl */, + 4C4161101F50333C003BC0AF /* es */, ); name = ReferenceBuilderView.xib; sourceTree = ""; @@ -2035,6 +2071,7 @@ FA638D1B1C39BFCC00B10CC6 /* ru */, 4825CC8E1C414D58003E37E9 /* it */, 4C840C511D773E5E0081F605 /* pl */, + 4C41610B1F50333C003BC0AF /* es */, ); name = EntryInspectorView.xib; sourceTree = ""; @@ -2051,6 +2088,7 @@ FA638D1A1C39BFCC00B10CC6 /* ru */, 4825CC8D1C414D58003E37E9 /* it */, 4C840C501D773E5E0081F605 /* pl */, + 4C41610A1F50333B003BC0AF /* es */, ); name = GroupInspectorView.xib; sourceTree = ""; @@ -2067,6 +2105,7 @@ 4825CC851C414D57003E37E9 /* it */, 4C840C481D773E5D0081F605 /* pl */, 60ECAD271F12262400EA9DB3 /* zh-Hans */, + 4C4161051F50333B003BC0AF /* es */, ); name = IntegrationSettings.xib; sourceTree = ""; @@ -2083,6 +2122,7 @@ 4825CC861C414D57003E37E9 /* it */, 4C840C491D773E5D0081F605 /* pl */, 60ECAD251F12253C00EA9DB3 /* zh-Hans */, + 4C4161061F50333B003BC0AF /* es */, ); name = WorkflowSettings.xib; sourceTree = ""; @@ -2099,6 +2139,7 @@ FA638D141C39BFCC00B10CC6 /* ru */, 4825CC871C414D57003E37E9 /* it */, 4C840C4A1D773E5D0081F605 /* pl */, + 4C4161071F50333B003BC0AF /* es */, ); name = UpdateSettings.xib; sourceTree = ""; @@ -2115,6 +2156,7 @@ FA638D1D1C39BFCC00B10CC6 /* ru */, 4825CC901C414D58003E37E9 /* it */, 4C840C531D773E5E0081F605 /* pl */, + 4C41610F1F50333C003BC0AF /* es */, ); name = DatePickingView.xib; sourceTree = ""; @@ -2131,6 +2173,7 @@ FA638D0F1C39BFCB00B10CC6 /* ru */, 4825CC821C414D57003E37E9 /* it */, 4C840C451D773E5D0081F605 /* pl */, + 4C4161031F50333B003BC0AF /* es */, ); name = PasswordEditWindow.xib; sourceTree = ""; @@ -2147,6 +2190,7 @@ FA638D181C39BFCC00B10CC6 /* ru */, 4825CC8B1C414D57003E37E9 /* it */, 4C840C4E1D773E5E0081F605 /* pl */, + 4C41610D1F50333C003BC0AF /* es */, ); name = PasswordCreatorView.xib; sourceTree = ""; @@ -2163,6 +2207,7 @@ FA638D0E1C39BFCB00B10CC6 /* ru */, 4825CC811C414D57003E37E9 /* it */, 4C840C441D773E5D0081F605 /* pl */, + 4C4161021F50333B003BC0AF /* es */, ); name = DatabaseSettingsWindow.xib; sourceTree = ""; diff --git a/MacPass/Base.lproj/GeneralSettings.xib b/MacPass/Base.lproj/GeneralSettings.xib index 187ebbf3..76b59a04 100644 --- a/MacPass/Base.lproj/GeneralSettings.xib +++ b/MacPass/Base.lproj/GeneralSettings.xib @@ -10,6 +10,7 @@ + @@ -168,7 +169,7 @@ - + @@ -182,25 +183,19 @@ - - + + - - + + - - - - - - - + diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index cbe8a511..76934875 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -79,7 +79,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou @property (strong) IBOutlet NSView *warningView; @property (weak) IBOutlet NSImageView *warningViewImage; -@property (assign) BOOL lockedForFileChange; +@property (atomic, assign) BOOL lockedForFileChange; @end @@ -288,35 +288,55 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou /* Dispatch the alert to the main queue */ __weak MPDocument *welf = self; dispatch_async(dispatch_get_main_queue(), ^{ - + MPFileChangeStrategy strategy = (MPFileChangeStrategy)[NSUserDefaults.standardUserDefaults integerForKey:kMPSettingsKeyFileChangeStrategy]; + if(strategy != MPFileChangeStrategyAsk) { + [welf _handleFileChangeWithStrategy:strategy setAsDefault:NO]; + self.lockedForFileChange = NO; + return; + } NSAlert *alert = [[NSAlert alloc] init]; alert.alertStyle = NSWarningAlertStyle; alert.messageText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT", @"Message displayed when an open file was changed from another application"); alert.informativeText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_INFO_TEXT", @"Informative text displayed when the file was change from another application"); - [alert addButtonWithTitle:NSLocalizedString(@"MERGE_CHANGES", @"Merge changes into file!")]; - [alert addButtonWithTitle:NSLocalizedString(@"LOAD_CHANGES", @"Reopen the file!")]; - [alert addButtonWithTitle:NSLocalizedString(@"KEEP_MINE", @"Ignore the changes to an open file!")]; + alert.showsSuppressionButton = YES; + alert.suppressionButton.title = NSLocalizedString(@"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY", @"Set the selection as default file change strategy!"); + [alert addButtonWithTitle:NSLocalizedString(@"FILE_CHANGE_STRATEGY_MERGE", @"Merge changes into file!")]; + [alert addButtonWithTitle:NSLocalizedString(@"FILE_CHANGE_STRATEGY_USE_OTHER", @"Reopen the file!")]; + [alert addButtonWithTitle:NSLocalizedString(@"FILE_CHANGE_STRATEGY_KEEP_MINE", @"Ignore the changes to an open file!")]; [alert beginSheetModalForWindow:welf.windowForSheet completionHandler:^(NSModalResponse returnCode) { - - welf.lockedForFileChange = NO; - + BOOL useAsDefault = (alert.suppressionButton.state == NSOnState); switch(returnCode) { case NSAlertFirstButtonReturn: { - [welf mergeWithContentsFromURL:self.fileURL]; + [welf _handleFileChangeWithStrategy:MPFileChangeStrategyMerge setAsDefault:useAsDefault]; break; } case NSAlertSecondButtonReturn: - [welf revertToContentsOfURL:welf.fileURL ofType:welf.fileType error:nil]; + [welf _handleFileChangeWithStrategy:MPFileChangeStrategyUseOther setAsDefault:useAsDefault]; break; case NSAlertThirdButtonReturn: - // do not change anything + [welf _handleFileChangeWithStrategy:MPFileChangeStrategyKeepMine setAsDefault:useAsDefault]; default: break; } + welf.lockedForFileChange = NO; }]; }); } +- (void)_handleFileChangeWithStrategy:(MPFileChangeStrategy)strategy setAsDefault:(BOOL)setAsDefault { + if(setAsDefault) { + [NSUserDefaults.standardUserDefaults setInteger:strategy forKey:kMPSettingsKeyFileChangeStrategy]; + } + + if(strategy == MPFileChangeStrategyMerge) { + [self mergeWithContentsFromURL:self.fileURL]; + } + else if(strategy == MPFileChangeStrategyUseOther) { + [self revertToContentsOfURL:self.fileURL ofType:self.fileType error:nil]; + } + // else do nothing! +} + - (void)writeXMLToURL:(NSURL *)url { NSData *xmlData = [self.tree xmlData]; NSError *error; @@ -356,6 +376,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou [self saveDocument] is enqued so that dataOfType is called too late to actually save teh database. hence we need to get the ok from the NSDocument about the save, otherwise the lock fails! */ + if(self.lockedForFileChange) { + // we have user interaction that cannot be dismissed, instead ignore locking! + return; + } [self saveDocumentWithDelegate:self didSaveSelector:@selector(_lockDatabaseForDocument:didSave:contextInfo:) contextInfo:NULL]; } diff --git a/MacPass/MPGeneralSettingsController.h b/MacPass/MPGeneralSettingsController.h index 8355e88b..1f1de461 100644 --- a/MacPass/MPGeneralSettingsController.h +++ b/MacPass/MPGeneralSettingsController.h @@ -20,5 +20,6 @@ @property (weak) IBOutlet NSButton *reopenLastDatabase; @property (weak) IBOutlet NSButton *createUntitledOnActivation; @property (weak) IBOutlet NSButton *rememberKeyFileCheckButton; +@property (weak) IBOutlet NSPopUpButton *fileChangeStrategyPopup; @end diff --git a/MacPass/MPGeneralSettingsController.m b/MacPass/MPGeneralSettingsController.m index 193ee9ff..a0b70192 100644 --- a/MacPass/MPGeneralSettingsController.m +++ b/MacPass/MPGeneralSettingsController.m @@ -40,8 +40,21 @@ NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab"; [self.idleTimeOutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyIdleLockTimeOut] options:nil]; [self.reopenLastDatabase bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch] options:nil]; [self.rememberKeyFileCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyRememberKeyFilesForDatabases] options:nil]; + [self.createUntitledOnActivation setState:NSOffState]; //kMPSettingsKeyOpenEmptyDatabaseOnLaunch + + /* File Change Strategy Menu */ + NSDictionary *fileChangeStragegyDict = @{ @(MPFileChangeStrategyAsk) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_ASK", @""), + @(MPFileChangeStrategyUseOther) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_USE_OTHER", @""), + @(MPFileChangeStrategyKeepMine) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_KEEP_MINE", @""), + @(MPFileChangeStrategyMerge) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_MERGE", @""), + }; + [self.fileChangeStrategyPopup.menu removeAllItems]; + for(NSNumber *key in fileChangeStragegyDict) { + NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:fileChangeStragegyDict[key] action:NULL keyEquivalent:@""]; + item.tag = key.integerValue; + [self.fileChangeStrategyPopup.menu addItem:item]; + } + [self.fileChangeStrategyPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyFileChangeStrategy] options:nil]; - [self.createUntitledOnActivation setState:NSOffState]; - //kMPSettingsKeyOpenEmptyDatabaseOnLaunch } @end diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index 743ce992..ebd1c39b 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -16,6 +16,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit; APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordEncoding; APPKIT_EXTERN NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch; APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch; +APPKIT_EXTERN NSString *const kMPSettingsKeyFileChangeStrategy; /* URL handling */ APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId; @@ -65,6 +66,13 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyUpdatePasswordOnTemplateEntries; /* Plugins */ APPKIT_EXTERN NSString *const kMPSettingsKeyLoadUnsecurePlugins; // If set to YES this will load all plugins regardless of their codesignature status +typedef NS_ENUM(NSUInteger, MPFileChangeStrategy) { + MPFileChangeStrategyAsk, + MPFileChangeStrategyKeepMine, + MPFileChangeStrategyUseOther, + MPFileChangeStrategyMerge +}; + typedef NS_ENUM(NSUInteger, MPDoubleClickURLAction) { MPDoubleClickURLActionCopy, MPDoubleClickURLActionOpen, @@ -84,10 +92,6 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordCustomString; APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordDefaultsForEntry; -typedef NS_ENUM(NSUInteger, MPPasswordEncoding) { - MPPasswordEncodingUTF8, - MPPasswordEncodingASCII, -}; @interface MPSettingsHelper : NSObject diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index 8f391ee3..491b197f 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -17,6 +17,7 @@ NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearC NSString *const kMPSettingsKeyBrowserBundleId = @"BrowserBundleId"; NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch"; NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch"; +NSString *const kMPSettingsKeyFileChangeStrategy = @"FileChangeStrategy"; NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep"; NSString *const kMPSettingskeyLockOnLogout = @"LockOnLogout"; NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut"; @@ -101,6 +102,7 @@ NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"Ke kMPSettingsKeyClearPasteboardOnQuit: @YES, kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO, kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES, + kMPSettingsKeyFileChangeStrategy: @(MPFileChangeStrategyAsk), // Ask what to do on a file change! kMPSettingsKeyLockOnSleep: @YES, kMPSettingskeyLockOnLogout: @NO, kMPSettingsKeyIdleLockTimeOut: @0, // 5 minutes @@ -207,7 +209,7 @@ NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"Ke + (void)_migrateRememberedKeyFiles { /* Database file paths was stored as plain text in keyfile mapping. - We only need to store the key file ulr in plain text, thus hashing the path is sufficent + We only need to store the key file url in plain text, thus hashing the path is sufficent */ NSDictionary *currentMapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:kMPSettingsKeyRememeberdKeysForDatabases]; if(!currentMapping) { @@ -225,7 +227,7 @@ NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"Ke didHash = YES; } } - /* keep all hasehd or unknown data */ + /* keep all hashed or unknown data */ else { hashedDict[key] = currentMapping[key]; } diff --git a/MacPass/de.lproj/Localizable.strings b/MacPass/de.lproj/Localizable.strings index 02f10ab1..2c61e5e7 100644 --- a/MacPass/de.lproj/Localizable.strings +++ b/MacPass/de.lproj/Localizable.strings @@ -193,19 +193,23 @@ "RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "Sie sollten das Password und/oder den Schlüssel ändern."; "CHANGE_PASSWORD_WITH_DOTS" = "Password ändern …"; -"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET" = "No password or keyfile is set."; -"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION" = "Please set a password and/or keyfile for this database. Aborting this will undo all changes and lock the document"; +"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET" = "Weder Password noch Schlüsseldatei sind festgelegt!"; +"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION" = "Bitte vergeben Sie ein Password und/oder einen Schlüssel. Sofern Sie abbrechen, werden Ihre Änderugnen rückgängig gemacht und die Datei gesperrt."; /* Message displayed when an open file was changed from another application */ "FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT" = "Die Datei wurde verändert!"; /* Informative text displayed when the file was change form another application */ "FILE_CHANGED_BY_OTHERS_INFO_TEXT" = "Die geöffnete Datei wurde von einem anderen Programm verändert! Der Inhalt stimmt nicht mehr mit dem geladenen Inhalt überein."; +/* 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."; +/* Always show a dialog after an external file change */ +"FILE_CHANGE_STRATEGY_ASK" = "Jedesmal fragen"; /* Button to ignore the changes */ -"KEEP_MINE" = "Geladenen Inhalt behalten!"; -/* BUtton to reload the changes form disk */ -"LOAD_CHANGES" = "Veränderten Inhalt laden!"; +"FILE_CHANGE_STRATEGY_KEEP_MINE" = "Behalte meine Version ohne Änderungen"; +/* Button to reload the changes form disk */ +"FILE_CHANGE_STRATEGY_USE_OTHER" = "Lade die andere Version und verwerfe meine Änderungen"; /* Merge changes into file! */ -"MERGE_CHANGES" = "Inhalte zusammenführen!"; +"FILE_CHANGE_STRATEGY_MERGE" = "Inhalte zusammenführen"; /* Password Input Error and Warnings */ "PASSWORD_INPUT_NO_PASSWORD" = "Kein Passwort"; diff --git a/MacPass/en.lproj/Localizable.strings b/MacPass/en.lproj/Localizable.strings index 9bc189c8..6f0f71ad 100644 --- a/MacPass/en.lproj/Localizable.strings +++ b/MacPass/en.lproj/Localizable.strings @@ -199,12 +199,16 @@ "FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT" = "The database file was modified!"; /* Informative text displayed when the file was change form 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?"; +/* 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."; +/* Always show a dialog after an external file change */ +"FILE_CHANGE_STRATEGY_ASK" = "Ask"; /* Button to ignore the changes */ -"KEEP_MINE" = "Don't Load Modified Database"; +"FILE_CHANGE_STRATEGY_KEEP_MINE" = "Keep My Version and Ignore Other Changes"; /* Button to reload the changes form disk */ -"LOAD_CHANGES" = "Load Modified Database and Discard Mine"; +"FILE_CHANGE_STRATEGY_USE_OTHER" = "Load Changed Version and Discard Mine"; /* Merge changes into file! */ -"MERGE_CHANGES" = "Merge Changes"; +"FILE_CHANGE_STRATEGY_MERGE" = "Merge Changes"; /* Password Input Messages, Errors and Warning */ "PASSWORD_INPUT_NO_PASSWORD" = "No Password"; diff --git a/MacPass/sp.lproj/Credits.rtf b/MacPass/es.lproj/Credits.rtf similarity index 100% rename from MacPass/sp.lproj/Credits.rtf rename to MacPass/es.lproj/Credits.rtf diff --git a/MacPass/sp.lproj/DatabaseSettingsWindow.strings b/MacPass/es.lproj/DatabaseSettingsWindow.strings similarity index 100% rename from MacPass/sp.lproj/DatabaseSettingsWindow.strings rename to MacPass/es.lproj/DatabaseSettingsWindow.strings diff --git a/MacPass/sp.lproj/DatePickingView.strings b/MacPass/es.lproj/DatePickingView.strings similarity index 100% rename from MacPass/sp.lproj/DatePickingView.strings rename to MacPass/es.lproj/DatePickingView.strings diff --git a/MacPass/sp.lproj/EntryInspectorView.strings b/MacPass/es.lproj/EntryInspectorView.strings similarity index 100% rename from MacPass/sp.lproj/EntryInspectorView.strings rename to MacPass/es.lproj/EntryInspectorView.strings diff --git a/MacPass/sp.lproj/GeneralSettings.strings b/MacPass/es.lproj/GeneralSettings.strings similarity index 100% rename from MacPass/sp.lproj/GeneralSettings.strings rename to MacPass/es.lproj/GeneralSettings.strings diff --git a/MacPass/sp.lproj/GroupInspectorView.strings b/MacPass/es.lproj/GroupInspectorView.strings similarity index 100% rename from MacPass/sp.lproj/GroupInspectorView.strings rename to MacPass/es.lproj/GroupInspectorView.strings diff --git a/MacPass/sp.lproj/IconSelection.strings b/MacPass/es.lproj/IconSelection.strings similarity index 100% rename from MacPass/sp.lproj/IconSelection.strings rename to MacPass/es.lproj/IconSelection.strings diff --git a/MacPass/sp.lproj/InfoPlist.strings b/MacPass/es.lproj/InfoPlist.strings similarity index 100% rename from MacPass/sp.lproj/InfoPlist.strings rename to MacPass/es.lproj/InfoPlist.strings diff --git a/MacPass/sp.lproj/InspectorView.strings b/MacPass/es.lproj/InspectorView.strings similarity index 100% rename from MacPass/sp.lproj/InspectorView.strings rename to MacPass/es.lproj/InspectorView.strings diff --git a/MacPass/sp.lproj/IntegrationSettings.strings b/MacPass/es.lproj/IntegrationSettings.strings similarity index 100% rename from MacPass/sp.lproj/IntegrationSettings.strings rename to MacPass/es.lproj/IntegrationSettings.strings diff --git a/MacPass/sp.lproj/KPKLocalizable.strings b/MacPass/es.lproj/KPKLocalizable.strings similarity index 100% rename from MacPass/sp.lproj/KPKLocalizable.strings rename to MacPass/es.lproj/KPKLocalizable.strings diff --git a/MacPass/es.lproj/Localizable.strings b/MacPass/es.lproj/Localizable.strings new file mode 100644 index 00000000..f8446bc6 --- /dev/null +++ b/MacPass/es.lproj/Localizable.strings @@ -0,0 +1,224 @@ +/* Formatted Times */ +"%ld_DAYS_AGO" = "hace %ld días"; +"%ld_HOURS_AGO" = "hace aproximadamente %ld horas"; +"%ld_MINUTES_AGO" = "hace %ld minutos"; +"%ld_WEEKS_AGO" = "hace %ld semanas"; +"JUST_NOW" = "Justo ahora"; +"LAST_WEEK" = "La semana pasada"; +"ONE_WEEK_AGO" = "Hace una semana"; +"YESTERDAY" = "Ayer"; +"TOMORROW" = "Mañana"; +"ONE_WEEK" = "en una semana"; +"ONE_MONTH" = "en un mes"; +"90_DAYS" = "en 90 días"; +"ONE_YEAR" = "en un año"; + +/* Date Picker */ +"SELECT_DATE_PRESET" = "Usar predefinido…"; + +/* Menu item for automatic trash creation */ +"AUTOCREATE_TRASH_FOLDER" = "Crear automáticamente"; + +/* + Actions + */ +"ADD_ENTRY" = "Agregar Entrada"; +"ADD_GROUP" = "Agregar Grupo"; +"DUPLICATE_ENTRY" = "Duplicar Entrada"; +"DUPLICATE_ENTRY_WITH_OPTIONS" = "Duplicar Entrada…"; +"COPY_ENTRY" = "Copiar Entrada"; +"COPY_GROUP" = "Copiar Grupo"; +"ADD_TREMPLATE_ENTRY" = "Crear Plantilla de Entrada"; +"DELETE_GROUP" = "Eliminar Grupo"; +"DELETE_ENTRY" = "Eliminar Entrada"; +"EDIT_TEMPLATE_GROUP" = "Editar Grupo de Plantilla"; +"EMPTY_TRASH" = "Vaciar Papelera"; +"MOVE_ENTRY" = "Mover Entrada"; +"MOVE_GROUP" = "Mover Grupo"; +"NEW_ENTRY_WITH_TEMPLATE_%@" = "Crear Entrada con Plantilla %@"; +"NEW_DATABASE" = "Base de Datos"; +"OPEN_URL" = "Abrir URL"; +"PERFORM_AUTOTYPE_FOR_ENTRY" = "Generar Autotype"; +"PREVIEW" = "Vista Previa"; +"PASSWORD_GENERATOR_SET_DEFAULTS" = "Configurar Predeterminados"; +"PASSWORD_GENERATOR_RESET_ENTRY_DEFAULTS" = "Reiniciar"; +"TRASH_ENTRY" = "Entrada 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"; + +/* + Search + */ +"CLEAR_RECENT_SEARCHES" = "Limpiar búsquedas recientes"; +"RECENT_SEARCHES" = "Búsquedas recientes"; +"SEARCH_DUPLICATE_PASSWORDS" = "Contraseñas duplicadas"; +"SEARCH_EXPIRED_ENTRIES" = "Expirado"; +"SELECT_FILTER_WITH_DOTS" = "Seleccionar…"; + +/* + Direct Translations + */ +"ACTION" = "Acción"; +"ATTACHMENTS" = "Adjuntos"; +"CANCEL" = "Cancelar"; +"DATABASE" = "Base de Datos"; +"DELETE" = "Eliminar"; +"EDIT" = "Editar"; +"EMAIL" = "EMail"; +"GROUP" = "Grupo"; +"GENERAL" = "General"; +"HOMEBANKING" = "Bancos"; +"INSPECTOR" = "Inspector"; +"INTERNET" = "Internet"; +"LOCK" = "Bloquear"; +"MODIFIED" = "Modificado"; +"NAME" = "Nombre"; +"NETWORK" = "Red"; +"NONE" = "Ninguno"; +"NOTES" = "Notas"; +"PASSWORD" = "Contraseña"; +"SAVE" = "Guardar"; +"SAVE_WITH_DOTS" = "Guardar…"; +"SEARCH" = "Buscar"; +"TITLE" = "Título"; +"TRASH" = "Papelera"; +"URL" = "URL"; +"USERNAME" = "Nombre de usuario"; +"WINDOWS" = "Ventanas"; + + +"CHANGE_DATABASE_NAME" = "Cambiar Nombre de Base"; +"CHANGE_TRASH_GROUP" = "Cambiar Grupo de Papelera"; +"%@_COPY" = "%@ Copiar"; + +"DUPLICTE_PASSWORDS" = "Duplicar Contraseñas"; + +/* Field nam that was copied to the pasteboard */ +"COPIED_FIELD_%@" = "%@ copiado"; +"COPIED_PASSWORD" = "Contraseña copiada"; +"COPIED_URL" = "URL copiada"; +"COPIED_USERNAME" = "Nombre de usuario copiado"; +"COPY_CUSTOM_FIELDS" = "Copiar Campos Personalizados"; +"COPY_FIELD_%@" = "Copiar %@"; +"COPY_PASSWORD" = "Copiar Contraseña"; +"COPY_URL" = "Copy URL"; +"COPY_USERNAME" = "Copiar Nombre de Usuario"; + +/* Dock Badge */ +"CLEARING_PASTEBOARD" = "…"; + +/* Group Inspector */ +/* Autotype Combobox */ +"AUTOTYPE_NO" = "Deshabilitar Autotype"; +"AUTOTYPE_YES" = "Habilitar Autotype"; +"AUTOTYPE_INHERIT" = "Heredar Configuración de Autotype"; + +/* Search Combobox */ +"SEARCH_INHERIT" = "Inherit Search Settings"; +"SEARCH_YES" = "Include in Search"; +"SEARCH_NO" = "Exclude from Search"; + +/* + Date/Time Displays + */ +/* Created at template string. %@ is replaced by localized date and time */ +"CREATED_AT_%@" = "Creado: %@"; +/* Modifed at template string. %@ is replaced by localized date and time */ +"MODIFED_AT_%@" = "Modificado: %@"; + +"EXPIRES_AT_DATE_%@" = "Expira: %@"; +"NO_EXPIRE_DATE_SET" = "No expira."; + +/* + Defaults for new objects + */ +"DEFAULT_CUSTOM_FIELD_TITLE" = "Personalizado"; +"DEFAULT_CUSTOM_FIELD_VALUE" = "Valor"; +"DEFAULT_ENTRY_TITLE" = "Nueva Entrada"; +"DEFAULT_GROUP_NAME" = "Nuevo Grupo"; +"DEFAULT_WINDOW_TITLE" = "Título de Ventana"; + +/* Number of Entries + Plural (0, >1) + Singular (1) + */ +"%ld_ENTRIES" = "%ld Entradas"; +"%ld_ENTRY" = "%ld Entrada"; + +/* Settings */ +"GENERAL_SETTINGS" = "General"; +"INTEGRATION_SETTINGS" = "Integración"; +"UPDATE_SETTINGS" = "Actualizaciones"; +"WORKFLOW_SETTINGS" = "Flujo de Trabajo"; +"DEFAULT_BROWSER" = "Navegador Predeterminado"; +"OTHER_BROWSER" = "Seleccionar Navegador…"; +"PLUGIN_SETTINGS" = "Plugins"; + +/* Feature not supported in Version */ +"KDBX_ONLY_FEATURE" = "Caraterística no soportada en base de datos KDB"; + +/* Template */ +"NO_TEMPLATE_GROUP" = "Sin plantillas"; +"NO_TEMPLATES" = "No se han encontrado Plantillas"; + +/* Kefile */ +"SAVE_KEYFILE" = "Guardar Keyfile"; + +/* Autoype */ +/* Candiate dialog */ +"SELECT_AUTOTYPE_CANDIDATE" = "Seleccionar candidato"; +"AUTOTYPE_OVERLAY_NO_DOCUMENTS" = "Please open a file to use Global Autotype!"; +"AUTOTYPE_OVERLAY_NO_MATCH_FOR_%@" = "No hay registros para %@!"; +"AUTOTYPE_OVERLAY_SINGLE_MATCH" = "Encontrado"; + +/* Alert Dialogs */ +"WARNING_ON_EMPTY_TRASH_DESCRIPTION" = "Vaciar la Papelera es una acción no reversible."; +"WARNING_ON_EMPTY_TRASH_TITLE" = "¿Vaciar Papelera?"; +"WARNING_ON_LOSSY_SAVE" = "Al guardar en formato KDB, se perderán algunos datos."; +"WARNING_ON_LOSSY_SAVE_DESCRIPTION" = "El formato de archivo KDB no permite guardar toda la información."; +"CHANGE_FORMAT" = "Cambiar formato de archivo a KDBX"; +"SAVE_LOSSY" = "Guardar y perder datos"; + +"ENFORCE_PASSWORD_CHANGE_ALERT_TITLE" = "La contraseña de la base de datos ha expirado"; +"ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "No será posible guardar cambios hsata que la contraseña o el keyfile sean modificados."; + +"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE" = "Por favor, cambia la contraseña para la base de datos."; +"RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION" = "Es recomendado cambiar la contraseña y/o el keyfile."; +"CHANGE_PASSWORD_WITH_DOTS" = "Cambiar Contraseña…"; + +"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET" = "No hay contraseña o keyfile establecido."; +"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION" = "Por favor genera una contraseña o un keyfile para esta base de datos. Al salir, se perderán todos los cambios y el documento quedará bloqueado."; + +/* Message displayed when an open file was changed from another application */ +"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT" = "El archivo de la base de datos ha sido modificado"; +/* Informative text displayed when the file was change form another application */ +"FILE_CHANGED_BY_OTHERS_INFO_TEXT" = "El archivo cargado no coincide con el guardado en el disco. ¿Deseas continuar?"; +/* Set the selection as default file change strategy */ +"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use the selected strategy and do not ask me again!"; +/* Always show a dialog after an external file change */ +"FILE_CHANGE_STRATEGY_ASK" = "Ask Me What to Do"; +/* Button to ignore the changes */ +"KEEP_MINE" = "Conservar versión actual y descartar cambios"; +/* Button to reload the changes form disk */ +"LOAD_CHANGES" = "Cargar archivo modificado"; +/* Merge changes into file! */ +"MERGE_CHANGES" = "Merge changes!"; + +/* Password Input Messages, Errors and Warning */ +"PASSWORD_INPUT_NO_PASSWORD" = "Sin Contraseña"; +"PASSWORD_INPUT_ENTER_PASSWORD" = "Ingresar Contraseña"; +"PASSWORD_INPUT_REPEAT_PASSWORD" = "Repetir Contraseña"; +"WARNING_NO_PASSWORD_OR_KEYFILE" = "Sin contraseña o keyfile"; +"ERROR_PASSWORD_MISSMATCH_INVALID_KEYFILE" = "Las contraseñas no coinciden y el keyfile no es válido"; +"ERROR_PASSWORD_MISSMATCH" = "Las contraseñas no coinciden"; +"ERROR_INVALID_KEYFILE" = "El Keyfile no es válido"; + +/* Misc */ +"DOCUMENT_AUTOTYPE_CORRUPTION_WARNING" = "Por favor ejecuta Corregir Autotype..."; +"FILE_OPEN_ERROR" = "Error al abrir el archivo."; diff --git a/MacPass/sp.lproj/MainMenu.strings b/MacPass/es.lproj/MainMenu.strings similarity index 100% rename from MacPass/sp.lproj/MainMenu.strings rename to MacPass/es.lproj/MainMenu.strings diff --git a/MacPass/sp.lproj/PasswordCreatorView.strings b/MacPass/es.lproj/PasswordCreatorView.strings similarity index 100% rename from MacPass/sp.lproj/PasswordCreatorView.strings rename to MacPass/es.lproj/PasswordCreatorView.strings diff --git a/MacPass/sp.lproj/PasswordEditWindow.strings b/MacPass/es.lproj/PasswordEditWindow.strings similarity index 100% rename from MacPass/sp.lproj/PasswordEditWindow.strings rename to MacPass/es.lproj/PasswordEditWindow.strings diff --git a/MacPass/sp.lproj/PasswordInputView.strings b/MacPass/es.lproj/PasswordInputView.strings similarity index 100% rename from MacPass/sp.lproj/PasswordInputView.strings rename to MacPass/es.lproj/PasswordInputView.strings diff --git a/MacPass/es.lproj/PluginSettings.strings b/MacPass/es.lproj/PluginSettings.strings new file mode 100644 index 00000000..64b67c39 --- /dev/null +++ b/MacPass/es.lproj/PluginSettings.strings @@ -0,0 +1,15 @@ + +/* 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" = "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."; + +/* Class = "NSButtonCell"; title = "Load unsecure Plugins"; ObjectID = "C4B-6z-ZqX"; */ +"C4B-6z-ZqX.title" = "Load unsecure Plugins"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "STt-PQ-Szr"; */ +"STt-PQ-Szr.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "fug-79-n9g"; */ +"fug-79-n9g.title" = "Table View Cell"; + +/* Class = "NSBox"; title = "Box"; ObjectID = "vBs-Ga-aq0"; */ +"vBs-Ga-aq0.title" = "Box"; diff --git a/MacPass/es.lproj/ReferenceBuilderView.strings b/MacPass/es.lproj/ReferenceBuilderView.strings new file mode 100644 index 00000000..ee482019 --- /dev/null +++ b/MacPass/es.lproj/ReferenceBuilderView.strings @@ -0,0 +1,27 @@ + +/* Class = "NSMenuItem"; title = "Get"; ObjectID = "142-bE-IMZ"; */ +"142-bE-IMZ.title" = "Get"; + +/* Class = "NSTextFieldCell"; title = "Match"; ObjectID = "9ce-da-syF"; */ +"9ce-da-syF.title" = "Match"; + +/* Class = "NSTextFieldCell"; title = "Key"; ObjectID = "K1t-OZ-ACe"; */ +"K1t-OZ-ACe.title" = "Key"; + +/* Class = "NSButtonCell"; title = "Use"; ObjectID = "Kqx-qm-nMG"; */ +"Kqx-qm-nMG.title" = "Use"; + +/* Class = "NSTextFieldCell"; placeholderString = "Reference"; ObjectID = "dr9-x8-kKk"; */ +"dr9-x8-kKk.placeholderString" = "Reference"; + +/* Class = "NSTextFieldCell"; placeholderString = "Value"; ObjectID = "fNP-ye-2bD"; */ +"fNP-ye-2bD.placeholderString" = "Value"; + +/* Class = "NSTextFieldCell"; title = "Reference String"; ObjectID = "gik-Ha-hRd"; */ +"gik-Ha-hRd.title" = "Reference String"; + +/* Class = "NSTextFieldCell"; title = "Reference"; ObjectID = "r1V-VE-ngy"; */ +"r1V-VE-ngy.title" = "Reference"; + +/* Class = "NSMenuItem"; title = "Matching"; ObjectID = "yT1-XL-k6a"; */ +"yT1-XL-k6a.title" = "Matching"; diff --git a/MacPass/sp.lproj/UpdateSettings.strings b/MacPass/es.lproj/UpdateSettings.strings similarity index 100% rename from MacPass/sp.lproj/UpdateSettings.strings rename to MacPass/es.lproj/UpdateSettings.strings diff --git a/MacPass/sp.lproj/WelcomeWindow.strings b/MacPass/es.lproj/WelcomeWindow.strings similarity index 100% rename from MacPass/sp.lproj/WelcomeWindow.strings rename to MacPass/es.lproj/WelcomeWindow.strings diff --git a/MacPass/sp.lproj/WorkflowSettings.strings b/MacPass/es.lproj/WorkflowSettings.strings similarity index 100% rename from MacPass/sp.lproj/WorkflowSettings.strings rename to MacPass/es.lproj/WorkflowSettings.strings diff --git a/MacPass/sp.lproj/Localizable.strings b/MacPass/sp.lproj/Localizable.strings deleted file mode 100644 index 4851e90d24acaf17410e34ac6cb2059b2886dd8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15060 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 diff --git a/MacPassTests/es.lproj/InfoPlist.strings b/MacPassTests/es.lproj/InfoPlist.strings new file mode 100644 index 00000000..477b28ff --- /dev/null +++ b/MacPassTests/es.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ +