diff --git a/CHANGELOG.md b/CHANGELOG.md index b0b03547..78623fe5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,25 @@ # Unreleased Changes +# 0.9 +#### New and Improved: +- Apps from the Mac App Store can be updated from within Latest +- Ignored Apps can be shown independent of installed apps +- Updates only show up if they are compatible with the installed operating system +- Show installed apps by default + +- Language Support for Czech (Thanks Lubos!) +- Language Support for Hungarian (Thanks Barczi!) +- Language Support for Indonesian (Thanks Adrian!) +- Language Support for Norwegian Bokmål (Thanks Sander!) +- Language Support for Persian (Thanks Shayan!) +- Language Support for Swedish (Thanks Tygyh & Peter!) +- Language Support for Ukrainian (Thanks Ihor!) + +#### Bug Fixes +- Tweaked Croatian localization (Thanks Milo!) +- Fixed empty app list when spotlight search is disabled (Thanks Mikhail!) +- Latest now remembers the width of the update list +- Fixed a crash with non-western arabic numerals in version numbers + # 0.8.3 - Language Support for Catalan (Thanks Maite!) - Language Support for Dutch (Thanks Eitot!) diff --git a/Frameworks/CommerceKit/CKAccountStore.h b/Frameworks/CommerceKit/CKAccountStore.h new file mode 100644 index 00000000..56add7ff --- /dev/null +++ b/Frameworks/CommerceKit/CKAccountStore.h @@ -0,0 +1,63 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class CKDemoAccount, CKStoreAccount, CKStoreClient, ISStoreAccount, NSArray; + +NS_ASSUME_NONNULL_BEGIN + +@interface CKAccountStore : NSObject +{ + CKStoreClient *_storeClient; +} + ++ (instancetype)sharedAccountStore; + ++ (id)accountStoreForStoreClient:(id)arg1; +@property(readonly) CKStoreClient *storeClient; // @synthesize storeClient=_storeClient; + +//- (void).cxx_destruct; +//- (void)getTouchIDStateForAccount:(id)arg1 completionBlock:(CDUnknownBlockType)arg2; +//- (void)setTouchIDStateForAccount:(id)arg1 state:(long long)arg2 completionBlock:(CDUnknownBlockType)arg3; +//- (void)updatePasswordSettings:(id)arg1 completionBlock:(CDUnknownBlockType)arg2; +//- (void)getPasswordSettingsWithCompletionBlock:(CDUnknownBlockType)arg1; +//- (void)getEligibilityForService:(long long)arg1 completionBlock:(CDUnknownBlockType)arg2; + +- (id)eligibilityForService:(long long)arg1; +- (void)viewAccount; + +//- (void)signInWithSuggestedAppleID:(id)arg1 allowChangeOfAppleID:(BOOL)arg2 completionHandler:(CDUnknownBlockType)arg3; + +- (void)signIn; +- (void)addAccount:(id)arg1; +@property(readonly) NSArray *accounts; +- (id)accountWithAppleID:(id)arg1; +- (id)accountForDSID:(id)arg1; +@property(readonly) ISStoreAccount *primaryAccount; +- (void)removePrimaryAccountObserver:(id)arg1; + +//- (id)addPrimaryAccountObserverWithBlock:(CDUnknownBlockType)arg1; + +- (id)initWithStoreClient:(id)arg1; +- (void)removeAccountObserver:(id)arg1; +- (id)addAccountObserver:(id)arg1; + +//- (void)signOutWithCompletionHandler:(CDUnknownBlockType)arg1; + +- (void)signOut; +- (id)storeAccountForAppleID:(id)arg1; +- (id)storeAccountForDSID:(id)arg1; +@property(readonly) BOOL primaryAccountIsPresentAndSignedIn; +@property(readonly) CKStoreAccount *primaryStoreAccount; +@property(readonly) CKDemoAccount *demoAccount; +@property(readonly) BOOL isDemoModeEnabled; +@property(readonly) NSArray *knownAccounts; +- (id)_initWithStoreClient:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/CommerceKit/CKDownloadDirectory.h b/Frameworks/CommerceKit/CKDownloadDirectory.h new file mode 100644 index 00000000..71a97e39 --- /dev/null +++ b/Frameworks/CommerceKit/CKDownloadDirectory.h @@ -0,0 +1,9 @@ +// +// CKDownloadDirectory.h +// mas-cli +// +// Created by Ben Chatelain on 7/8/18. +// Copyright © 2018 mas-cli. All rights reserved. +// + +NSString* CKDownloadDirectory(NSString *target); diff --git a/Frameworks/CommerceKit/CKDownloadQueue.h b/Frameworks/CommerceKit/CKDownloadQueue.h new file mode 100644 index 00000000..2e19643a --- /dev/null +++ b/Frameworks/CommerceKit/CKDownloadQueue.h @@ -0,0 +1,57 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#import "CKServiceInterface.h" + +@class CKDownloadQueueClient, NSArray, NSLock, NSMutableDictionary; + +@protocol CKDownloadQueueObserver; + +NS_ASSUME_NONNULL_BEGIN + +@interface CKDownloadQueue : CKServiceInterface +{ + NSMutableDictionary *_downloadsByItemID; + NSLock *_downloadsLock; + NSMutableDictionary *_downloadQueueObservers; + CKDownloadQueueClient *_sharedObserver; +} + ++ (instancetype)sharedDownloadQueue; + +@property(retain, nonatomic) CKDownloadQueueClient *sharedObserver; // @synthesize sharedObserver=_sharedObserver; +@property(retain, nonatomic) NSMutableDictionary *downloadQueueObservers; // @synthesize downloadQueueObservers=_downloadQueueObservers; + +//- (void).cxx_destruct; + +- (BOOL)cacheReceiptDataForDownload:(id)arg1; +- (void)checkStoreDownloadQueueForAccount:(id)arg1; +- (void)lockedApplicationTriedToLaunchAtPath:(id)arg1; +- (void)unlockApplicationsWithBundleIdentifier:(id)arg1; +- (void)lockApplicationsForBundleID:(id)arg1; +- (void)performedIconAnimationForDownloadWithIdentifier:(unsigned long long)arg1; + +//- (void)fetchIconForItemIdentifier:(unsigned long long)arg1 atURL:(id)arg2 replyBlock:(CDUnknownBlockType)arg3; + +- (void)removeDownloadWithItemIdentifier:(unsigned long long)arg1; +- (void)cancelDownload:(id)arg1 promptToConfirm:(BOOL)arg2 askToDelete:(BOOL)arg3; +- (void)resumeDownloadWithItemIdentifier:(unsigned long long)arg1; +- (void)pauseDownloadWithItemIdentifier:(unsigned long long)arg1; +- (void)addDownload:(id)arg1; +- (id)downloadForItemIdentifier:(unsigned long long)arg1; +@property(readonly, nonatomic) NSArray *downloads; // @dynamic downloads; +- (void)removeObserver:(id)arg1; +- (id)addObserver:(id)arg1; +- (id)addObserver:(id)arg1 forDownloadTypes:(long long)arg2; + +// - (id)addObserverForDownloadTypes:(long long)arg1 withBlock:(CDUnknownBlockType)arg2; + +- (void)connectionWasInterrupted; +- (id)initWithStoreClient:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/CommerceKit/CKDownloadQueueObserver.h b/Frameworks/CommerceKit/CKDownloadQueueObserver.h new file mode 100644 index 00000000..976d2a51 --- /dev/null +++ b/Frameworks/CommerceKit/CKDownloadQueueObserver.h @@ -0,0 +1,18 @@ +// +// CKDownloadQueueObserver.h +// mas-cli +// +// Created by Ben Chatelain on 7/8/18. +// Copyright © 2018 mas-cli. All rights reserved. +// + +#import "CKDownloadQueue.h" +@import StoreFoundation; + +@protocol CKDownloadQueueObserver + +- (void)downloadQueue:(CKDownloadQueue *)downloadQueue changedWithAddition:(SSDownload *)download; +- (void)downloadQueue:(CKDownloadQueue *)downloadQueue changedWithRemoval:(SSDownload *)download; +- (void)downloadQueue:(CKDownloadQueue *)downloadQueue statusChangedForDownload:(SSDownload *)download; + +@end diff --git a/Frameworks/CommerceKit/CKPurchaseController.h b/Frameworks/CommerceKit/CKPurchaseController.h new file mode 100644 index 00000000..f6e3a8e0 --- /dev/null +++ b/Frameworks/CommerceKit/CKPurchaseController.h @@ -0,0 +1,48 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#import "CKServiceInterface.h" + +@class NSArray, NSMutableArray, NSNumber; + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^SSPurchaseCompletion)(SSPurchase * _Nullable purchase, BOOL completed, NSError * _Nullable error, SSPurchaseResponse * _Nullable response); + +@interface CKPurchaseController : CKServiceInterface +{ + NSMutableArray *_purchases; + NSMutableArray *_rejectedPurchases; + NSArray *_adoptionEligibleItems; + NSNumber *_adoptionServerStatus; + NSNumber *_adoptionErrorNumber; + + // CDUnknownBlockType _dialogHandler; +} + ++ (void)setNeedsSilentMachineAuthorization:(BOOL)arg1; + ++ (instancetype)sharedPurchaseController; + +//@property(copy) CDUnknownBlockType dialogHandler; // @synthesize dialogHandler=_dialogHandler; +//- (void).cxx_destruct; + +- (BOOL)adoptionCompletedForBundleID:(id)arg1; +- (void)_performVPPReceiptRenewal; +- (void)checkServerDownloadQueue; +- (id)purchaseInProgressForProductID:(id)arg1; +- (id)purchasesInProgress; +- (void)cancelPurchaseWithProductID:(id)arg1; +- (void)resumeDownloadForPurchasedProductID:(id)arg1; + +//- (void)startPurchases:(id)arg1 shouldStartDownloads:(BOOL)arg2 eventHandler:(CDUnknownBlockType)arg3; +//- (void)startPurchases:(id)arg1 withOptions:(unsigned long long)arg2 completionHandler:(CDUnknownBlockType)arg3; + +- (void)performPurchase:(SSPurchase *)purchase withOptions:(unsigned long long)arg2 completionHandler:(SSPurchaseCompletion _Nullable)completionHandler; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/CommerceKit/CKServiceInterface.h b/Frameworks/CommerceKit/CKServiceInterface.h new file mode 100644 index 00000000..14a26394 --- /dev/null +++ b/Frameworks/CommerceKit/CKServiceInterface.h @@ -0,0 +1,14 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#import "ISServiceProxy.h" + +@interface CKServiceInterface : ISServiceProxy +{ +} + +@end + diff --git a/Frameworks/CommerceKit/CKSoftwareMap.h b/Frameworks/CommerceKit/CKSoftwareMap.h new file mode 100644 index 00000000..ecfcbace --- /dev/null +++ b/Frameworks/CommerceKit/CKSoftwareMap.h @@ -0,0 +1,55 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#import "CKServiceInterface.h" + +@class CKSoftwareMapObserver, NSMutableDictionary; + +NS_ASSUME_NONNULL_BEGIN + +@interface CKSoftwareMap : CKServiceInterface +{ + NSMutableDictionary *_productsObservers; + CKSoftwareMapObserver *_sharedObserver; +} + ++ (instancetype)sharedSoftwareMap; +@property(retain, nonatomic) CKSoftwareMapObserver *sharedObserver; // @synthesize sharedObserver=_sharedObserver; +@property(retain, nonatomic) NSMutableDictionary *productsObservers; // @synthesize productsObservers=_productsObservers; + +//- (void).cxx_destruct; + +// Added 10.14.4 +//- (void)startAdoptionEligibilityCheckWithReplyBlock:(CDUnknownBlockType)arg1; + +// Added 10.14.4 +- (id)adopt:(id)arg1; +- (id)adoptableBundleIdentifiers; + +- (BOOL)adoptionCompletedForBundleID:(id)arg1 adoptingDSID:(out _Nullable id * _Nullable)arg2 appleID:(out _Nullable id * _Nullable)arg3; + +- (id)updateRequestBodyData:(char *)arg1 includeInstalledApps:(BOOL)arg2 includeBundledApps:(BOOL)arg3 conditionally:(BOOL)arg4 hadUnadoptedApps:(out char *)arg5; +- (id)iconForApplicationWithBundeID:(id)arg1; +- (id)bundleInfoFromBundleAtPath:(id)arg1; +- (BOOL)isTrialVersionOfBundleIdentifier:(id)arg1; +- (id)receiptFromBundleAtPath:(id)arg1; +- (id)productForPath:(id)arg1; + +- (NSArray* __nullable)allProducts; +- (CKSoftwareProduct *)productForItemIdentifier:(unsigned long long)arg1; +- (nullable CKSoftwareProduct *)productForBundleIdentifier:(NSString *)arg1; + +- (void)removeProductsObserverForToken:(id)arg1; + +// - (id)addProductsObserver:(CDUnknownBlockType)arg1 queue:(id)arg2; + +- (void)connectionWasInterrupted; + +- (instancetype)initWithStoreClient:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/CommerceKit/module.modulemap b/Frameworks/CommerceKit/module.modulemap new file mode 100644 index 00000000..2ff442f9 --- /dev/null +++ b/Frameworks/CommerceKit/module.modulemap @@ -0,0 +1,14 @@ +// +// CommerceKit.module +// mas-cli +// + +module CommerceKit { + header "CKAccountStore.h" + header "CKDownloadDirectory.h" + header "CKDownloadQueueObserver.h" + header "CKPurchaseController.h" + header "CKSoftwareMap.h" + + export * +} diff --git a/Frameworks/StoreFoundation/CKSoftwareProduct.h b/Frameworks/StoreFoundation/CKSoftwareProduct.h new file mode 100644 index 00000000..f4939e80 --- /dev/null +++ b/Frameworks/StoreFoundation/CKSoftwareProduct.h @@ -0,0 +1,93 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSDate, NSNumber, NSString, NSValue; + +NS_ASSUME_NONNULL_BEGIN + +@interface CKSoftwareProduct : NSObject +{ + BOOL _installed; + BOOL _isVPPLicensed; + BOOL _vppLicenseRevoked; + BOOL _isMachineLicensed; + BOOL _isLegacyApp; + BOOL _metadataChangeIsExpected; + // Added 10.14.4 + BOOL _metadataChangeHasAlreadyOccurred; + NSString *_accountOpaqueDSID; + NSString *_accountIdentifier; + // Added 10.14.4 + NSString *_appName; + NSString *_bundleIdentifier; + NSString *_bundleVersion; + NSString *_bundlePath; + NSString *_receiptType; + NSNumber *_itemIdentifier; + NSNumber *_storeFrontIdentifier; + NSNumber *_versionIdentifier; + NSDate *_purchaseDate; + NSValue *_mdItemRef; + NSString *_vppLicenseOrganizationName; + NSDate *_vppLicenseExpirationDate; + NSDate *_vppLicenseRenewalDate; + NSString *_vppLicenseCancellationReason; + long long _source; + NSString *_expectedBundleVersion; + NSNumber *_expectedStoreVersion; +} + ++ (nullable instancetype)createSoftwareProductForAppAtPath:(nonnull NSString *)arg1; ++ (nullable instancetype)productPathToUpgradeForBundleIdentifier:(nonnull NSString *)bundleIdentifier versionNumberString:(nonnull NSString *)versionNumber; + ++ (BOOL)supportsSecureCoding; + +@property(copy, nullable) NSNumber *expectedStoreVersion; // @synthesize expectedStoreVersion=_expectedStoreVersion; +@property(copy, nullable) NSString *expectedBundleVersion; // @synthesize expectedBundleVersion=_expectedBundleVersion; + +// Added 10.14.4 +@property BOOL metadataChangeHasAlreadyOccurred; // @synthesize metadataChangeHasAlreadyOccurred=_metadataChangeHasAlreadyOccurred; +@property BOOL metadataChangeIsExpected; // @synthesize metadataChangeIsExpected=_metadataChangeIsExpected; +@property long long source; // @synthesize source=_source; +@property BOOL isLegacyApp; // @synthesize isLegacyApp=_isLegacyApp; +@property BOOL isMachineLicensed; // @synthesize isMachineLicensed=_isMachineLicensed; + +@property(retain, nullable) NSString *vppLicenseCancellationReason; // @synthesize vppLicenseCancellationReason=_vppLicenseCancellationReason; +@property(retain, nullable) NSDate *vppLicenseRenewalDate; // @synthesize vppLicenseRenewalDate=_vppLicenseRenewalDate; +@property(retain, nullable) NSDate *vppLicenseExpirationDate; // @synthesize vppLicenseExpirationDate=_vppLicenseExpirationDate; +@property(retain, nullable) NSString *vppLicenseOrganizationName; // @synthesize vppLicenseOrganizationName=_vppLicenseOrganizationName; + +@property BOOL vppLicenseRevoked; // @synthesize vppLicenseRevoked=_vppLicenseRevoked; +@property BOOL isVPPLicensed; // @synthesize isVPPLicensed=_isVPPLicensed; +@property BOOL installed; // @synthesize installed=_installed; +@property(retain) NSValue *mdItemRef; // @synthesize mdItemRef=_mdItemRef; +@property(retain) NSDate *purchaseDate; // @synthesize purchaseDate=_purchaseDate; +@property(retain) NSNumber *versionIdentifier; // @synthesize versionIdentifier=_versionIdentifier; +@property(retain) NSNumber *storeFrontIdentifier; // @synthesize storeFrontIdentifier=_storeFrontIdentifier; +@property(retain) NSNumber *itemIdentifier; // @synthesize itemIdentifier=_itemIdentifier; +@property(retain) NSString *receiptType; // @synthesize receiptType=_receiptType; +@property(retain) NSString *bundlePath; // @synthesize bundlePath=_bundlePath; +@property(retain) NSString *bundleVersion; // @synthesize bundleVersion=_bundleVersion; +@property(retain) NSString *bundleIdentifier; // @synthesize bundleIdentifier=_bundleIdentifier; + +@property(retain, nonnull) NSString *appName; // @synthesize appName=_appName; + +@property(retain) NSString *accountIdentifier; // @synthesize accountIdentifier=_accountIdentifier; +@property(retain) NSString *accountOpaqueDSID; // @synthesize accountOpaqueDSID=_accountOpaqueDSID; + +//- (void).cxx_destruct; + +- (instancetype)copyWithZone:(nullable NSZone *)zone; +- (nullable instancetype)initWithCoder:(nonnull NSCoder *)coder; +- (void)encodeWithCoder:(nonnull NSCoder *)coder; +- (nonnull NSString *)description; +@property(readonly, nullable) NSString *sourceString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/CKUpdate.h b/Frameworks/StoreFoundation/CKUpdate.h new file mode 100644 index 00000000..f99b14e0 --- /dev/null +++ b/Frameworks/StoreFoundation/CKUpdate.h @@ -0,0 +1,46 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSDate, NSDictionary, NSMutableDictionary, NSNumber, NSString, SSPurchase; + +NS_ASSUME_NONNULL_BEGIN + +@interface CKUpdate : NSObject +{ + NSMutableDictionary *_dictionary; + long long _softwareUpdateState; +} + ++ (BOOL)supportsSecureCoding; +@property(nonatomic) long long softwareUpdateState; // @synthesize softwareUpdateState=_softwareUpdateState; +@property(readonly) NSDictionary *dictionary; // @synthesize dictionary=_dictionary; + +//- (void).cxx_destruct; + +@property(readonly, nonatomic) NSString *autoUpdateAbortReason; +@property(nonatomic) BOOL hasBeenSeenByUser; +@property(readonly, nonatomic) BOOL didFailToAutoInstall; +- (double)_autoInstallUpdateMaximumRetryInterval; +@property(copy, nonatomic) NSDate *firstAutoUpdateAttemptDate; +@property(nonatomic) long long autoUpdateAbortCode; +@property(nonatomic) BOOL isStaged; +- (id)description; +@property(readonly, nonatomic) NSString *title; +@property(readonly, nonatomic) NSDate *releaseDate; +@property(readonly, nonatomic) NSString *bundleVersion; // @dynamic bundleVersion; +@property(readonly, nonatomic) NSString *bundleID; // @dynamic bundleID; +@property(readonly, nonatomic) NSString *actionParams; // @dynamic actionParams; +@property(readonly, nonatomic) NSNumber *itemIdentifier; // @dynamic itemIdentifier; +@property(readonly, nonatomic) SSPurchase *purchase; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithDictionary:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISAccountService.h b/Frameworks/StoreFoundation/ISAccountService.h new file mode 100644 index 00000000..d2b96e0b --- /dev/null +++ b/Frameworks/StoreFoundation/ISAccountService.h @@ -0,0 +1,60 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#import "ISServiceRemoteObject.h" + +@class ISAuthenticationResponse, ISStoreAccount, NSDictionary, NSNumber, NSString, NSURL, NSURLRequest, NSURLResponse; + +@class ISAuthenticationContext; +@class NSURLRequest; + +NS_ASSUME_NONNULL_BEGIN + +@protocol ISAccountService +- (void)recommendedAppleIDForAccountSignIn:(void (^)(NSString *))arg1; +- (void)iCloudDSIDReplyBlock:(void (^)(NSString *))arg1; +- (void)setStoreFrontID:(NSString *)arg1; +- (void)storeFrontWithReplyBlock:(void (^)(NSString *))arg1; +- (void)shouldSendGUIDWithRequestForURL:(NSURL *)arg1 withReplyBlock:(void (^)(BOOL))arg2; +- (void)processURLResponse:(NSURLResponse *)arg1 forRequest:(NSURLRequest *)arg2; +- (void)httpHeadersForURL:(NSURL *)arg1 forDSID:(NSNumber *)arg2 includeADIHeaders:(BOOL)arg3 withReplyBlock:(void (^)(NSDictionary *))arg4; + +// - (void)removeURLBagObserver:(id )arg1; +// - (void)addURLBagObserver:(id )arg1; +// - (void)dictionaryWithReplyBlock:(void (^)(NSDictionary *))arg1; +// - (void)isValidWithReplyBlock:(void (^)(BOOL))arg1; +// - (void)regexWithKey:(NSString *)arg1 matchesString:(NSString *)arg2 replyBlock:(void (^)(BOOL))arg3; +// - (void)invalidateAllBags; +// - (void)loadURLBagWithType:(unsigned long long)arg1 replyBlock:(void (^)(BOOL, BOOL, NSError *))arg2; +// - (void)needsSilentADIActionForURL:(NSURL *)arg1 withReplyBlock:(void (^)(BOOL))arg2; +// - (void)urlIsTrustedByURLBag:(NSURL *)arg1 withReplyBlock:(void (^)(BOOL))arg2; +// - (void)valueForURLBagKey:(NSString *)arg1 withReplyBlock:(void (^)(id))arg2; + +- (void)getTouchIDPreferenceWithReplyBlock:(void (^)(BOOL, ISStoreAccount *, NSError *))arg1; +- (void)updateTouchIDSettingsForDSID:(NSNumber *)arg1 replyBlock:(void (^)(BOOL, NSError *))arg2; +- (void)setTouchIDState:(long long)arg1 forDSID:(NSNumber *)arg2 replyBlock:(void (^)(BOOL, NSError *))arg3; +- (void)generateTouchIDHeadersForDSID:(NSNumber *)arg1 challenge:(NSString *)arg2 caller:(id)arg3 replyBlock:(void (^)(NSDictionary *, NSError *))arg4; +- (void)retailStoreDemoModeReplyBlock:(void (^)(BOOL, NSString *, NSString *, BOOL))arg1; + +// - (void)removeAccountStoreObserver:(id )arg1; +// - (void)addAccountStoreObserver:(id )arg1; +// - (void)parseCreditStringForProtocol:(NSDictionary *)arg1; + +- (void)signOut; + +// This method was removed in macOS High Sierra +// https://github.com/mas-cli/mas/issues/107 +- (void)signInWithContext:(ISAuthenticationContext * __nonnull)arg1 replyBlock:(void (^ __nonnull)(BOOL, ISStoreAccount * __nullable, NSError * __nullable))arg2 NS_DEPRECATED_MAC(10_9, 10.12); + +- (void)addAccount:(ISStoreAccount *)arg1; +- (void)addAccountWithAuthenticationResponse:(ISAuthenticationResponse *)arg1 makePrimary:(BOOL)arg2 replyBlock:(void (^)(ISStoreAccount *))arg3; +- (void)accountWithAppleID:(NSString *)arg1 replyBlock:(void (^)(ISStoreAccount *))arg2; +- (void)accountWithDSID:(NSNumber *)arg1 replyBlock:(void (^)(ISStoreAccount *))arg2; +- (void)primaryAccountWithReplyBlock:(void (^)(ISStoreAccount *))arg1; +- (void)authIsExpiredWithReplyBlock:(void (^)(BOOL))arg1; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISAuthenticationContext.h b/Frameworks/StoreFoundation/ISAuthenticationContext.h new file mode 100644 index 00000000..539a4a87 --- /dev/null +++ b/Frameworks/StoreFoundation/ISAuthenticationContext.h @@ -0,0 +1,60 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSDictionary, NSNumber, NSString; + +NS_ASSUME_NONNULL_BEGIN + +@interface ISAuthenticationContext : NSObject +{ + NSNumber *_accountID; + NSDictionary *_additionalQueryParameters; + NSDictionary *_dialogDictionary; + long long _bagType; + NSDictionary *_signUpQueryParameters; + BOOL _shouldFollowAccountButtons; + long long _style; + BOOL _useCachedCredentials; + long long _authenticationReason; + NSString *_appleIDOverride; + BOOL _enforceAppleIDOverride; + NSString *_applicationName; + BOOL _demoMode; + BOOL _demoAutologinMode; + NSString *_demoAccountName; + NSString *_demoAccountPassword; +} + ++ (BOOL)supportsSecureCoding; +@property(retain) NSString *demoAccountPassword; // @synthesize demoAccountPassword=_demoAccountPassword; +@property(retain) NSString *demoAccountName; // @synthesize demoAccountName=_demoAccountName; +@property BOOL demoAutologinMode; // @synthesize demoAutologinMode=_demoAutologinMode; +@property BOOL demoMode; // @synthesize demoMode=_demoMode; +@property(retain) NSDictionary *dialogDictionary; // @synthesize dialogDictionary=_dialogDictionary; +@property(retain) NSString *applicationName; // @synthesize applicationName=_applicationName; +@property BOOL enforceAppleIDOverride; // @synthesize enforceAppleIDOverride=_enforceAppleIDOverride; +@property(retain) NSString *appleIDOverride; // @synthesize appleIDOverride=_appleIDOverride; +@property long long authenticationReason; // @synthesize authenticationReason=_authenticationReason; +@property BOOL useCachedCredentials; // @synthesize useCachedCredentials=_useCachedCredentials; +@property BOOL shouldFollowAccountButtons; // @synthesize shouldFollowAccountButtons=_shouldFollowAccountButtons; +@property(retain) NSDictionary *signUpQueryParameters; // @synthesize signUpQueryParameters=_signUpQueryParameters; +@property long long bagType; // @synthesize bagType=_bagType; +@property long long authenticationStyle; // @synthesize authenticationStyle=_style; +@property(retain) NSDictionary *additionalQueryParameters; // @synthesize additionalQueryParameters=_additionalQueryParameters; +@property(readonly) NSNumber *accountID; // @synthesize accountID=_accountID; + +//- (void).cxx_destruct; + +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)initWithAccountID:(id)arg1; +- (id)init; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISAuthenticationResponse.h b/Frameworks/StoreFoundation/ISAuthenticationResponse.h new file mode 100644 index 00000000..1084e3c1 --- /dev/null +++ b/Frameworks/StoreFoundation/ISAuthenticationResponse.h @@ -0,0 +1,43 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@class NSNumber, NSString; + +NS_ASSUME_NONNULL_BEGIN + +@interface ISAuthenticationResponse : NSObject +{ + NSString *_token; + unsigned long long _urlBagType; + NSString *_storeFront; + BOOL _isManagedStudent; + unsigned long long _URLBagType; + NSString *_accountIdentifier; + long long _accountKind; + NSString *_creditString; + NSNumber *_dsID; +} + ++ (BOOL)supportsSecureCoding; +@property(readonly) BOOL isManagedStudent; // @synthesize isManagedStudent=_isManagedStudent; +@property(readonly) NSString *storeFront; // @synthesize storeFront=_storeFront; +@property(readonly) NSString *token; // @synthesize token=_token; +@property(readonly) NSNumber *dsID; // @synthesize dsID=_dsID; +@property(readonly) NSString *creditString; // @synthesize creditString=_creditString; +@property(readonly) long long accountKind; // @synthesize accountKind=_accountKind; +@property(readonly) NSString *accountIdentifier; // @synthesize accountIdentifier=_accountIdentifier; +@property unsigned long long URLBagType; // @synthesize URLBagType=_URLBagType; + +//- (void).cxx_destruct; + +- (BOOL)_loadFromDictionary:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithDictionary:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISServiceProxy.h b/Frameworks/StoreFoundation/ISServiceProxy.h new file mode 100644 index 00000000..f693e67e --- /dev/null +++ b/Frameworks/StoreFoundation/ISServiceProxy.h @@ -0,0 +1,63 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class ISStoreClient, Protocol; + +@protocol ISAccountService; + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^ISErrorHandler)(NSError * __nonnull error); + +@interface ISServiceProxy : NSObject +{ + ISStoreClient *_storeClient; +} + ++ (ISServiceProxy * __nonnull)genericSharedProxy; + ++ (void)initialize; + +@property(retain, nonatomic, nullable) ISStoreClient *storeClient; // @synthesize storeClient=_storeClient; + +//- (void).cxx_destruct; +//- (void)uiServiceSynchronousBlock:(CDUnknownBlockType)arg1; +//@property(readonly, nonatomic) id uiService; +//- (id)uiServiceWithErrorHandler:(CDUnknownBlockType)arg1; +//- (void)inAppServiceSynchronousBlock:(CDUnknownBlockType)arg1; +//@property(readonly, nonatomic) id inAppService; +//- (id)inAppServiceWithErrorHandler:(CDUnknownBlockType)arg1; +//- (void)transactionServiceSynchronousBlock:(CDUnknownBlockType)arg1; +//@property(readonly, nonatomic) id transactionService; +//- (id)transactionServiceWithErrorHandler:(CDUnknownBlockType)arg1; +//- (void)assetServiceSynchronousBlock:(CDUnknownBlockType)arg1; +//@property(readonly, nonatomic) id assetService; +//- (id)assetServiceWithErrorHandler:(CDUnknownBlockType)arg1; +//- (void)downloadServiceSynchronousBlock:(CDUnknownBlockType)arg1; +//@property(readonly, nonatomic) id downloadService; +//- (id)downloadServiceWithErrorHandler:(CDUnknownBlockType)arg1; +//- (void)accountServiceSynchronousBlock:(CDUnknownBlockType)arg1; + +@property(readonly, nonatomic) id accountService; + +//- (id)accountServiceWithErrorHandler:(CDUnknownBlockType)arg1; + +- (void)connectionWasInterrupted; +- (void)registerForInterrptionNotification; + +//- (void)performSynchronousBlock:(CDUnknownBlockType)arg1 withServiceName:(id)arg2 protocol:(id)arg3 isMachService:(BOOL)arg4 interfaceClassName:(id)arg5; +//- (id)objectProxyForServiceName:(id)arg1 protocol:(id)arg2 interfaceClassName:(id)arg3 isMachService:(BOOL)arg4 errorHandler:(CDUnknownBlockType)arg5; +//- (id)connectionWithServiceName:(id)arg1 protocol:(id)arg2 isMachService:(BOOL)arg3; +//@property(readonly, nonatomic) Protocol *exportedProtocol; +//@property(readonly, nonatomic) __weak id exportedObject; + +- (ISServiceProxy * __nonnull)initWithStoreClient:(ISStoreClient * __nonnull)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISServiceRemoteObject.h b/Frameworks/StoreFoundation/ISServiceRemoteObject.h new file mode 100644 index 00000000..f4a247a5 --- /dev/null +++ b/Frameworks/StoreFoundation/ISServiceRemoteObject.h @@ -0,0 +1,16 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@class ISStoreClient; + +NS_ASSUME_NONNULL_BEGIN + +@protocol ISServiceRemoteObject +- (void)startService; +- (void)setStoreClient:(ISStoreClient *)arg1; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISStoreAccount.h b/Frameworks/StoreFoundation/ISStoreAccount.h new file mode 100644 index 00000000..567c7a90 --- /dev/null +++ b/Frameworks/StoreFoundation/ISStoreAccount.h @@ -0,0 +1,66 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSDate, NSNumber, NSString, NSTimer; + +NS_ASSUME_NONNULL_BEGIN + +@interface ISStoreAccount : NSObject +{ + NSTimer *_tokenInvalidTimer; + BOOL _isSignedIn; + BOOL _isManagedStudent; + BOOL _primary; + long long _touchIDState; + NSNumber *_dsID; + NSString *_identifier; + long long _kind; + NSString *_creditString; + NSString *_storeFront; + NSString *_password; + NSString *_token; + long long _URLBagType; + NSDate *_tokenIssuedDate; + NSTimer *_tokenExpirationTimer; +} + ++ (id)migratePersistedStoreDictionary:(id)arg1; ++ (id)dsidFromPlistValue:(id)arg1; ++ (BOOL)supportsSecureCoding; +@property(readonly, getter=isPrimary) BOOL primary; // @synthesize primary=_primary; +@property(retain) NSTimer *tokenExpirationTimer; // @synthesize tokenExpirationTimer=_tokenExpirationTimer; +@property(retain) NSDate *tokenIssuedDate; // @synthesize tokenIssuedDate=_tokenIssuedDate; +@property long long URLBagType; // @synthesize URLBagType=_URLBagType; +@property(copy) NSString *token; // @synthesize token=_token; +@property(copy) NSString *password; // @synthesize password=_password; +@property BOOL isManagedStudent; // @synthesize isManagedStudent=_isManagedStudent; +@property BOOL isSignedIn; // @synthesize isSignedIn=_isSignedIn; +@property(retain) NSString *storeFront; // @synthesize storeFront=_storeFront; +@property(copy) NSString *creditString; // @synthesize creditString=_creditString; +@property long long kind; // @synthesize kind=_kind; +@property(copy) NSString *identifier; // @synthesize identifier=_identifier; +@property(copy) NSNumber *dsID; // @synthesize dsID=_dsID; + +//- (void).cxx_destruct; + +- (long long)getTouchIDState; +@property long long touchIDState; // @synthesize touchIDState=_touchIDState; +- (void)resetTouchIDState; +- (void)mergeValuesFromAuthenticationResponse:(id)arg1; +- (BOOL)hasValidStrongToken; +- (double)strongTokenValidForSecond; +- (id)description; +@property(readonly, getter=isAuthenticated) BOOL authenticated; +- (id)persistedStoreDictionary; +- (id)initWithPersistedStoreDictionary:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/ISStoreClient.h b/Frameworks/StoreFoundation/ISStoreClient.h new file mode 100644 index 00000000..fedf225f --- /dev/null +++ b/Frameworks/StoreFoundation/ISStoreClient.h @@ -0,0 +1,85 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class ISStoreAccount, NSArray, NSDictionary, NSString; + +NS_ASSUME_NONNULL_BEGIN + +@interface ISStoreClient : NSObject +{ + BOOL __alwaysUseSandboxEnvironment; + BOOL _isDaemon; + int _pid; + unsigned long long _frameworkVersion; + NSString *_identifier; + long long _clientType; + ISStoreAccount *_primaryAccount; + NSString *_userAgentAppName; + NSString *_userAgentAppVersion; + NSString *_agentPreferencesDomain; + NSString *_appPreferencesDomain; + NSString *_storeFrontBagKey; + NSArray *_productionBagURLs; + NSArray *_sandboxBagURLs; + NSString *_toolbarBagKey; + long long _requiredBagType; + NSString *_aslDomain; + NSString *_storeURLScheme; + NSString *_storeSecureURLScheme; + NSString *_tempPathClientIdentifier; + long long _mediaTypeMask; + NSString *_pushServiceName; + NSString *_appPath; + NSDictionary *_daap; + NSString *_displayUIHostID; + NSString *_agentListenerName; +} + ++ (id)knownClientWithIdentifier:(id)arg1 frameworkVersion:(id)arg2; ++ (BOOL)supportsSecureCoding; +@property BOOL isDaemon; // @synthesize isDaemon=_isDaemon; +@property(copy) NSString *agentListenerName; // @synthesize agentListenerName=_agentListenerName; +@property(readonly) int pid; // @synthesize pid=_pid; +@property(copy) NSString *displayUIHostID; // @synthesize displayUIHostID=_displayUIHostID; +@property(copy) NSDictionary *daap; // @synthesize daap=_daap; +@property(copy) NSString *appPath; // @synthesize appPath=_appPath; +@property(copy) NSString *pushServiceName; // @synthesize pushServiceName=_pushServiceName; +@property long long mediaTypeMask; // @synthesize mediaTypeMask=_mediaTypeMask; +@property(copy) NSString *tempPathClientIdentifier; // @synthesize tempPathClientIdentifier=_tempPathClientIdentifier; +@property(copy) NSString *storeSecureURLScheme; // @synthesize storeSecureURLScheme=_storeSecureURLScheme; +@property(copy) NSString *storeURLScheme; // @synthesize storeURLScheme=_storeURLScheme; +@property(setter=_setAlwaysUseSandboxEnvironment:) BOOL _alwaysUseSandboxEnvironment; // @synthesize _alwaysUseSandboxEnvironment=__alwaysUseSandboxEnvironment; +@property(copy) NSString *aslDomain; // @synthesize aslDomain=_aslDomain; +@property long long requiredBagType; // @synthesize requiredBagType=_requiredBagType; +@property(copy) NSString *toolbarBagKey; // @synthesize toolbarBagKey=_toolbarBagKey; +@property(copy) NSArray *sandboxBagURLs; // @synthesize sandboxBagURLs=_sandboxBagURLs; +@property(copy) NSArray *productionBagURLs; // @synthesize productionBagURLs=_productionBagURLs; +@property(copy) NSString *storeFrontBagKey; // @synthesize storeFrontBagKey=_storeFrontBagKey; +@property(copy) NSString *appPreferencesDomain; // @synthesize appPreferencesDomain=_appPreferencesDomain; +@property(copy) NSString *agentPreferencesDomain; // @synthesize agentPreferencesDomain=_agentPreferencesDomain; +@property(copy) NSString *userAgentAppVersion; // @synthesize userAgentAppVersion=_userAgentAppVersion; +@property(copy) NSString *userAgentAppName; // @synthesize userAgentAppName=_userAgentAppName; +@property(copy) ISStoreAccount *primaryAccount; // @synthesize primaryAccount=_primaryAccount; +@property long long clientType; // @synthesize clientType=_clientType; +@property(copy) NSString *identifier; // @synthesize identifier=_identifier; +@property unsigned long long frameworkVersion; // @synthesize frameworkVersion=_frameworkVersion; + +//- (void).cxx_destruct; + +- (id)callerIdentity; +- (BOOL)isEqualToStoreClient:(id)arg1; +- (void)_cacheKnownClient:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithApplicationPath:(id)arg1; +- (id)initWithStoreClientType:(long long)arg1; +- (id)init; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/SSDownload.h b/Frameworks/StoreFoundation/SSDownload.h new file mode 100644 index 00000000..827d425d --- /dev/null +++ b/Frameworks/StoreFoundation/SSDownload.h @@ -0,0 +1,65 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSArray, NSNumber, NSString, NSURL, SSDownloadMetadata, SSDownloadStatus; + +@interface SSDownload : NSObject +{ + BOOL _needsPreInstallValidation; + BOOL _installAfterLogout; + BOOL _didAutoUpdate; + BOOL _skipAssetDownloadIfNotAlreadyOnDisk; + BOOL _needsDisplayInDock; + BOOL _isInServerQueue; + NSArray *_assets; + SSDownloadMetadata *_metadata; + SSDownloadStatus *_status; + unsigned long long _downloadType; + NSNumber *_accountDSID; + NSString *_cancelURLString; + NSString *_installPath; + NSURL *_relaunchAppWithBundleURL; +} + ++ (BOOL)supportsSecureCoding; +@property BOOL isInServerQueue; // @synthesize isInServerQueue=_isInServerQueue; +@property BOOL needsDisplayInDock; // @synthesize needsDisplayInDock=_needsDisplayInDock; +@property BOOL skipAssetDownloadIfNotAlreadyOnDisk; // @synthesize skipAssetDownloadIfNotAlreadyOnDisk=_skipAssetDownloadIfNotAlreadyOnDisk; +@property(copy) NSURL *relaunchAppWithBundleURL; // @synthesize relaunchAppWithBundleURL=_relaunchAppWithBundleURL; +@property(copy) NSString *installPath; // @synthesize installPath=_installPath; +@property BOOL didAutoUpdate; // @synthesize didAutoUpdate=_didAutoUpdate; +@property(copy) NSString *cancelURLString; // @synthesize cancelURLString=_cancelURLString; +@property(copy) NSNumber *accountDSID; // @synthesize accountDSID=_accountDSID; +@property BOOL installAfterLogout; // @synthesize installAfterLogout=_installAfterLogout; +@property unsigned long long downloadType; // @synthesize downloadType=_downloadType; +@property(retain, nonatomic) SSDownloadStatus *status; // @synthesize status=_status; +@property(copy, nonatomic) SSDownloadMetadata *metadata; // @synthesize metadata=_metadata; +@property(copy, nonatomic) NSArray *assets; // @synthesize assets=_assets; + +//- (void).cxx_destruct; + +@property BOOL skipInstallPhase; +- (void)setUseUniqueDownloadFolder:(BOOL)arg1; +@property(copy) NSString *customDownloadPath; +- (id)primaryAsset; +- (void)cancelWithPrompt:(BOOL)arg1 storeClient:(id)arg2; +- (void)cancelWithStoreClient:(id)arg1; +- (void)cancelWithPrompt:(BOOL)arg1; +- (void)resumeWithStoreClient:(id)arg1; +- (void)pauseWithStoreClient:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (BOOL)isEqual:(id)arg1; +- (id)initWithAssets:(id)arg1 metadata:(id)arg2; +- (id)init; +- (void)resume; +- (void)pause; +- (void)cancel; + +@end + diff --git a/Frameworks/StoreFoundation/SSDownloadMetadata.h b/Frameworks/StoreFoundation/SSDownloadMetadata.h new file mode 100644 index 00000000..7fc4b7e0 --- /dev/null +++ b/Frameworks/StoreFoundation/SSDownloadMetadata.h @@ -0,0 +1,99 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSArray, NSData, NSDictionary, NSLock, NSMutableDictionary, NSNumber, NSString, NSURL; + +NS_ASSUME_NONNULL_BEGIN + +@interface SSDownloadMetadata : NSObject +{ + NSMutableDictionary *_dictionary; + NSLock *_lock; +} + ++ (BOOL)supportsSecureCoding; + +// - (void).cxx_destruct; + +- (id _Nullable)_valueForFirstAvailableKey:(id)arg1; +@property(retain, nullable) NSArray *sinfs; +- (void)setValue:(id _Nullable)arg1 forMetadataKey:(id)arg2; +@property(retain, nullable) NSString *iapInstallPath; +@property(retain, nullable) NSString *fileExtension; +@property(retain, nullable) NSString *appleID; +@property(retain, nullable) NSData *epubRightsData; +@property(retain, nullable) NSString *downloadKey; +@property(retain, nullable) NSDictionary *dictionary; +- (id _Nullable)localServerInfo; +@property(readonly, nullable) NSString *iapContentVersion; +@property(readonly, nullable) NSNumber *iapContentSize; +@property(readonly, nullable) NSArray *assets; + +@property BOOL animationExpected; + +@property(retain, nullable) NSString *transactionIdentifier; + +@property(retain) NSString *title; + +@property(retain, nullable) NSURL *thumbnailImageURL; +@property(retain, nullable) NSString *subtitle; +@property(retain, nullable) NSString *ipaInstallPath; + +@property BOOL isMDMProvided; + +- (void)setUncompressedSize:(NSNumber * _Nonnull)arg1; + +- (void)setExtractionCanBeStreamed:(BOOL)arg1; + +@property(retain, nullable) NSString *buyParameters; +@property(retain, nullable) NSURL *preflightPackageURL; + +@property(getter=isRental) BOOL rental; + +@property(retain, nullable) NSString *kind; + +@property unsigned long long itemIdentifier; + +@property(retain, nullable) NSString *genre; +@property(retain, nullable) NSNumber *durationInMilliseconds; +@property(retain, nullable) NSString *collectionName; +@property(retain, nullable) NSString *bundleVersion; +@property(retain, nullable) NSString *bundleIdentifier; + +@property BOOL artworkIsPrerendered; + +@property(readonly, nullable) NSString *bundleShortVersionString; +@property(readonly, nullable) NSString *bundleDisplayName; +@property(readonly, nullable) NSNumber *uncompressedSize; + +@property(readonly) BOOL extractionCanBeStreamed; +@property(readonly) BOOL needsSoftwareInstallOperation; + +- (id _Nullable)deltaPackages; + +@property(readonly, getter=isSample) BOOL sample; + +@property(readonly, nullable) NSString *purchaseDate; + +@property(readonly) BOOL isExplicitContents; + +@property(readonly, nullable) NSNumber *ageRestriction; +@property(retain, nullable) NSString *productType; +@property(readonly, nullable) NSString *applicationIdentifier; + +- (id)copyWithZone:(nullable struct _NSZone *)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; + +- (nullable instancetype)initWithDictionary:(id)arg1; +- (nullable instancetype)initWithKind:(id)arg1; +- (instancetype)init; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/SSDownloadPhase.h b/Frameworks/StoreFoundation/SSDownloadPhase.h new file mode 100644 index 00000000..6fbad425 --- /dev/null +++ b/Frameworks/StoreFoundation/SSDownloadPhase.h @@ -0,0 +1,37 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class SSOperationProgress; + +NS_ASSUME_NONNULL_BEGIN + +@interface SSDownloadPhase : NSObject +{ + SSOperationProgress *_operationProgress; +} + ++ (BOOL)supportsSecureCoding; + +//- (void).cxx_destruct; + +@property(readonly) SSOperationProgress *operationProgress; +@property(readonly) long long totalProgressValue; +@property(readonly) long long progressValue; +@property(readonly) float progressChangeRate; +@property(readonly) long long progressUnits; +@property(readonly) long long phaseType; +@property(readonly) double estimatedSecondsRemaining; +- (id)copyWithZone:(nullable struct _NSZone *)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithOperationProgress:(id)arg1; +- (id)init; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/SSDownloadStatus.h b/Frameworks/StoreFoundation/SSDownloadStatus.h new file mode 100644 index 00000000..9a071d09 --- /dev/null +++ b/Frameworks/StoreFoundation/SSDownloadStatus.h @@ -0,0 +1,44 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSError, SSDownloadPhase; + +NS_ASSUME_NONNULL_BEGIN + +@interface SSDownloadStatus : NSObject +{ + SSDownloadPhase *_activePhase; + NSError *_error; + BOOL _failed; + BOOL _paused; + BOOL _cancelled; + BOOL _waiting; +} + ++ (BOOL)supportsSecureCoding; +@property BOOL waiting; // @synthesize waiting=_waiting; +@property(nonatomic, getter=isCancelled) BOOL cancelled; // @synthesize cancelled=_cancelled; +@property(nonatomic, getter=isPaused) BOOL paused; // @synthesize paused=_paused; +@property(nonatomic, getter=isFailed) BOOL failed; // @synthesize failed=_failed; +@property(retain, nonatomic) NSError *error; // @synthesize error=_error; +@property(readonly, nonatomic) SSDownloadPhase *activePhase; // @synthesize activePhase=_activePhase; + +//- (void).cxx_destruct; + +- (void)setOperationProgress:(id)arg1; +@property(readonly, nonatomic) long long phaseTimeRemaining; +@property(readonly, nonatomic) float phasePercentComplete; +@property(readonly, nonatomic) float percentComplete; +@property(readonly, nonatomic, getter=isPausable) BOOL pausable; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/SSPurchase.h b/Frameworks/StoreFoundation/SSPurchase.h new file mode 100644 index 00000000..57d7d040 --- /dev/null +++ b/Frameworks/StoreFoundation/SSPurchase.h @@ -0,0 +1,83 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class ISOperation, NSData, NSDictionary, NSNumber, NSString, SSDownloadMetadata; + +NS_ASSUME_NONNULL_BEGIN + +@interface SSPurchase : NSObject +{ + NSNumber *_accountIdentifier; + NSString *_appleID; + NSString *_buyParameters; + SSDownloadMetadata *_downloadMetadata; + NSString *_uniqueIdentifier; + BOOL _isUpdate; + long long _purchaseType; + BOOL _checkPreflightAterPurchase; + NSData *_receiptData; + NSString *_parentalControls; + BOOL _isRedownload; + BOOL _isVPP; + BOOL _shouldBeInstalledAfterLogout; + BOOL _isCancelled; + BOOL _isDSIDLessPurchase; + NSString *_sortableAccountIdentifier; + unsigned long long _itemIdentifier; + + // CDUnknownBlockType _authFallbackHandler; + + ISOperation *_purchaseOperation; + NSDictionary *_responseDialog; + NSDictionary *_dsidLessOptions; +} + ++ (id)purchasesGroupedByAccountIdentifierWithPurchases:(id)arg1; ++ (BOOL)supportsSecureCoding; ++ (id)purchaseWithBuyParameters:(id)arg1; +@property(retain) NSDictionary *dsidLessOptions; // @synthesize dsidLessOptions=_dsidLessOptions; +@property BOOL isDSIDLessPurchase; // @synthesize isDSIDLessPurchase=_isDSIDLessPurchase; +@property(copy) NSDictionary *responseDialog; // @synthesize responseDialog=_responseDialog; + +@property (nullable) __weak ISOperation *purchaseOperation; // @synthesize purchaseOperation=_purchaseOperation; + +@property BOOL isCancelled; // @synthesize isCancelled=_isCancelled; + +// @property(copy) CDUnknownBlockType authFallbackHandler; // @synthesize authFallbackHandler=_authFallbackHandler; + +@property unsigned long long itemIdentifier; // @synthesize itemIdentifier=_itemIdentifier; +@property BOOL shouldBeInstalledAfterLogout; // @synthesize shouldBeInstalledAfterLogout=_shouldBeInstalledAfterLogout; +@property BOOL checkPreflightAterPurchase; // @synthesize checkPreflightAterPurchase=_checkPreflightAterPurchase; +@property(readonly, nonatomic) NSString *sortableAccountIdentifier; // @synthesize sortableAccountIdentifier=_sortableAccountIdentifier; +@property(retain, nonatomic) NSString *parentalControls; // @synthesize parentalControls=_parentalControls; +@property(retain, nonatomic) NSData *receiptData; // @synthesize receiptData=_receiptData; +@property(nonatomic) long long purchaseType; // @synthesize purchaseType=_purchaseType; +@property BOOL isVPP; // @synthesize isVPP=_isVPP; +@property BOOL isRedownload; // @synthesize isRedownload=_isRedownload; +@property BOOL isUpdate; // @synthesize isUpdate=_isUpdate; +@property(retain, nonatomic) NSString *appleID; // @synthesize appleID=_appleID; +@property(copy, nonatomic) SSDownloadMetadata *downloadMetadata; // @synthesize downloadMetadata=_downloadMetadata; +@property(copy, nonatomic) NSString *buyParameters; // @synthesize buyParameters=_buyParameters; +@property(retain, nonatomic) NSNumber *accountIdentifier; // @synthesize accountIdentifier=_accountIdentifier; + +//- (void).cxx_destruct; + +- (BOOL)purchaseDSIDMatchesPrimaryAccount; +@property(readonly) BOOL needsAuthentication; // @dynamic needsAuthentication; +@property BOOL isRecoveryPurchase; // @dynamic isRecoveryPurchase; +- (id)productID; +@property(readonly, nonatomic) NSString *uniqueIdentifier; +- (id)_sortableAccountIdentifier; +- (id)description; +- (id)copyWithZone:(nullable struct _NSZone *)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/SSPurchaseResponse.h b/Frameworks/StoreFoundation/SSPurchaseResponse.h new file mode 100644 index 00000000..44bc4580 --- /dev/null +++ b/Frameworks/StoreFoundation/SSPurchaseResponse.h @@ -0,0 +1,33 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +@import Foundation; + +@class NSArray, NSDictionary; + +NS_ASSUME_NONNULL_BEGIN + +@interface SSPurchaseResponse : NSObject +{ + NSArray *_downloads; + NSDictionary *_rawResponse; + NSDictionary *_metrics; +} + ++ (BOOL)supportsSecureCoding; +@property(retain) NSDictionary *metrics; // @synthesize metrics=_metrics; +@property(retain) NSArray *downloads; // @synthesize downloads=_downloads; + +//- (void).cxx_destruct; + +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)_newDownloadsFromItems:(id)arg1 withDSID:(id)arg2; +- (id)initWithDictionary:(id)arg1 userIdentifier:(id)arg2; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/StoreFoundation/module.modulemap b/Frameworks/StoreFoundation/module.modulemap new file mode 100644 index 00000000..96344c68 --- /dev/null +++ b/Frameworks/StoreFoundation/module.modulemap @@ -0,0 +1,21 @@ +// +// StoreFoundation.module +// mas-cli +// + +module StoreFoundation { + header "CKSoftwareProduct.h" + header "CKUpdate.h" + header "ISAccountService.h" + header "ISAuthenticationContext.h" + header "ISStoreAccount.h" + header "ISStoreClient.h" + header "SSDownload.h" + header "SSDownloadMetadata.h" + header "SSDownloadPhase.h" + header "SSDownloadStatus.h" + header "SSPurchase.h" + header "SSPurchaseResponse.h" + + export * +} diff --git a/Latest.xcodeproj/project.pbxproj b/Latest.xcodeproj/project.pbxproj index 63e09aef..88fe48f4 100644 --- a/Latest.xcodeproj/project.pbxproj +++ b/Latest.xcodeproj/project.pbxproj @@ -20,6 +20,9 @@ 5039DE8522CA396F0088B39B /* UpdateQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5039DE8422CA396F0088B39B /* UpdateQueue.swift */; }; 5039DE8722CA39C60088B39B /* UpdateOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5039DE8622CA39C60088B39B /* UpdateOperation.swift */; }; 5039DE8B22CA39ED0088B39B /* StatefulOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5039DE8A22CA39ED0088B39B /* StatefulOperation.swift */; }; + 5039DE8D22CAA2790088B39B /* MacAppStoreUpdateOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5039DE8C22CAA2790088B39B /* MacAppStoreUpdateOperation.swift */; }; + 5048574022C81DD000C52C48 /* CommerceKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5048573F22C81DCF00C52C48 /* CommerceKit.framework */; }; + 5048574222C81DF900C52C48 /* StoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5048574122C81DF800C52C48 /* StoreFoundation.framework */; }; 5058BA3A21202BA7003F332B /* IconCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5058BA3921202BA7003F332B /* IconCache.swift */; }; 5058E9C327863FC80028F564 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5058E9C227863FC80028F564 /* App.swift */; }; 506A8F6722EC14CC00C755AF /* LatestError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506A8F6622EC14CC00C755AF /* LatestError.swift */; }; @@ -59,76 +62,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 50726ECD2540B45400FDF35E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = EA1E285E22B66487004AA304; - remoteInfo = generate_keys; - }; - 50726ECF2540B45400FDF35E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = EA1E287622B666EB004AA304; - remoteInfo = sign_update; - }; - 50726ED12540B45400FDF35E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = EA1E282D22B660BE004AA304; - remoteInfo = ed25519; - }; - 50B3984E2312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 726E07AD1CAF08D6001A286B; - remoteInfo = SparkleInstallerLauncher; - }; - 50B398502312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 724BB36C1D31D0B7005D534A; - remoteInfo = SparkleInstallerConnection; - }; - 50B398522312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 724BB3931D333832005D534A; - remoteInfo = SparkleInstallerStatus; - }; - 50B398542312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 726E07EF1CAF37BD001A286B; - remoteInfo = SparkleDownloader; - }; - 50B398562312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 726E4A161C86C88F00C57C6A; - remoteInfo = TestAppHelper; - }; - 50B398582312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 72D9549E1CBB415B006F28BD; - remoteInfo = "sparkle-cli"; - }; - 50B3985A2312CF1C00BAEC81 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 721C24451CB753E6005440CB; - remoteInfo = "Installer Progress"; - }; 50C81D6E1FBADC5900324C2E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 50290E691E53EB6A00133E3D /* Project object */; @@ -136,67 +69,39 @@ remoteGlobalIDString = 50290E701E53EB6A00133E3D; remoteInfo = Latest; }; - 50F62EF722FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8DC2EF5B0486A6940098B216; - remoteInfo = Sparkle; - }; - 50F62EF922FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 61B5F90209C4CEE200B25A18; - remoteInfo = "Sparkle Test App"; - }; - 50F62EFB22FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 612279D90DB5470200AB99EA; - remoteInfo = "Sparkle Unit Tests"; - }; - 50F62EFD22FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5D06E8D00FD68C7C005AE3F6; - remoteInfo = BinaryDelta; - }; - 50F62EFF22FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 55C14BB7136EEF1500649790; - remoteInfo = Autoupdate; - }; - 50F62F0122FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 726B2B5D1C645FC900388755; - remoteInfo = "UI Tests"; - }; - 50F62F0522FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5AE13FB31E0D9E07000D2C2C; - remoteInfo = generate_appcast; - }; - 50F62F0B22FA277D00A2F2AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = EA4311EA229D651300A5503D; - remoteInfo = bsdiff; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 29A88F88296B7DC2000A5EDE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = fa.lproj/Main.strings; sourceTree = ""; }; + 29A88F89296B7DC2000A5EDE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = fa.lproj/InfoPlist.strings; sourceTree = ""; }; + 29A88F8A296B7DC2000A5EDE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fa; path = fa.lproj/Localizable.stringsdict; sourceTree = ""; }; + 29A88F8B296B7DC2000A5EDE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = fa.lproj/Localizable.strings; sourceTree = ""; }; 50037512245EA9FA00D3BB0D /* UpdateGroupCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateGroupCellView.swift; sourceTree = ""; }; 5009D5D727F4FF9A00CBDBE6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = ""; }; + 500A89272924F91C004008F6 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Main.strings; sourceTree = ""; }; + 500A89282924F91C004008F6 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; }; + 500A89292924F91C004008F6 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nb; path = nb.lproj/Localizable.stringsdict; sourceTree = ""; }; + 500A892A2924F91C004008F6 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; }; + 500A892B2924FDEF004008F6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Main.strings; sourceTree = ""; }; + 500A892C2924FE0D004008F6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; }; + 500A892D2924FE19004008F6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = id; path = id.lproj/Localizable.stringsdict; sourceTree = ""; }; + 500A892E2924FE1F004008F6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/InfoPlist.strings; sourceTree = ""; }; + 500A892F2924FE32004008F6 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Main.strings; sourceTree = ""; }; + 500A89302924FE43004008F6 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; + 500A89312924FE46004008F6 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hu; path = hu.lproj/Localizable.stringsdict; sourceTree = ""; }; + 500A89322924FE4C004008F6 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; + 501B5F7B29832166009C6F70 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Main.strings; sourceTree = ""; }; + 501B5F7C2983216D009C6F70 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Main.strings; sourceTree = ""; }; + 501B5F7D2983219B009C6F70 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = ""; }; + 501B5F7E2983219F009C6F70 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; + 501B5F7F298321A3009C6F70 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = ""; }; + 501B5F80298321A6009C6F70 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Localizable.stringsdict; sourceTree = ""; }; + 501B5F81298321AA009C6F70 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; + 501B5F82298321AD009C6F70 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; + 501B5F8329832520009C6F70 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Main.strings; sourceTree = ""; }; + 501B5F8429832537009C6F70 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Localizable.stringsdict; sourceTree = ""; }; + 501B5F852983253B009C6F70 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/InfoPlist.strings; sourceTree = ""; }; + 501B5F862983253E009C6F70 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; 501EA97F1EB1BA4400D05821 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; 501EA9831EB1BA4400D05821 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; 501EA98B1EB1BD8B00D05821 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = ""; }; @@ -233,6 +138,9 @@ 5039DE8422CA396F0088B39B /* UpdateQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateQueue.swift; sourceTree = ""; }; 5039DE8622CA39C60088B39B /* UpdateOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateOperation.swift; sourceTree = ""; }; 5039DE8A22CA39ED0088B39B /* StatefulOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatefulOperation.swift; sourceTree = ""; }; + 5039DE8C22CAA2790088B39B /* MacAppStoreUpdateOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacAppStoreUpdateOperation.swift; sourceTree = ""; }; + 5048573F22C81DCF00C52C48 /* CommerceKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CommerceKit.framework; path = ../../../../../../System/Library/PrivateFrameworks/CommerceKit.framework; sourceTree = ""; }; + 5048574122C81DF800C52C48 /* StoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreFoundation.framework; path = ../../../../../../System/Library/PrivateFrameworks/StoreFoundation.framework; sourceTree = ""; }; 5058BA3921202BA7003F332B /* IconCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconCache.swift; sourceTree = ""; }; 5058E9C227863FC80028F564 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; 506A8F6622EC14CC00C755AF /* LatestError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LatestError.swift; sourceTree = ""; }; @@ -311,7 +219,30 @@ 50E7ED4228611864006EF45F /* ms */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ms; path = ms.lproj/InfoPlist.strings; sourceTree = ""; }; 50E7ED4328611869006EF45F /* ms */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ms; path = ms.lproj/Localizable.stringsdict; sourceTree = ""; }; 50E7ED442861186D006EF45F /* ms */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ms; path = ms.lproj/Localizable.strings; sourceTree = ""; }; - 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Sparkle.xcodeproj; path = Frameworks/Sparkle/Sparkle.xcodeproj; sourceTree = ""; }; + 50F542E022D9C41C004B3F8D /* CKDownloadQueueObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKDownloadQueueObserver.h; sourceTree = ""; }; + 50F542E122D9C41C004B3F8D /* CKDownloadDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKDownloadDirectory.h; sourceTree = ""; }; + 50F542E222D9C41C004B3F8D /* CKSoftwareMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKSoftwareMap.h; sourceTree = ""; }; + 50F542E322D9C41C004B3F8D /* CKPurchaseController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKPurchaseController.h; sourceTree = ""; }; + 50F542E422D9C41C004B3F8D /* CKAccountStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKAccountStore.h; sourceTree = ""; }; + 50F542E622D9C41C004B3F8D /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + 50F542E722D9C41C004B3F8D /* CKServiceInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKServiceInterface.h; sourceTree = ""; }; + 50F542E922D9C41C004B3F8D /* CKDownloadQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKDownloadQueue.h; sourceTree = ""; }; + 50F542EB22D9C41D004B3F8D /* SSPurchaseResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSPurchaseResponse.h; sourceTree = ""; }; + 50F542ED22D9C41D004B3F8D /* ISAuthenticationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationResponse.h; sourceTree = ""; }; + 50F542EE22D9C41D004B3F8D /* CKUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKUpdate.h; sourceTree = ""; }; + 50F542EF22D9C41D004B3F8D /* CKSoftwareProduct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKSoftwareProduct.h; sourceTree = ""; }; + 50F542F022D9C41D004B3F8D /* SSDownloadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDownloadPhase.h; sourceTree = ""; }; + 50F542F122D9C41D004B3F8D /* SSDownloadStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDownloadStatus.h; sourceTree = ""; }; + 50F542F222D9C41D004B3F8D /* ISServiceRemoteObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISServiceRemoteObject.h; sourceTree = ""; }; + 50F542F322D9C41D004B3F8D /* SSDownloadMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDownloadMetadata.h; sourceTree = ""; }; + 50F542F422D9C41D004B3F8D /* ISStoreAccount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISStoreAccount.h; sourceTree = ""; }; + 50F542F522D9C41D004B3F8D /* SSDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDownload.h; sourceTree = ""; }; + 50F542F622D9C41D004B3F8D /* ISAccountService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISAccountService.h; sourceTree = ""; }; + 50F542F722D9C41D004B3F8D /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + 50F542F922D9C41D004B3F8D /* ISServiceProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISServiceProxy.h; sourceTree = ""; }; + 50F542FA22D9C41D004B3F8D /* ISAuthenticationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationContext.h; sourceTree = ""; }; + 50F542FB22D9C41D004B3F8D /* SSPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSPurchase.h; sourceTree = ""; }; + 50F542FC22D9C41D004B3F8D /* ISStoreClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISStoreClient.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -319,7 +250,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5048574222C81DF900C52C48 /* StoreFoundation.framework in Frameworks */, 509B30EE28DBB17D00DDAA2E /* Sparkle in Frameworks */, + 5048574022C81DD000C52C48 /* CommerceKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -383,6 +316,7 @@ 5039DE8422CA396F0088B39B /* UpdateQueue.swift */, 5039DE8622CA39C60088B39B /* UpdateOperation.swift */, 5087CD2C22F6E06B0013354C /* SparkleUpdateOperation.swift */, + 5039DE8C22CAA2790088B39B /* MacAppStoreUpdateOperation.swift */, ); path = Updater; sourceTree = ""; @@ -390,7 +324,10 @@ 5046AFF21FF6CECD00ABAA97 /* Frameworks */ = { isa = PBXGroup; children = ( - 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */, + 50F542DF22D9C41C004B3F8D /* CommerceKit */, + 50F542EA22D9C41D004B3F8D /* StoreFoundation */, + 5048574122C81DF800C52C48 /* StoreFoundation.framework */, + 5048573F22C81DCF00C52C48 /* CommerceKit.framework */, ); name = Frameworks; sourceTree = ""; @@ -563,29 +500,44 @@ path = Views; sourceTree = ""; }; - 50F62EE622FA277D00A2F2AF /* Products */ = { + 50F542DF22D9C41C004B3F8D /* CommerceKit */ = { isa = PBXGroup; children = ( - 50F62EF822FA277D00A2F2AF /* Sparkle.framework */, - 50F62F0022FA277D00A2F2AF /* Autoupdate */, - 50B3984F2312CF1C00BAEC81 /* org.sparkle-project.InstallerLauncher.xpc */, - 50B398512312CF1C00BAEC81 /* org.sparkle-project.InstallerConnection.xpc */, - 50B398532312CF1C00BAEC81 /* org.sparkle-project.InstallerStatus.xpc */, - 50B398552312CF1C00BAEC81 /* org.sparkle-project.Downloader.xpc */, - 50F62EFA22FA277D00A2F2AF /* Sparkle Test App.app */, - 50B398572312CF1C00BAEC81 /* TestAppHelper.xpc */, - 50F62EFC22FA277D00A2F2AF /* Sparkle Unit Tests.xctest */, - 50F62EFE22FA277D00A2F2AF /* BinaryDelta */, - 50B398592312CF1C00BAEC81 /* sparkle.app */, - 50B3985B2312CF1C00BAEC81 /* Updater.app */, - 50F62F0222FA277D00A2F2AF /* UI Tests.xctest */, - 50F62F0622FA277D00A2F2AF /* generate_appcast */, - 50726ECE2540B45400FDF35E /* generate_keys */, - 50726ED02540B45400FDF35E /* sign_update */, - 50F62F0C22FA277D00A2F2AF /* libbsdiff.a */, - 50726ED22540B45400FDF35E /* libed25519.a */, + 50F542E022D9C41C004B3F8D /* CKDownloadQueueObserver.h */, + 50F542E122D9C41C004B3F8D /* CKDownloadDirectory.h */, + 50F542E222D9C41C004B3F8D /* CKSoftwareMap.h */, + 50F542E322D9C41C004B3F8D /* CKPurchaseController.h */, + 50F542E422D9C41C004B3F8D /* CKAccountStore.h */, + 50F542E622D9C41C004B3F8D /* module.modulemap */, + 50F542E722D9C41C004B3F8D /* CKServiceInterface.h */, + 50F542E922D9C41C004B3F8D /* CKDownloadQueue.h */, ); - name = Products; + name = CommerceKit; + path = Frameworks/CommerceKit; + sourceTree = ""; + }; + 50F542EA22D9C41D004B3F8D /* StoreFoundation */ = { + isa = PBXGroup; + children = ( + 50F542EB22D9C41D004B3F8D /* SSPurchaseResponse.h */, + 50F542ED22D9C41D004B3F8D /* ISAuthenticationResponse.h */, + 50F542EE22D9C41D004B3F8D /* CKUpdate.h */, + 50F542EF22D9C41D004B3F8D /* CKSoftwareProduct.h */, + 50F542F022D9C41D004B3F8D /* SSDownloadPhase.h */, + 50F542F122D9C41D004B3F8D /* SSDownloadStatus.h */, + 50F542F222D9C41D004B3F8D /* ISServiceRemoteObject.h */, + 50F542F322D9C41D004B3F8D /* SSDownloadMetadata.h */, + 50F542F422D9C41D004B3F8D /* ISStoreAccount.h */, + 50F542F522D9C41D004B3F8D /* SSDownload.h */, + 50F542F622D9C41D004B3F8D /* ISAccountService.h */, + 50F542F722D9C41D004B3F8D /* module.modulemap */, + 50F542F922D9C41D004B3F8D /* ISServiceProxy.h */, + 50F542FA22D9C41D004B3F8D /* ISAuthenticationContext.h */, + 50F542FB22D9C41D004B3F8D /* SSPurchase.h */, + 50F542FC22D9C41D004B3F8D /* ISStoreClient.h */, + ); + name = StoreFoundation; + path = Frameworks/StoreFoundation; sourceTree = ""; }; /* End PBXGroup section */ @@ -683,6 +635,13 @@ nl, "zh-Hans", el, + fa, + nb, + id, + hu, + sv, + cs, + uk, ); mainGroup = 50290E681E53EB6A00133E3D; packageReferences = ( @@ -690,12 +649,6 @@ ); productRefGroup = 50290E721E53EB6A00133E3D /* Products */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 50F62EE622FA277D00A2F2AF /* Products */; - ProjectRef = 50F62EE522FA277D00A2F2AF /* Sparkle.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 50290E701E53EB6A00133E3D /* Latest */, @@ -704,135 +657,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 50726ECE2540B45400FDF35E /* generate_keys */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = generate_keys; - remoteRef = 50726ECD2540B45400FDF35E /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50726ED02540B45400FDF35E /* sign_update */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = sign_update; - remoteRef = 50726ECF2540B45400FDF35E /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50726ED22540B45400FDF35E /* libed25519.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libed25519.a; - remoteRef = 50726ED12540B45400FDF35E /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B3984F2312CF1C00BAEC81 /* org.sparkle-project.InstallerLauncher.xpc */ = { - isa = PBXReferenceProxy; - fileType = "wrapper.xpc-service"; - path = "org.sparkle-project.InstallerLauncher.xpc"; - remoteRef = 50B3984E2312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B398512312CF1C00BAEC81 /* org.sparkle-project.InstallerConnection.xpc */ = { - isa = PBXReferenceProxy; - fileType = "wrapper.xpc-service"; - path = "org.sparkle-project.InstallerConnection.xpc"; - remoteRef = 50B398502312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B398532312CF1C00BAEC81 /* org.sparkle-project.InstallerStatus.xpc */ = { - isa = PBXReferenceProxy; - fileType = "wrapper.xpc-service"; - path = "org.sparkle-project.InstallerStatus.xpc"; - remoteRef = 50B398522312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B398552312CF1C00BAEC81 /* org.sparkle-project.Downloader.xpc */ = { - isa = PBXReferenceProxy; - fileType = "wrapper.xpc-service"; - path = "org.sparkle-project.Downloader.xpc"; - remoteRef = 50B398542312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B398572312CF1C00BAEC81 /* TestAppHelper.xpc */ = { - isa = PBXReferenceProxy; - fileType = "wrapper.xpc-service"; - path = TestAppHelper.xpc; - remoteRef = 50B398562312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B398592312CF1C00BAEC81 /* sparkle.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = sparkle.app; - remoteRef = 50B398582312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50B3985B2312CF1C00BAEC81 /* Updater.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = Updater.app; - remoteRef = 50B3985A2312CF1C00BAEC81 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62EF822FA277D00A2F2AF /* Sparkle.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Sparkle.framework; - remoteRef = 50F62EF722FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62EFA22FA277D00A2F2AF /* Sparkle Test App.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "Sparkle Test App.app"; - remoteRef = 50F62EF922FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62EFC22FA277D00A2F2AF /* Sparkle Unit Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "Sparkle Unit Tests.xctest"; - remoteRef = 50F62EFB22FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62EFE22FA277D00A2F2AF /* BinaryDelta */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = BinaryDelta; - remoteRef = 50F62EFD22FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62F0022FA277D00A2F2AF /* Autoupdate */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = Autoupdate; - remoteRef = 50F62EFF22FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62F0222FA277D00A2F2AF /* UI Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "UI Tests.xctest"; - remoteRef = 50F62F0122FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62F0622FA277D00A2F2AF /* generate_appcast */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = generate_appcast; - remoteRef = 50F62F0522FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 50F62F0C22FA277D00A2F2AF /* libbsdiff.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libbsdiff.a; - remoteRef = 50F62F0B22FA277D00A2F2AF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 50290E6F1E53EB6A00133E3D /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -898,6 +722,7 @@ 509512341FF36380003D2D7F /* UpdateTableViewController.swift in Sources */, 50C9F10C234641E000FD1802 /* SparkleCheckerOperation.swift in Sources */, 50290E751E53EB6A00133E3D /* AppDelegate.swift in Sources */, + 5039DE8D22CAA2790088B39B /* MacAppStoreUpdateOperation.swift in Sources */, 507375572789AB0300F371D8 /* AppListSnapshot.swift in Sources */, 50C9F0F5234637BD00FD1802 /* UpdateCheckerOperation.swift in Sources */, 50D6EF5F281461A3002D7006 /* Sparkle.swift in Sources */, @@ -966,6 +791,13 @@ 50303BFF28BA06590020C46F /* nl */, 50D6697128DBAA2F00FD3F6A /* zh-Hans */, 50D6697728DBAC7200FD3F6A /* el */, + 29A88F8B296B7DC2000A5EDE /* fa */, + 500A892A2924F91C004008F6 /* nb */, + 500A892C2924FE0D004008F6 /* id */, + 500A89302924FE43004008F6 /* hu */, + 501B5F81298321AA009C6F70 /* cs */, + 501B5F82298321AD009C6F70 /* sv */, + 501B5F862983253E009C6F70 /* uk */, ); name = Localizable.strings; sourceTree = ""; @@ -989,6 +821,13 @@ 50303BFE28BA06560020C46F /* nl */, 50D6697228DBAA3A00FD3F6A /* zh-Hans */, 50D6697628DBAC6E00FD3F6A /* el */, + 29A88F8A296B7DC2000A5EDE /* fa */, + 500A89292924F91C004008F6 /* nb */, + 500A892D2924FE19004008F6 /* id */, + 500A89312924FE46004008F6 /* hu */, + 501B5F7F298321A3009C6F70 /* cs */, + 501B5F80298321A6009C6F70 /* sv */, + 501B5F8429832537009C6F70 /* uk */, ); name = Localizable.stringsdict; sourceTree = ""; @@ -1012,6 +851,13 @@ 50303BFD28BA06520020C46F /* nl */, 50D6697328DBAA4200FD3F6A /* zh-Hans */, 50D6697528DBAC6B00FD3F6A /* el */, + 29A88F89296B7DC2000A5EDE /* fa */, + 500A89282924F91C004008F6 /* nb */, + 500A892E2924FE1F004008F6 /* id */, + 500A89322924FE4C004008F6 /* hu */, + 501B5F7D2983219B009C6F70 /* cs */, + 501B5F7E2983219F009C6F70 /* sv */, + 501B5F852983253B009C6F70 /* uk */, ); name = InfoPlist.strings; sourceTree = ""; @@ -1036,6 +882,13 @@ 50303BFC28BA06450020C46F /* nl */, 50D6695A28DBA9F800FD3F6A /* zh-Hans */, 50D6697428DBAC4B00FD3F6A /* el */, + 29A88F88296B7DC2000A5EDE /* fa */, + 500A89272924F91C004008F6 /* nb */, + 500A892B2924FDEF004008F6 /* id */, + 500A892F2924FE32004008F6 /* hu */, + 501B5F7B29832166009C6F70 /* sv */, + 501B5F7C2983216D009C6F70 /* cs */, + 501B5F8329832520009C6F70 /* uk */, ); name = Main.storyboard; sourceTree = ""; @@ -1161,6 +1014,7 @@ 50290E811E53EB6A00133E3D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = "Mac Developer"; @@ -1181,11 +1035,11 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 0.8.3; + MARKETING_VERSION = 0.9; PRODUCT_BUNDLE_IDENTIFIER = "com.max-langer.Latest"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Frameworks/mas-cli/PrivateFrameworks/CommerceKit $(SRCROOT)/Frameworks/mas-cli/PrivateFrameworks/StoreFoundation"; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Frameworks/CommerceKit $(SRCROOT)/Frameworks/StoreFoundation"; SWIFT_OBJC_BRIDGING_HEADER = "Latest/Resources/Latest Bridging_Header.h"; SWIFT_VERSION = 5.0; SYSTEM_FRAMEWORK_SEARCH_PATHS = ( @@ -1198,6 +1052,7 @@ 50290E821E53EB6A00133E3D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = "Mac Developer"; @@ -1218,11 +1073,11 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 0.8.3; + MARKETING_VERSION = 0.9; PRODUCT_BUNDLE_IDENTIFIER = "com.max-langer.Latest"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Frameworks/mas-cli/PrivateFrameworks/CommerceKit $(SRCROOT)/Frameworks/mas-cli/PrivateFrameworks/StoreFoundation"; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Frameworks/CommerceKit $(SRCROOT)/Frameworks/StoreFoundation"; SWIFT_OBJC_BRIDGING_HEADER = "Latest/Resources/Latest Bridging_Header.h"; SWIFT_VERSION = 5.0; SYSTEM_FRAMEWORK_SEARCH_PATHS = ( @@ -1251,7 +1106,7 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; + MACOSX_DEPLOYMENT_TARGET = 10.13; PRODUCT_BUNDLE_IDENTIFIER = "com.max-langer.Latest-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -1278,7 +1133,7 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; + MACOSX_DEPLOYMENT_TARGET = 10.13; PRODUCT_BUNDLE_IDENTIFIER = "com.max-langer.Latest-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/Latest/Interface/Window Controllers/MainWindowController.swift b/Latest/Interface/Window Controllers/MainWindowController.swift index 1d04e6b4..af433c9e 100644 --- a/Latest/Interface/Window Controllers/MainWindowController.swift +++ b/Latest/Interface/Window Controllers/MainWindowController.swift @@ -55,6 +55,7 @@ class MainWindowController: NSWindowController, NSMenuItemValidation, NSMenuDele super.windowDidLoad() self.window?.titlebarAppearsTransparent = true + self.window?.setFrameAutosaveName("MainWindow") if #available(macOS 11.0, *) { self.window?.toolbarStyle = .unified @@ -76,6 +77,8 @@ class MainWindowController: NSWindowController, NSMenuItemValidation, NSMenuDele self.listViewController.releaseNotesViewController = self.releaseNotesViewController if let splitViewController = self.contentViewController as? NSSplitViewController { + splitViewController.splitView.autosaveName = "MainSplitView" + let detailItem = splitViewController.splitViewItems[1] detailItem.collapseBehavior = .preferResizingSplitViewWithFixedSiblings } @@ -91,18 +94,8 @@ class MainWindowController: NSWindowController, NSMenuItemValidation, NSMenuDele /// Open all apps that have an update available. If apps from the Mac App Store are there as well, open the Mac App Store @IBAction func updateAll(_ sender: Any?) { - // Separate app store updates from the others - let apps = UpdateCheckCoordinator.shared.appProvider.updatableApps - let nonAppStoreApps = apps.filter { app in - app.source != .appStore - } - - // If more than one app store update is available, open the Updates page, update only non-App Store apps individually - let combineMacAppStoreUpdates = (apps.count - nonAppStoreApps.count > 1) - if combineMacAppStoreUpdates { - NSWorkspace.shared.open(URL(string: "macappstore://showUpdatesPage")!) - } - (combineMacAppStoreUpdates ? nonAppStoreApps : apps).forEach({ app in + // Iterate all updatable apps and perform update + UpdateCheckCoordinator.shared.appProvider.updatableApps.forEach({ app in if !app.isUpdating { app.performUpdate() } diff --git a/Latest/Interface/bg.lproj/Main.strings b/Latest/Interface/bg.lproj/Main.strings new file mode 100644 index 00000000..b09d294d --- /dev/null +++ b/Latest/Interface/bg.lproj/Main.strings @@ -0,0 +1,195 @@ + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Покажи неподдържаните приложения"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Трансфорамации"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Помощ"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Презареди"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Смяна на текста"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Не игнорирай"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Реч"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Обнови"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Намери и замести…"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Latest"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Меню"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Текстова клетка"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "На цял екран"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Затоври Latest"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Провери за обновления…"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Копирай"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "Относно Latest"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Поправи правописа автоматично"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Детектори на данни"; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Посети сайта на Latest"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Главно меню"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Стъпка назад"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Меню"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Настройки…"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "Неуспешно зареждане на бележките!"; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Няма налични актуализации"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Затвори"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Провери правописа по време на писане"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Помощ за Latest"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Постави"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Направи с главни букви"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Изглед"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Изглед"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Обнови"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Избери всички"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Трансформации"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Покажи всички"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "На преден план"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Изрежи"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Услуги"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Започни говор"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Прогрес"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Прогрес"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Минимизирай"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Скрий Latest"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Игнорирай"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Приближи"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Покажи игнорираните приложения"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Направи с малки букви"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Покажи смени"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Прозорец"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Смени"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Скрий останалите"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Покажи Граматика и правопис"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Покажи инсталираните приложения"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Направи с главни букви"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Стъпка напред"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Презареди"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Презареди"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Намери"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Прозорец"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Файл"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Покажи във Finder"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Провери за актуализации…"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Файл"; diff --git a/Latest/Interface/cs.lproj/Main.strings b/Latest/Interface/cs.lproj/Main.strings index e69de29b..6d75e420 100644 --- a/Latest/Interface/cs.lproj/Main.strings +++ b/Latest/Interface/cs.lproj/Main.strings @@ -0,0 +1,330 @@ + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Zobrazit nepodporované aplikace"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Vrátit zpátky"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Menu"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Zavřít"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Latest Pomoc"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Načíst znovu"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Nahrazení textu"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Vložit"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Zobrazit"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Zobrazit"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Aktualizace"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Vybrat všechno"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Aktualizace"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Najít a nahradit…"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Latest"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Zobrazit na celou obrazovku"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Menu"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Textová bunka"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Ukončit Latest"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Kontrola aktualizací…"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Skopírovat"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "O aplikaci Latest"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Automatická oprava pravopisu"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Detektory údajů"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "Nepodařilo se načíst poznámky k vydání!"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Velké začáteční písmena"; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Žádné dostupné aktualizace"; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Navštívit Latest webové stránky"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Hlavné menu"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Pomoc"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Nastavení…"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Kontrola pravopisu při psaní"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Proměny"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Zobrazit všechno"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Služby"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Přesunout všechno do popředí"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Vystřihnout"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Neignoruj"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Okno"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Progres"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Progres"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimalizovat"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Přiblížení"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Zobrazit ignorované aplikace"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Spustit mluvení"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Skrýt Latest"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Ignoruj"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Uprav na malé písmená"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Zobrazit náhrady"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Skrýt ostatní"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Zobrazit pravopis a gramatiku"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Zobrazit nainstalované aplikace"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Zobraziť vo Finderi"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Najít"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Načítání"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Načíst znovu"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Soubor"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Okno"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Uprav na velké písmena"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Proměny"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Znovu"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Kontrola aktualizací…"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Rěč"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Zkontrolovat dokument teď"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Najít další"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Zobrazit ve Finder"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Najít"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Služby"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Načítání poznámek k vydání"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Inteligentné kopírování/vkládání"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Kontrola gramatiky s pravopisem"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Chytré ponuky"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Náhrady"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Odstranit"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Upravit"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Upravit"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Najít…"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Darovat"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Přejít na výběr"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Aktualizovat všechno"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Aktualizovat všechno"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Aktualizovat všechno"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Aktualizovat všechno"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Použít výběr pro hledání"; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Víceřádkový popis"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Inteligentné odkazy"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Zastavit mluvení"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Latest"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Pravopis"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "Inteligentné pomlčky"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Otevřít"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Pomoc"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Pravopis a gramatika"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Vložiť a zachovat styl"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "Rěč"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Najít předchozí"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Načíst znovu"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Náhrady"; diff --git a/Latest/Interface/fa.lproj/Main.strings b/Latest/Interface/fa.lproj/Main.strings new file mode 100644 index 00000000..934915d0 --- /dev/null +++ b/Latest/Interface/fa.lproj/Main.strings @@ -0,0 +1,330 @@ + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "بروزرسانی"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "پیدا کردن و جایگزینی..."; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "آخرین"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "منو"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "تکست سل"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "ورود به حالت تمام صفحه"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "خروج از Latest"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "بررسی برای بروزرسانی..."; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "کپی"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "درباره Latest"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "تصحیح خودکار املا"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "ردیاب داده"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "نمایش اپلیکیشن‌های پشتیبانی نشده"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "نمایش وبسایت Latest"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "منو اصلی"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "بازگردانی"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "منو"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "تنظیمات..."; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "اشکال در لود کردن متن این ریلیز."; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "بروزرسانی‌ای موجود نیست"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "بستن"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "بررسی املا موقع تایپ"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "راهنما"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Latest راهنما"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "بارگذاری دوباره"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "جایگزینی متن"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "الصاق"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "با حروف بزرگ"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "نمایش"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "نمایش"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "بروزرسانی"; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "انتخاب همه"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "تبدیل"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "نمایش همه"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "به جلو آوردن همه"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "کات"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "نادیده نگرفتن"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "سرویس ها"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "شروع صحبت"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "وضعیت"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "وضعیت"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "مینمایز کردن"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "پنهان کردن Latest"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "نادیده گرفتن"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "بزرگنمایی"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "نمایش اپلیکیشن‌های نادیده‌گرفته شده"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "با حروف کوچک"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "نمایش تعویض‌ها"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "پنجره"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "تعویض‌ها"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "پنهان کردن بقیه"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "نمایش گرامر و املا"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "نمایش اپلیکیشن‌های نصب شده"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "بزرگ کردن حروف"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "تغییرات"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "انجام دوباره"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "بارگذاری دوباره"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "بارگذاری دوباره"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "پیدا کردن"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "پنجره"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "فایل"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "نمایش در فایندر"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "بررسی برای بروزرسانی‌ها..."; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "صحبت"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "فایل"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "بررسی داکیومنت"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "پیدا کردن بعدی"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "نمایش در فایندر"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "پیدا کردن"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "سرویس‌ها"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "بارگذاری توضیحات نسخه"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "کپی/الصاق هوشمند"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "بررسی گرامر با املا"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "نقل قول هوشمند"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "تعویض‌ها"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "حذف"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "ویرایش"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "پیدا کردن..."; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "کمک مالی"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "رفتن به انتخاب"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "بروزرسانی همه"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "بروزرسانی همه"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "ویرایش"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "استفاده از انتخاب شده برای پیدا کردن"; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "لیبل چندخطی"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "بروزرسانی همه"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "لینک های هوشمند"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "توقف صحبت"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Latest"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "املا"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "خط تیره‌های هوشمند"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "باز کردن"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "بروزرسانی همه"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "راهنما"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "املا و گرامر"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "الصاق در ترکیب با استایل"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "صحبت"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "پیدا کردن قبلی ها"; diff --git a/Latest/Interface/fr.lproj/Main.strings b/Latest/Interface/fr.lproj/Main.strings index 3b52b3c1..0429c25d 100644 --- a/Latest/Interface/fr.lproj/Main.strings +++ b/Latest/Interface/fr.lproj/Main.strings @@ -65,7 +65,7 @@ "bib-Uj-vzu.title" = "Fichier"; /* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ -"bm3-iR-6vZ.title" = "Révéler dans le Finder"; +"bm3-iR-6vZ.title" = "Afficher dans le Finder"; /* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ "BOF-NM-1cW.title" = "Préférences…"; @@ -125,7 +125,7 @@ "H8h-7b-M4v.title" = "Voir"; /* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ -"h9B-7u-6ru.title" = "Révéler dans le Finder"; +"h9B-7u-6ru.title" = "Afficher dans le Finder"; /* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ "hOB-nw-cIX.title" = "Trouver"; @@ -209,7 +209,7 @@ "OY7-WF-poV.title" = "Minimiser"; /* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ -"pDo-aP-nIF.title" = "Sauter à la sélection"; +"pDo-aP-nIF.title" = "Aller à la sélection"; /* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ "PS4-wi-kF9.title" = "Ignorer"; @@ -218,10 +218,10 @@ "QRR-k0-TZ4.title" = ""; /* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ -"qS5-vO-h2j.label" = "Mettre à jour tous"; +"qS5-vO-h2j.label" = "Tout mettre à jour"; /* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ -"qS5-vO-h2j.paletteLabel" = "Mettre à jour tous"; +"qS5-vO-h2j.paletteLabel" = "Tout mettre à jour"; /* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ "R4o-n2-Eq4.title" = "Zoom"; @@ -251,7 +251,7 @@ "Td7-aD-5lo.title" = "Fenêtre"; /* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ -"TKo-Xa-BjT.title" = "Afficher les substitutions"; +"TKo-Xa-BjT.title" = "Afficher les remplacements"; /* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ "tw7-g1-6Wz.title" = "Liens intelligents"; @@ -272,7 +272,7 @@ "uQy-DD-JDr.title" = "Latest"; /* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ -"UVA-tb-pA9.title" = "Substitutions"; +"UVA-tb-pA9.title" = "Remplacements"; /* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ "uw5-pW-jNu.title" = "Tirets intelligents"; @@ -290,7 +290,7 @@ "w14-Ia-4l9.title" = "Ouvrir"; /* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ -"wmL-ks-XSr.ibShadowedToolTip" = "Mettre à jour tous"; +"wmL-ks-XSr.ibShadowedToolTip" = "Tout mettre à jour"; /* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ "wpr-3q-Mcd.title" = "Aide"; @@ -317,7 +317,7 @@ "Yj4-SM-ocg.title" = "Refaire"; /* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ -"yPN-rG-tgD.title" = "Trouver précédent"; +"yPN-rG-tgD.title" = "Trouver le précédent"; /* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ "YRo-LJ-qSP.title" = "Transformations"; diff --git a/Latest/Resources/nb-NB.lproj/InfoPlist.strings b/Latest/Interface/gl.lproj/Main.strings similarity index 100% rename from Latest/Resources/nb-NB.lproj/InfoPlist.strings rename to Latest/Interface/gl.lproj/Main.strings diff --git a/Latest/Interface/hr.lproj/Main.strings b/Latest/Interface/hr.lproj/Main.strings index d8c8d9e5..7772e5b7 100644 --- a/Latest/Interface/hr.lproj/Main.strings +++ b/Latest/Interface/hr.lproj/Main.strings @@ -57,7 +57,7 @@ "BOF-NM-1cW.title" = "Postavke …"; /* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ -"Cm3-IX-Kw4.title" = "Neuspjelo učitavanje napomena uz izdanje!"; +"Cm3-IX-Kw4.title" = "Neuspjelo učitavanje napomena o izdanju!"; /* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ "Ah1-jH-gCv.title" = "Poništi"; @@ -168,7 +168,7 @@ "VX8-qg-UOL.title" = ""; /* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ -"Vdr-fp-XzO.title" = "Sakrij ostalo"; +"Vdr-fp-XzO.title" = "Sakrij druge"; /* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ "WX3-Xi-vCY.title" = "Pokaži pravopis i gramatiku"; @@ -198,7 +198,7 @@ "aUF-d1-5bR.title" = "Prozor"; /* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ -"bib-Uj-vzu.title" = "Datoteke"; +"bib-Uj-vzu.title" = "Datoteka"; /* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ "bm3-iR-6vZ.title" = "Pokaži u Finderu"; @@ -210,7 +210,7 @@ "cWB-Qy-jEV.title" = "Govor"; /* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ -"dMs-cI-mzQ.title" = "Datoteke"; +"dMs-cI-mzQ.title" = "Datoteka"; /* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ "eIs-LJ-TQe.title" = "Provjeri dokument sada"; @@ -231,7 +231,7 @@ "hz9-B4-Xy5.title" = "Usluge"; /* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ -"iLi-Yb-UfX.title" = "Učitavanje napomena uz izdanja"; +"iLi-Yb-UfX.title" = "Učitavanje napomena o izdanju"; /* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ "iUE-OL-cvh.title" = "Pametno kopiranje/umetanje"; @@ -306,7 +306,7 @@ "wmL-ks-XSr.ibShadowedToolTip" = "Aktualiziraj sve"; /* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ -"wpr-3q-Mcd.title" = "Pomogni"; +"wpr-3q-Mcd.title" = "Pomoć"; /* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ "wtc-0j-cAV.title" = "Pravopis i gramatika"; diff --git a/Latest/Interface/hu.lproj/Main.strings b/Latest/Interface/hu.lproj/Main.strings index e69de29b..84d03f53 100644 --- a/Latest/Interface/hu.lproj/Main.strings +++ b/Latest/Interface/hu.lproj/Main.strings @@ -0,0 +1,330 @@ + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Mégse"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Frissítés"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Főmenü"; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Nincs elérhető frissítés"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Legfrissebb segítség"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Újra"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Újra"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Másolás"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Menü"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Beállítások…"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Keresés"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Kihagyás"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Legfrissebb"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Kijelölés használata"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Segítség"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Frissítések ellenőrzése…"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Helyesírás és nyelvtan"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Keresés és csere…"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Latest"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Menü"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "A változások betöltése nem sikerült!"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "A Latest alkalmazásról"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Helyesírás automatikus ellenőrzése"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Adatforrások"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Nem támogatott alkalmazások megjelenítése"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Honlap megtekintése"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Szövegcella"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Teljes képernyő"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Kilépés"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Bezárás"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Segítség"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Kivágás"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Beillesztés"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Állapot"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Állapot"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Összecsukás"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Legfrissebb elrejtése"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Kihagyott alkalmazások megjelenítése"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Kisbetűsítés"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Csere megjelenítése"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Ablak"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Nézet"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Helyesírás ellenőrzése gépelés közben"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Csereszöveg"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Nagybetűsítés"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Nézet"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Frissítés"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Minden kijelölése"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Átalakítások"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Minden megjelenítése"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Előtérbe hozatal"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Ne hagyja figyelmen kívül"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Szolgáltatások"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Cserék"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Többi elrejtése"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Nyelvtan és helyesírás megjelenítése"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Telepített alkalmazások megjelenítése"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Nagybetűsítés"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Átalakítások"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Újratöltés"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Újratöltés"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Ablak"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Fájl"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Megjelenítés a Finderben"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Frissítések keresése…"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Beszéd"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Fájl"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Dokumentum megnézése most"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Következő találat"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Megjelenítés a Finderben"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Keresés"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Szolgáltatások"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Változások betöltése"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Okos másolás/beillesztés"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Nyelvtan ellenőrzése helyesírással"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Csere"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Törlés"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Szerkesztés"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Keresés…"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Támogatás"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Kijelölésre ugrás"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Minden frissítése"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Szerkesztés"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Több soros szöveg"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Minden frissítése"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Okos linkek"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Beszéd leállítása"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Helyesírás"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "Okos írásjelek"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Megnyitás"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Minden frissítése"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Beillesztés és stílus egyeztetése"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "Beszéd"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Előző találat"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Okos írásjelek"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Minden frissítése"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Beszéd kezdete"; diff --git a/Latest/Interface/id.lproj/Main.strings b/Latest/Interface/id.lproj/Main.strings index 8f3731ff..c23b3e07 100644 --- a/Latest/Interface/id.lproj/Main.strings +++ b/Latest/Interface/id.lproj/Main.strings @@ -103,3 +103,219 @@ /* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ "F2S-fz-NVQ.title" = "Bantuan"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Abaikan"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Jendela"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Bantuan Terbaru"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Kemajuan"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimalkan"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Tampilan"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Muat ulang"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Penggantian Teks"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Kapitalisasi"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Jangan Abaikan"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Layanan"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Potong"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Buat Huruf Besar"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Tempel dan Cocokkan Gaya"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Sembunyikan Lainnya"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Layanan"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Ejaan & Tata Bahasa"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Tunjukkan Ejaan dan Tata Bahasa"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Tampilkan Aplikasi yang Terpasang"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Salin/Tempel Cerdas"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Cari"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Memuat Catatan Rilis"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Hapus"; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Label Multiline"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Tautan Cerdas"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Perbarui Semua"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Bantuan"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Perbarui Semua"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Buka"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Berhenti Berbicara"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Ejaan"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Cari Sebelumnya"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Tempel"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Tampilan"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Pembaruan"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Pilih Semua"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Transformasi"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Tampilkan Semua"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bawa Semua ke Depan"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Mulai Berbicara"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Kemajuan"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Sembunyikan Terbaru"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Perbesar"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Tampilkan Aplikasi yang Diabaikan"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Buat Huruf Kecil"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Tampilkan Substitusi"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Subtitusi"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Transformasi"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Mengulangi"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Muat ulang"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Muat ulang"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Cari"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Jendela"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "File"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Tampilkan di Finder"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Periksa Pembaruan…"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Pidato"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "File"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Periksa Dokumen Sekarang"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Cari Berikutnya"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Tampilkan di Folder"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Periksa Tata Bahasa Dengan Ejaan"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Kutipan Cerdas"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Subtitusi"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Sunting"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Cari…"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Donasi"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Lompat ke Pilihan"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Perbarui Semua"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Perbarui Semua"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Sunting"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Gunakan Pilihan untuk Mencari"; diff --git a/Latest/Interface/nb-NB.lproj/Main.strings b/Latest/Interface/nb-NB.lproj/Main.strings deleted file mode 100644 index 4a372924..00000000 --- a/Latest/Interface/nb-NB.lproj/Main.strings +++ /dev/null @@ -1,36 +0,0 @@ - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ -"NNm-bC-QYz.title" = ""; - -/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ -"QRR-k0-TZ4.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ -"UPY-HP-f2p.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ -"VX8-qg-UOL.title" = ""; - -/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ -"h6g-FG-nGh.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ -"6YS-DP-XWA.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ -"6va-ld-AXD.title" = ""; - -/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ -"Gw7-NE-1lh.title" = ""; - -/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ -"IQv-IB-iLA.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ -"SVA-bh-cUe.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ -"rK6-RZ-Ga6.title" = ""; - -/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ -"uWn-a0-oM2.title" = ""; diff --git a/Latest/Interface/nb.lproj/Main.strings b/Latest/Interface/nb.lproj/Main.strings new file mode 100644 index 00000000..8d4f272c --- /dev/null +++ b/Latest/Interface/nb.lproj/Main.strings @@ -0,0 +1,330 @@ + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Tjenester"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Smart Kopiering/Lim inn"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Sjekk Grammatikk med Stavemåte"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Utskiftninger"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Slett"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Doner"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Hopp til Utvalg"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Oppdater Alt"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Rediger"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Oppdater Alt"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Bruk Utvalg for Finn"; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Etikett med Flere Linjer"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Oppdater Alle"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Smarte Lenker"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Meny"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Kopier"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Siste Hjelp"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Lim inn"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Oppdater"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Avslutt"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Hjelp"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Last inn på nytt"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Teksterstatning"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Bruk Store Bokstaver"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Tjenester"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Vis alt"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Fil"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Klipp Ut"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Ikke Ignorer"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Finn"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Vindu"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Utskiftninger"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Vis Erstatninger"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Vindu"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Vis Stavemåte og Grammatikk"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Skjul Andre"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Fil"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Vis i Finder"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Finn"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Laster Inn Versjonsmerknader"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Smarte Sitater"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Tale"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Oppdatering"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Finn og Erstatt…"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Siste"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Tekstboks"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Gå til fullskjermmodus"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Avslutt siste"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Søk etter programvareoppdateringer…"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "Om Siste"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Automatisk Stavekontroll"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Data Detektorer"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Vis Apper Uten Støtte"; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Besøk Siste Nettside"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Hovedmeny"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Angre"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Meny"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Innstillinger…"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "Kunne ikke laste inn versjonsnotatene!"; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Ingen Tilgjengelige Oppdateringer"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Sjekk Stavemåten Mens Du Skriver"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Vis"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Vis"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Velg Alle"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Transformasjoner"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring Alle Foran"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Start Tale"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Framgang"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Framgang"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimer"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Skjul Siste"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Overse"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Vis Ignorerte Apper"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Gjør Om Til Små Bokstaver"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Vis Installerte Apper"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Gjør Om Til Store Bokstaver"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Transformasjoner"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Gjør om"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Last Inn På Nytt"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Last Inn På Nytt"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Vis i Finder"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Se etter Oppdateringer…"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Sjekk Dokumentet Nå"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Finn Neste"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Rediger"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Finn…"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Stopp Tale"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Siste"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Staving"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "Smarte Streker"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Åpne"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Oppdater Alt"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Hjelp"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Stavemåte og Grammatikk"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Lim inn og Tilpass Stil"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "Tale"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Finn Forrige"; diff --git a/Latest/Interface/ro.lproj/Main.strings b/Latest/Interface/ro.lproj/Main.strings index e69de29b..b1db50da 100644 --- a/Latest/Interface/ro.lproj/Main.strings +++ b/Latest/Interface/ro.lproj/Main.strings @@ -0,0 +1,18 @@ + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Actualizare"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Găsire și înlocuire…"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Meniu"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Cea mai recentă"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Celula de text"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Celula de text"; diff --git a/Latest/Interface/sk.lproj/Main.strings b/Latest/Interface/sk.lproj/Main.strings index ab7d523b..d1c4aced 100644 --- a/Latest/Interface/sk.lproj/Main.strings +++ b/Latest/Interface/sk.lproj/Main.strings @@ -30,7 +30,7 @@ "65u-P1-4rd.title" = "Detektory údajov"; /* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ -"6Cd-Qc-3Xc.title" = "Zobraziť nepodporovaných aplikácií"; +"6Cd-Qc-3Xc.title" = "Zobraziť nepodporované aplikácie"; /* Class = "NSTextFieldCell"; title = "New Version"; ObjectID = "6YS-DP-XWA"; */ "6YS-DP-XWA.title" = ""; @@ -99,7 +99,7 @@ "Kd2-mp-pUS.title" = "Zobraziť všetko"; /* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ -"LE2-aR-0XJ.title" = "Privesť všetko na začiatok"; +"LE2-aR-0XJ.title" = "Presunúť všetko do popredia"; /* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ "Nnu-IS-gsC.title" = "Začať hovoriť"; @@ -153,7 +153,7 @@ "XVu-eG-PUK.title" = "Zobraziť nainštalované aplikácie"; /* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ -"Xng-11-x9Q.title" = "Urobiť veľké písmená"; +"Xng-11-x9Q.title" = "Uprav na veľké písmená"; /* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ "YRo-LJ-qSP.title" = "Premeny"; @@ -291,7 +291,7 @@ "Olw-nP-bQN.title" = "Skryť Latest"; /* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ -"SKi-gD-wYr.title" = "Urobiť malé písmená"; +"SKi-gD-wYr.title" = "Uprav na malé písmená"; /* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ "eIs-LJ-TQe.title" = "Skontrolovať dokument teraz"; diff --git a/Latest/Interface/sv.lproj/Main.strings b/Latest/Interface/sv.lproj/Main.strings index 5dd8d82f..e319de7d 100644 --- a/Latest/Interface/sv.lproj/Main.strings +++ b/Latest/Interface/sv.lproj/Main.strings @@ -1,3 +1,330 @@ /* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ "00n-xr-jcQ.title" = "Uppdatera"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Kopiera"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "Om Latest"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Latest"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Meny"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Avsluta Latest"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Sök efter uppdateringar…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Sök och ersätt…"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Rätta stavning automatiskt"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Helskärmsläge"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Visa appar som inte stöds"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Textcell"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Datadetektorer"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Huvudmeny"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Inställningar…"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Stäng"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Inga tillgängliga uppdateringar"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Kontrollera stavning medan jag skriver"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "Kunde inte ladda versionsinformation!"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Latest Hjälp"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Klistra in"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Textersättning"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Stora bokstäver"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Ladda om"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Tjänster"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Börja tala"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Visa alla"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Göm Latest"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Ignorera"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zooma"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Visa ignorerade appar"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Små bokstäver"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Visa ersättningar"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Ersättningar"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Göm övriga"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Visa stavning och grammatik"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Visa installerade appar"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Uppdatera"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Markera allt"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Lägg alla överst"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Innehåll"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Innehåll"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Skiftläge"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimera"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Förlopp"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Förlopp"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Stora bokstäver"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Gör om"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Sök"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Visa i Finder"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Tal"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Kontrollera dokument nu"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Sök nästa"; + +/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Visa i Finder"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Sök"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Tjänster"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Smart kopiering/inklistring"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Kontrollera grammatik tillsammans med stavning"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Smarta citationstecken"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Ersättningar"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Sök…"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Donera"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Skiftläge"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Arkiv"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Arkiv"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Ladda om"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Ladda om"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Laddar versionsinformation"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Gå till markering"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Uppdatera alla"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Redigera"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Använd markering för sökning"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Uppdatera alla"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Smarta länkar"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Sluta tala"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Latest"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Etikett med flera rader"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Öppna"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Uppdatera alla"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Stavning och grammatik"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Klistra in och matcha stilen"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "Tal"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Sök föregående"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Hjälp"; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Besök webbsidan för Latest"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Meny"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Klipp ut"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Ignorera inte"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Ångra"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Hjälp"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Sök efter uppdateringar…"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Redigera"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Fönster"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Radera"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Fönster"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Uppdatera alla"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Stavning"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "Smarta streck"; diff --git a/Latest/Interface/tr.lproj/Main.strings b/Latest/Interface/tr.lproj/Main.strings index e69de29b..3d3d986a 100644 --- a/Latest/Interface/tr.lproj/Main.strings +++ b/Latest/Interface/tr.lproj/Main.strings @@ -0,0 +1,48 @@ + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Güncelle"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Bul ve Değiştir…"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Menü"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Tam Ekran Modu"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Latest'ten Çık"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Güncellemeleri Denetle…"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Kopyala"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "Latest Hakkında"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Otomatik Olarak Doğru Yazım"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Latest"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Metin Hücresi"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Geri Al"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Veri Dedektörleri"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Desteklenmeyen Uygulamaları Göster"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Mevcut güncelleme yok"; diff --git a/Latest/Interface/uk.lproj/Main.strings b/Latest/Interface/uk.lproj/Main.strings index e69de29b..071ac4a6 100644 --- a/Latest/Interface/uk.lproj/Main.strings +++ b/Latest/Interface/uk.lproj/Main.strings @@ -0,0 +1,330 @@ + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6YS-DP-XWA"; */ +"6YS-DP-XWA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "6va-ld-AXD"; */ +"6va-ld-AXD.title" = ""; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "00n-xr-jcQ"; */ +"00n-xr-jcQ.title" = "Оновлення"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "1Gu-Ep-ZWZ"; */ +"1Gu-Ep-ZWZ.title" = "Знайти та замінити…"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Налаштування…"; + +/* Class = "NSMenu"; title = "Menu"; ObjectID = "Ake-Tt-cX3"; */ +"Ake-Tt-cX3.title" = "Меню"; + +/* Class = "NSTextFieldCell"; title = "No Updates Available"; ObjectID = "D2N-5U-W7Z"; */ +"D2N-5U-W7Z.title" = "Немає доступних оновлень"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "65u-P1-4rd"; */ +"65u-P1-4rd.title" = "Детектори даних"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "63s-Hc-NQY"; */ +"63s-Hc-NQY.title" = "Автоматичне виправлення орфографії"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "Ah1-jH-gCv"; */ +"Ah1-jH-gCv.title" = "Відмінити"; + +/* Class = "NSTextFieldCell"; title = "Failed to load the release notes!"; ObjectID = "Cm3-IX-Kw4"; */ +"Cm3-IX-Kw4.title" = "Не вдалося завантажити примітки до випуску!"; + +/* Class = "NSMenuItem"; title = "Latest"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "Останнє"; + +/* Class = "NSMenuItem"; title = "Menu"; ObjectID = "1Z9-ws-FMW"; */ +"1Z9-ws-FMW.title" = "Меню"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "3GZ-aM-hwz"; */ +"3GZ-aM-hwz.title" = "Текстова комірка"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Увійти до повноекранного режиму"; + +/* Class = "NSMenuItem"; title = "Quit Latest"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Закрити"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "4vf-ia-dzo"; */ +"4vf-ia-dzo.title" = "Перевірка оновлень…"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "5cs-kb-AQj"; */ +"5cs-kb-AQj.title" = "Копіювати"; + +/* Class = "NSMenuItem"; title = "About Latest"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "Про Latest"; + +/* Class = "NSMenuItem"; title = "Show Unsupported Apps"; ObjectID = "6Cd-Qc-3Xc"; */ +"6Cd-Qc-3Xc.title" = "Показати Непідтримувані Застосунки"; + +/* Class = "NSMenuItem"; title = "Visit Latest-Website"; ObjectID = "7c2-6r-Saw"; */ +"7c2-6r-Saw.title" = "Відвідати сайт Latest"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Головне меню"; + +/* Class = "NSWindow"; title = ""; ObjectID = "IQv-IB-iLA"; */ +"IQv-IB-iLA.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "NNm-bC-QYz"; */ +"NNm-bC-QYz.title" = ""; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "QRR-k0-TZ4"; */ +"QRR-k0-TZ4.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "SVA-bh-cUe"; */ +"SVA-bh-cUe.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "UPY-HP-f2p"; */ +"UPY-HP-f2p.title" = ""; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "VX8-qg-UOL"; */ +"VX8-qg-UOL.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Current Version"; ObjectID = "h6g-FG-nGh"; */ +"h6g-FG-nGh.title" = ""; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "WX3-Xi-vCY"; */ +"WX3-Xi-vCY.title" = "Показати правопис і граматику"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Nnu-IS-gsC"; */ +"Nnu-IS-gsC.title" = "Почати говорити"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Мінімізувати"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Сховати інше"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "Xng-11-x9Q"; */ +"Xng-11-x9Q.title" = "Зробити верхній регістр"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Сервіси"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "iis-Dj-0TB"; */ +"iis-Dj-0TB.title" = "Перевірьте граматику з правописом"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "mu8-FK-tXI"; */ +"mu8-FK-tXI.title" = "Знайти…"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "r6p-yM-qya"; */ +"r6p-yM-qya.title" = "Редагувати"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "mTS-fP-YWg"; */ +"mTS-fP-YWg.title" = "Редагувати"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "wtc-0j-cAV"; */ +"wtc-0j-cAV.title" = "Правопис і граматика"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Закрити"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "ES5-dd-1TR"; */ +"ES5-dd-1TR.title" = "Перевіряти правопис під час набору тексту"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Допомога"; + +/* Class = "NSMenuItem"; title = "Latest Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "Допомога Latest"; + +/* Class = "NSButton"; ibShadowedToolTip = "Reload"; ObjectID = "FM4-aR-lhK"; */ +"FM4-aR-lhK.ibShadowedToolTip" = "Перезавантажити"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "G1D-lo-gfr"; */ +"G1D-lo-gfr.title" = "Заміна тексту"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "GMn-QE-qPC"; */ +"GMn-QE-qPC.title" = "Вставити"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "GZQ-fq-mFU"; */ +"GZQ-fq-mFU.title" = "Писати з великої літери"; + +/* Class = "NSButtonCell"; title = ""; ObjectID = "Gw7-NE-1lh"; */ +"Gw7-NE-1lh.title" = ""; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "Переглянути"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "Переглянути"; + +/* Class = "NSMenuItem"; title = "Update"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Оновлення"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Id2-BS-gzO"; */ +"Id2-BS-gzO.title" = "Вибрати все"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "J6q-tg-1G2"; */ +"J6q-tg-1G2.title" = "Перетворення"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Показати все"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Вивести все на передній план"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "Lga-BY-8RF"; */ +"Lga-BY-8RF.title" = "Вирізати"; + +/* Class = "NSMenuItem"; title = "Don't Ignore"; ObjectID = "Ljr-hV-usc"; */ +"Ljr-hV-usc.title" = "Не ігнорувати"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Сервіси"; + +/* Class = "NSToolbarItem"; label = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.label" = "Прогрес"; + +/* Class = "NSToolbarItem"; paletteLabel = "Progress"; ObjectID = "OLo-39-3Sm"; */ +"OLo-39-3Sm.paletteLabel" = "Прогрес"; + +/* Class = "NSMenuItem"; title = "Hide Latest"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Сховати Latest"; + +/* Class = "NSMenuItem"; title = "Ignore"; ObjectID = "PS4-wi-kF9"; */ +"PS4-wi-kF9.title" = "Ігнорувати"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Збільшити"; + +/* Class = "NSMenuItem"; title = "Show Ignored Apps"; ObjectID = "Rh5-N3-X6H"; */ +"Rh5-N3-X6H.title" = "Показати ігноровані застосунки"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "SKi-gD-wYr"; */ +"SKi-gD-wYr.title" = "Зробити нижній регістр"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "TKo-Xa-BjT"; */ +"TKo-Xa-BjT.title" = "Показати заміни"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Вікно"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "UVA-tb-pA9"; */ +"UVA-tb-pA9.title" = "Заміни"; + +/* Class = "NSMenuItem"; title = "Show Installed Apps"; ObjectID = "XVu-eG-PUK"; */ +"XVu-eG-PUK.title" = "Показати встановлені застосунки"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "YRo-LJ-qSP"; */ +"YRo-LJ-qSP.title" = "Перетворення"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "Yj4-SM-ocg"; */ +"Yj4-SM-ocg.title" = "Повторити"; + +/* Class = "NSToolbarItem"; label = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.label" = "Перезавантажити"; + +/* Class = "NSToolbarItem"; paletteLabel = "Reload"; ObjectID = "ZWx-q6-TJz"; */ +"ZWx-q6-TJz.paletteLabel" = "Перезавантажити"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "aCF-1x-0c1"; */ +"aCF-1x-0c1.title" = "Знайти"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Вікно"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "Файл"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "bm3-iR-6vZ"; */ +"bm3-iR-6vZ.title" = "Показати в Пошуку"; + +/* Class = "NSMenuItem"; title = "Check for Updates…"; ObjectID = "c4C-I9-Gd0"; */ +"c4C-I9-Gd0.title" = "Перевірка оновлень…"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "cWB-Qy-jEV"; */ +"cWB-Qy-jEV.title" = "Вимова"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "Файл"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "eIs-LJ-TQe"; */ +"eIs-LJ-TQe.title" = "Перевірити документ зараз"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "gU8-2v-afa"; */ +"gU8-2v-afa.title" = "Пошук далі"; + +/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "h9B-7u-6ru"; */ +"h9B-7u-6ru.title" = "Показати в Пошуку"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "hOB-nw-cIX"; */ +"hOB-nw-cIX.title" = "Знайти"; + +/* Class = "NSTextFieldCell"; title = "Loading Release Notes"; ObjectID = "iLi-Yb-UfX"; */ +"iLi-Yb-UfX.title" = "Завантаження приміток до випуску"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "iUE-OL-cvh"; */ +"iUE-OL-cvh.title" = "Розумне копіювання/вставлення"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "jEo-hx-9Qp"; */ +"jEo-hx-9Qp.title" = "Розумні цитати"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "l11-q2-MLf"; */ +"l11-q2-MLf.title" = "Заміни"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "mS9-zq-Dvi"; */ +"mS9-zq-Dvi.title" = "Видалити"; + +/* Class = "NSMenuItem"; title = "Donate"; ObjectID = "o46-Ym-MCY"; */ +"o46-Ym-MCY.title" = "Пожертвувати"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "pDo-aP-nIF"; */ +"pDo-aP-nIF.title" = "Перейти до вибору"; + +/* Class = "NSToolbarItem"; label = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.label" = "Оновити все"; + +/* Class = "NSToolbarItem"; paletteLabel = "Update All"; ObjectID = "qS5-vO-h2j"; */ +"qS5-vO-h2j.paletteLabel" = "Оновити все"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "rK6-RZ-Ga6"; */ +"rK6-RZ-Ga6.title" = ""; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "ryW-4P-l7k"; */ +"ryW-4P-l7k.title" = "Використовувати виділення для пошуку"; + +/* Class = "NSTextFieldCell"; title = "Multiline Label"; ObjectID = "spt-ns-lYo"; */ +"spt-ns-lYo.title" = "Багаторядковий ярлик"; + +/* Class = "NSMenuItem"; title = "Update All"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Оновити все"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "tw7-g1-6Wz"; */ +"tw7-g1-6Wz.title" = "Розумні посилання"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "uGs-GF-i9Z"; */ +"uGs-GF-i9Z.title" = "Припинити говорити"; + +/* Class = "NSMenu"; title = "Latest"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "Latest"; + +/* Class = "NSTextFieldCell"; title = ""; ObjectID = "uWn-a0-oM2"; */ +"uWn-a0-oM2.title" = ""; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "ucY-cy-GON"; */ +"ucY-cy-GON.title" = "Правопис"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "uw5-pW-jNu"; */ +"uw5-pW-jNu.title" = "Розумні тире"; + +/* Class = "NSMenuItem"; title = "Open"; ObjectID = "w14-Ia-4l9"; */ +"w14-Ia-4l9.title" = "Відкрити"; + +/* Class = "NSButton"; ibShadowedToolTip = "Update All"; ObjectID = "wmL-ks-XSr"; */ +"wmL-ks-XSr.ibShadowedToolTip" = "Оновити все"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Допомога"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "x6Q-gr-lO2"; */ +"x6Q-gr-lO2.title" = "Вставити та підібрати стиль"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "y5A-ib-gR6"; */ +"y5A-ib-gR6.title" = "Вимова"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "yPN-rG-tgD"; */ +"yPN-rG-tgD.title" = "Знайти попереднє"; diff --git a/Latest/Model/AppLibrary.swift b/Latest/Model/AppLibrary.swift index 4a6045dd..50a32b6b 100644 --- a/Latest/Model/AppLibrary.swift +++ b/Latest/Model/AppLibrary.swift @@ -48,7 +48,15 @@ class AppLibrary { self.appSearchQuery.disableUpdates() let appSearchQueryResults = self.appSearchQuery.results + var isSpotlightEnabled = true if appSearchQueryResults.isEmpty { + isSpotlightEnabled = false + } else if appSearchQueryResults.count == 1 { + if (appSearchQueryResults[0] as? NSMetadataItem)?.value(forAttribute: NSMetadataItemPathKey) as? String == "/Applications/Safari.app" { + isSpotlightEnabled = false // In macOS 13.0.1, Spotlight query returns a single installed app Safari even when Spotlight indexing on applications itself is disabled! + } + } + if !isSpotlightEnabled { // Look for applications in the /Applications folder manually let fileManager = FileManager.default var bundles = [App.Bundle]() diff --git a/Latest/Model/Update Checker Extensions/MacAppStoreCheckerOperation.swift b/Latest/Model/Update Checker Extensions/MacAppStoreCheckerOperation.swift index bedff498..428f2d39 100644 --- a/Latest/Model/Update Checker Extensions/MacAppStoreCheckerOperation.swift +++ b/Latest/Model/Update Checker Extensions/MacAppStoreCheckerOperation.swift @@ -20,12 +20,10 @@ class MacAppStoreUpdateCheckerOperation: StatefulOperation, UpdateCheckerOperati } static func canPerformUpdateCheck(forAppAt url: URL) -> Bool { - let bundle = Bundle(path: url.path) let fileManager = FileManager.default - // Mac Apps contain a receipt, iOS apps are wrapped inside a macOS bundle, but without an actual purchase receipt - guard let receiptPath = bundle?.appStoreReceiptURL?.path, - fileManager.fileExists(atPath: receiptPath) || receiptPath.contains("WrappedBundle") else { return false } + // Mac Apps contain a receipt, iOS apps are only available via the Mac App Store + guard let receiptPath = receiptPath(forAppAt: url), fileManager.fileExists(atPath: receiptPath) || isIOSAppBundle(at: url) else { return false } return true } @@ -76,6 +74,22 @@ class MacAppStoreUpdateCheckerOperation: StatefulOperation, UpdateCheckerOperati } } + + // MARK: - Bundle Operations + + /// Returns the app store receipt path for the app at the given URL, if available. + static fileprivate func receiptPath(forAppAt url: URL) -> String? { + let bundle = Bundle(path: url.path) + return bundle?.appStoreReceiptURL?.path + } + + /// Returns whether the app at the given URL is an iOS app wrapped to run on macOS. + static fileprivate func isIOSAppBundle(at url: URL) -> Bool { + // iOS apps are wrapped inside a macOS bundle + let path = receiptPath(forAppAt: url) + return path?.contains("WrappedBundle") ?? false + } + } extension MacAppStoreUpdateCheckerOperation { @@ -83,9 +97,16 @@ extension MacAppStoreUpdateCheckerOperation { /// Returns a proper update object from the given app store entry. private func update(from entry: AppStoreEntry) -> App.Update { let version = Version(versionNumber: entry.versionNumber, buildNumber: nil) - return App.Update(app: self.app, remoteVersion: version, date: entry.date, releaseNotes: entry.releaseNotes) { app in - // Update: Open App Store page where the user can update manually - NSWorkspace.shared.open(entry.pageURL) + return App.Update(app: self.app, remoteVersion: version, minimumOSVersion: entry.minimumOSVersion, date: entry.date, releaseNotes: entry.releaseNotes) { app in + // iOS Apps: Open App Store page where the user can update manually. The update operation does not work for them. + if Self.isIOSAppBundle(at: app.fileURL) { + NSWorkspace.shared.open(entry.pageURL) + } + + // Perform the update in-app + else { + UpdateQueue.shared.addOperation(MacAppStoreUpdateOperation(bundleIdentifier: app.bundleIdentifier, appIdentifier: app.identifier, appStoreIdentifier: entry.appStoreIdentifier)) + } } } @@ -181,6 +202,12 @@ fileprivate struct AppStoreEntry: Decodable { /// The link to the app store page. let pageURL: URL + /// The identifier for this app in the App Store context. + let appStoreIdentifier: UInt64 + + /// The minimum OS version required to run this update. + let minimumOSVersion: OperatingSystemVersion + // MARK: - Decoding @@ -189,6 +216,8 @@ fileprivate struct AppStoreEntry: Decodable { case releaseNotes = "releaseNotes" case date = "currentVersionReleaseDate" case pageURL = "trackViewUrl" + case appStoreIdentifier = "trackId" + case minimumOSVersion = "minimumOsVersion" } init(from decoder: Decoder) throws { @@ -210,6 +239,11 @@ fileprivate struct AppStoreEntry: Decodable { throw MalformedURLError } self.pageURL = url + + self.appStoreIdentifier = try container.decode(UInt64.self, forKey: .appStoreIdentifier) + + let osVersionString = try container.decode(String.self, forKey: .minimumOSVersion) + self.minimumOSVersion = try OperatingSystemVersion(string: osVersionString) } diff --git a/Latest/Model/Update Checker Extensions/SparkleCheckerOperation.swift b/Latest/Model/Update Checker Extensions/SparkleCheckerOperation.swift index f6a757c1..2c27ea18 100644 --- a/Latest/Model/Update Checker Extensions/SparkleCheckerOperation.swift +++ b/Latest/Model/Update Checker Extensions/SparkleCheckerOperation.swift @@ -7,6 +7,7 @@ // import Cocoa +import Sparkle /// The operation for checking for updates for a Sparkle app. class SparkleUpdateCheckerOperation: StatefulOperation, UpdateCheckerOperation { @@ -53,211 +54,126 @@ class SparkleUpdateCheckerOperation: StatefulOperation, UpdateCheckerOperation { /// The update fetched during the checking operation. fileprivate var update: App.Update? + /// The updater used to check for updates to this app. + private var updater: SPUUpdater? + // MARK: - Operation override func execute() { - guard let url = self.url else { + // Gather app and app bundle + guard let bundle = Bundle(identifier: self.app.bundleIdentifier) else { self.finish(with: LatestError.updateInfoNotFound) return } - - let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30) - let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in - if error == nil, - let xmlData = data { - - let parser = XMLParser(data: xmlData) - parser.delegate = self - - if !parser.parse() { - self.finish() - } - } else { - self.finish(with: error ?? MalformedURLError) - } - }) - task.resume() + DispatchQueue.main.async { + // Instantiate a new updater that performs the update + let updater = SPUUpdater(hostBundle: bundle, applicationBundle: bundle, userDriver: self, delegate: self) + + do { + try updater.start() + } catch let error { + self.finish(with: error) + } + + updater.checkForUpdates() + + self.updater = updater + } } - - // MARK: - XML Parser - - /// Variable holding the current parsing state - private var currentlyParsing : ParsingType = .none - - /// An array holding all versions of the app contained in the Sparkle feed - private var updates = [UpdateEntry]() - -} - -extension SparkleUpdateCheckerOperation: XMLParserDelegate { - - private static let dateFormatter: DateFormatter = { - // Setup date formatter - let dateFormatter = DateFormatter() - dateFormatter.locale = Locale(identifier: "en_US") + fileprivate func finish(with appcastItem: SUAppcastItem) { + let version = Version(versionNumber: appcastItem.displayVersionString, buildNumber: appcastItem.versionString) - // Example of the date format: Mon, 28 Nov 2016 14:00:00 +0100 - // This is problematic, because some developers use other date formats - dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z" + // OS Version + var minimumOSVersion: OperatingSystemVersion? = nil + if let minimumVersion = appcastItem.minimumSystemVersion { + minimumOSVersion = try? OperatingSystemVersion(string: minimumVersion) + } - return dateFormatter - }() - - /// Enum reflecting the different parsing states - private enum ParsingType { - case pubDate - case releaseNotesLink - case releaseNotesData - case version - case shortVersion - - case none - } - - func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { - if elementName == "item" { - self.createVersion() - } - - guard let info = self.currentUpdate else { return } - - // Lets find the version number - switch elementName { - case "enclosure": - info.versionNumber = attributeDict["sparkle:shortVersionString"] ?? info.versionNumber - info.buildNumber = attributeDict["sparkle:version"] ?? info.buildNumber - case "pubDate": - self.currentlyParsing = .pubDate - case "sparkle:releaseNotesLink": - self.currentlyParsing = .releaseNotesLink - case "sparkle:version": - self.currentlyParsing = .version - case "sparkle:shortVersionString": - self.currentlyParsing = .shortVersion - case "description": - self.currentlyParsing = .releaseNotesData - default: - self.currentlyParsing = .none - } - - } - - func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { - self.currentlyParsing = .none - } - - func parser(_ parser: XMLParser, foundCharacters string: String) { - guard let info = self.currentUpdate else { return } - - switch currentlyParsing { - case .pubDate: - if let date = Self.dateFormatter.date(from: string.trimmingCharacters(in: .whitespacesAndNewlines)) { - info.date = date - } - case .releaseNotesLink: - // Release Notes Link wins over other release notes types - if case .url(_) = info.releaseNotes { return } - guard let url = URL(string: string.trimmingCharacters(in: .whitespacesAndNewlines)) else { return } - info.releaseNotes = .url(url: url) - case .releaseNotesData: - if info.releaseNotes == nil { - info.releaseNotes = .html(string: "") - } - - if case .html(var releaseNotes) = info.releaseNotes { - releaseNotes += string - info.releaseNotes = .html(string: releaseNotes) - } - case .version: - info.buildNumber = string - case .shortVersion: - info.versionNumber = string - case .none: - () - } - } - - func parserDidEndDocument(_ parser: XMLParser) { - var foundItemWithDate = true - - self.updates = self.updates.filter { (info) -> Bool in - return !info.version.isEmpty - } - - self.updates.sort { (first, second) -> Bool in - guard let firstDate = first.date else { - foundItemWithDate = false - return false - } - - guard let secondDate = second.date else { return true } - - // Ok, we can sort after dates now - return firstDate.compare(secondDate) == .orderedDescending - } - - if !foundItemWithDate && self.updates.count > 1 { - // The feed did not provide proper dates, so we only can try to compare version numbers against each other - // With this information, we might be able to find the newest item - // I don't want this to be the default option, as there might be version formats I don't think of right now - // We will see how this plays out in the future - self.updates.sort(by: { (first, second) -> Bool in - return first.version >= second.version - }) - } - - guard let update = self.updates.first else { - self.finish(with: LatestError.updateInfoNotFound) - return - } + // Release Notes + var releaseNotes: App.Update.ReleaseNotes? = nil + if let description = appcastItem.itemDescription { + releaseNotes = .html(string: description) + } else if let url = appcastItem.releaseNotesURL ?? appcastItem.fullReleaseNotesURL { + releaseNotes = .url(url: url) + } - self.update = App.Update(app: self.app, remoteVersion: update.version, date: update.date, releaseNotes: update.releaseNotes, updateAction: { app in + // Build update + self.update = App.Update(app: self.app, remoteVersion: version, minimumOSVersion: minimumOSVersion, date: appcastItem.date, releaseNotes: releaseNotes, updateAction: { app in UpdateQueue.shared.addOperation(SparkleUpdateOperation(bundleIdentifier: app.bundleIdentifier, appIdentifier: app.identifier)) }) - - DispatchQueue.main.async(execute: { + + DispatchQueue.main.async(execute: { self.finish() - }) - } + }) + } +} + +// MARK: - Driver Implementation +extension SparkleUpdateCheckerOperation: SPUUserDriver { + // MARK: - Checking for Updates - // MARK: - Helper Methods - - /// Creates version info object and appends it to the versionInfos array - private func createVersion() { - self.updates.append(UpdateEntry()) - } + func show(_ request: SPUUpdatePermissionRequest, reply: @escaping (SUUpdatePermissionResponse) -> Void) { + reply(.init(automaticUpdateChecks: false, sendSystemProfile: false)) + } - /// The currently parsed update entry. - private var currentUpdate: UpdateEntry? { - return self.updates.last + func showUpdateFound(with appcastItem: SUAppcastItem, state: SPUUserUpdateState, reply: @escaping (SPUUserUpdateChoice) -> Void) { + self.finish(with: appcastItem) + } + + func showUpdateNotFoundWithError(_ error: Error, acknowledgement: @escaping () -> Void) { + let nsError = error as NSError + if nsError.domain == SUSparkleErrorDomain && nsError.code == SUError.noUpdateError.rawValue, let appcastItem = nsError.userInfo[SPULatestAppcastItemFoundKey] as? SUAppcastItem { + self.finish(with: appcastItem) + } + + self.finish(with: error) + acknowledgement() } -} - -// MARK: - Utilities - -/// Simple container holding update information for a single entry in the update feed. -fileprivate class UpdateEntry { + func showUpdaterError(_ error: Error, acknowledgement: @escaping () -> Void) { + self.finish(with: error) + acknowledgement() + } - /// The version information of the entry. - var version: Version { - return Version(versionNumber: versionNumber, buildNumber: buildNumber) + func showUpdateInstalledAndRelaunched(_ relaunched: Bool, acknowledgement: @escaping () -> Void) { + acknowledgement() + self.finish() } + - /// The version number of the entry. - var versionNumber: String? + // MARK: - Ignored Methods + func showUserInitiatedUpdateCheck(cancellation: @escaping () -> Void) {} + func showUpdateReleaseNotes(with downloadData: SPUDownloadData) {} + func showUpdateReleaseNotesFailedToDownloadWithError(_ error: Error) {} + + func showUpdateInFocus() {} + func showDownloadInitiated(cancellation: @escaping () -> Void) {} + func showDownloadDidReceiveExpectedContentLength(_ expectedContentLength: UInt64) {} + func showDownloadDidReceiveData(ofLength length: UInt64) {} + private func scheduleProgressHandler() {} + + func showDownloadDidStartExtractingUpdate() {} + func showExtractionReceivedProgress(_ progress: Double) {} + func showReady(toInstallAndRelaunch reply: @escaping (SPUUserUpdateChoice) -> Void) {} + func showInstallingUpdate(withApplicationTerminated applicationTerminated: Bool, retryTerminatingApplication: @escaping () -> Void) {} + + func showCanCheck(forUpdates canCheckForUpdates: Bool) {} + func dismissUserInitiatedUpdateCheck() {} + func showSendingTerminationSignal() {} + func dismissUpdateInstallation() {} - /// The build number of the entry. - var buildNumber: String? +} + +extension SparkleUpdateCheckerOperation: SPUUpdaterDelegate { - /// The release date of the update entry. - var date: Date? + func feedURLString(for updater: SPUUpdater) -> String? { + // We can try to supply a valid feed as addition to Sparkle's own methods. + // For some cases (like DevMate) Sparkle fails to retrieve an appcast by itself. + return Sparke.feedURL(from: updater.hostBundle)?.absoluteString + } - /// Release notes associated with the entry. - var releaseNotes: App.Update.ReleaseNotes? - } diff --git a/Latest/Model/Update.swift b/Latest/Model/Update.swift index 96fe1155..33ec1143 100644 --- a/Latest/Model/Update.swift +++ b/Latest/Model/Update.swift @@ -21,6 +21,9 @@ extension App { /// The newest version of the app available for download. let remoteVersion: Version + /// The minimum version required to perform this update. + let minimumOSVersion: OperatingSystemVersion? + /// The release date of the update let date : Date? @@ -32,9 +35,10 @@ extension App { let updateAction: UpdateAction /// Initializes the update with the given parameters. - init(app: App.Bundle, remoteVersion: Version, date: Date?, releaseNotes: ReleaseNotes?, updateAction: @escaping UpdateAction) { + init(app: App.Bundle, remoteVersion: Version, minimumOSVersion: OperatingSystemVersion?, date: Date?, releaseNotes: ReleaseNotes?, updateAction: @escaping UpdateAction) { self.app = app self.remoteVersion = remoteVersion + self.minimumOSVersion = minimumOSVersion self.date = date self.releaseNotes = releaseNotes self.updateAction = updateAction @@ -42,7 +46,13 @@ extension App { /// Whether an update is available for the given app. var updateAvailable: Bool { - return self.remoteVersion > self.app.version + var updateAvailable = (remoteVersion > app.version) + + if updateAvailable, let minimumOSVersion { + updateAvailable = ProcessInfo.processInfo.isOperatingSystemAtLeast(minimumOSVersion) + } + + return updateAvailable } /// Whether the app is currently being updated. diff --git a/Latest/Model/Updater/MacAppStoreUpdateOperation.swift b/Latest/Model/Updater/MacAppStoreUpdateOperation.swift new file mode 100644 index 00000000..edacda09 --- /dev/null +++ b/Latest/Model/Updater/MacAppStoreUpdateOperation.swift @@ -0,0 +1,192 @@ +// +// MacAppStoreUpdateOperation.swift +// Latest +// +// Created by Max Langer on 01.07.19. +// Copyright © 2019 Max Langer. All rights reserved. +// + +import CommerceKit +import StoreFoundation + +/// The operation updating Mac App Store apps. +class MacAppStoreUpdateOperation: UpdateOperation { + + /// The purchase associated with the to be updated app. + private var purchase: SSPurchase! + + /// The observer that observes the Mac App Store updater. + private var observerIdentifier: CKDownloadQueueObserver? + + /// The app-store identifier for the related app. + private var itemIdentifier: UInt64 + + init(bundleIdentifier: String, appIdentifier: App.Bundle.Identifier, appStoreIdentifier: UInt64) { + self.itemIdentifier = appStoreIdentifier + super.init(bundleIdentifier: bundleIdentifier, appIdentifier: appIdentifier) + } + + + // MARK: - Operation Overrides + + override func execute() { + super.execute() + + // Verify user is signed in + var storeAccount: ISStoreAccount? + if #unavailable(macOS 12) { + // Monterey obscured the user's account information, but still allows + // redownloads without passing it to SSPurchase. + // https://github.com/mas-cli/mas/issues/417 + guard let account = ISStoreAccount.primaryAccount else { + self.finish(with: LatestError.notSignedInToAppStore) + return + } + + storeAccount = account + } + + // Construct purchase to receive update + let purchase = SSPurchase(itemIdentifier: self.itemIdentifier, account: storeAccount) + CKPurchaseController.shared().perform(purchase, withOptions: 0) { [weak self] purchase, _, error, response in + guard let self = self else { return } + + if let error = error { + self.finish(with: error) + return + } + + if let downloads = response?.downloads, downloads.count > 0, let purchase = purchase { + self.purchase = purchase + self.observerIdentifier = CKDownloadQueue.shared().add(self) + } else { + self.finish(with: LatestError.updateInfoNotFound) + } + } + } + + override func finish() { + if let observerIdentifier = self.observerIdentifier { + CKDownloadQueue.shared().remove(observerIdentifier) + } + + super.finish() + } + +} + + +// MARK: - Download Observer + +extension MacAppStoreUpdateOperation: CKDownloadQueueObserver { + + func downloadQueue(_ downloadQueue: CKDownloadQueue!, statusChangedFor download: SSDownload!) { + // Cancel download if the operation has been cancelled + if self.isCancelled { + download.cancel(withStoreClient: ISStoreClient(storeClientType: 0)) + self.finish() + return + } + + guard download.metadata.itemIdentifier == self.purchase.itemIdentifier, + let status = download.status else { + return + } + + guard !status.isFailed && !status.isCancelled else { + downloadQueue.removeDownload(withItemIdentifier: download.metadata.itemIdentifier) + self.finish(with: status.error) + return + } + + switch status.activePhase.phaseType { + case 0: + self.progressState = .downloading(loadedSize: Int64(status.activePhase.progressValue), totalSize: Int64(status.activePhase.totalProgressValue)) + case 1: + self.progressState = .extracting(progress: Double(status.activePhase.progressValue) / Double(status.activePhase.totalProgressValue)) + default: + self.progressState = .initializing + } + } + + func downloadQueue(_ downloadQueue: CKDownloadQueue!, changedWithRemoval download: SSDownload!) { + guard download.metadata.itemIdentifier == self.purchase.itemIdentifier, let status = download.status else { + return + } + + // Cancel operation. + if status.isFailed { + self.finish(with: status.error) + } else { + self.finish() + } + } + + func downloadQueue(_ downloadQueue: CKDownloadQueue!, changedWithAddition download: SSDownload!) {} + +} + +private extension ISStoreAccount { + static var primaryAccount: ISStoreAccount? { + var account: ISStoreAccount? + + let group = DispatchGroup() + group.enter() + + let accountService: ISAccountService = ISServiceProxy.genericShared().accountService + accountService.primaryAccount { (storeAccount: ISStoreAccount) in + account = storeAccount + group.leave() + } + + _ = group.wait(timeout: .now() + 30) + + return account + } +} + +private extension SSPurchase { + convenience init(itemIdentifier: UInt64, account: ISStoreAccount?, purchase: Bool = false) { + self.init() + + var parameters: [String: Any] = [ + "productType": "C", + "price": 0, + "salableAdamId": itemIdentifier, + "pg": "default", + "appExtVrsId": 0, + ] + + if purchase { + parameters["macappinstalledconfirmed"] = 1 + parameters["pricingParameters"] = "STDQ" + + } else { + // is redownload, use existing functionality + parameters["pricingParameters"] = "STDRDL" + } + + buyParameters = + parameters.map { key, value in + "\(key)=\(value)" + } + .joined(separator: "&") + + if let account = account { + accountIdentifier = account.dsID + appleID = account.identifier + } + + // Not sure if this is needed, but lets use it here. + if purchase { + isRedownload = false + } + + let downloadMetadata = SSDownloadMetadata() + downloadMetadata.kind = "software" + downloadMetadata.itemIdentifier = itemIdentifier + + self.downloadMetadata = downloadMetadata + self.itemIdentifier = itemIdentifier + } +} diff --git a/Latest/Model/Updater/UpdateOperation.swift b/Latest/Model/Updater/UpdateOperation.swift index f6f812e8..37714d97 100644 --- a/Latest/Model/Updater/UpdateOperation.swift +++ b/Latest/Model/Updater/UpdateOperation.swift @@ -45,7 +45,12 @@ class UpdateOperation: StatefulOperation { let appIdentifier: App.Bundle.Identifier /// The handler forwarding the current progress state. - var progressHandler: UpdateQueue.ProgressHandler? + var progressHandler: UpdateQueue.ProgressHandler? { + didSet { + // Notify immediately + self.progressHandler?(self.appIdentifier) + } + } /// The current update state. var progressState: UpdateOperation.ProgressState = .pending { diff --git a/Latest/Model/Utilities/Version.swift b/Latest/Model/Utilities/Version.swift index aab9bc5c..076c2f49 100644 --- a/Latest/Model/Utilities/Version.swift +++ b/Latest/Model/Utilities/Version.swift @@ -88,42 +88,45 @@ struct Version : Hashable, Comparable { let component1 = c1[i] let component2 = c2[i] - if component1.type == component2.type { - if component1.type == .number { - let value1 = Int(component1.string)! - let value2 = Int(component2.string)! - - if value1 > value2 { - return .newer // Think "1.3" vs "1.2" - } else if value2 > value1 { - return .older // Think "1.2" vs "1.3" - } - } else if component1.type == .string { - let result = component1.string.compare(component2.string) - - switch result { - case .orderedAscending: - return .older // Think "1.2A" vs "1.2B" - case .orderedDescending: - return .newer // Think "1.2B" vs "1.2A" - default: () - } - } - } else { - // Not the same type? Now we have to do some validity checking - if component1.type != .string && component2.type == .string { - return .newer // Think "1.2.3" vs "1.2A" - } else if component1.type == .string && component2.type != .string { - return .older // Think "1.2A" vs "1.2.2" - } - - // One is a number and the other is a period. The period is invalid - if component1.type == .number { - return .newer // Think "1.2.3" vs "1.2.." - } - - return .older // Think "1.2.." vs "1.2.0" + // Compare numbers + if case .number(let value1) = component1, case .number(let value2) = component2 { + if value1 > value2 { + return .newer // Think "1.3" vs "1.2" + } else if value2 > value1 { + return .older // Think "1.2" vs "1.3" + } + } + + // Compare letters + else if case .string(let value1) = component1, case .string(let value2) = component2 { + switch value1.compare(value2) { + case .orderedAscending: + return .older // Think "1.2A" vs "1.2B" + case .orderedDescending: + return .newer // Think "1.2B" vs "1.2A" + default: () + } } + + + // Not the same type? Now we have to do some validity checking + else if case .string(_) = component1 { + return .older // Think "1.2A" vs "1.2.2" + } + + else if case .string(_) = component2 { + return .newer // Think "1.2.3" vs "1.2A" + } + + + // One is a number and the other is a period. The period is invalid + else if case .number(_) = component1 { + return .older // Think "1.2.." vs "1.2.0" + } + + else if case .number(_) = component2 { + return .newer // Think "1.2.3" vs "1.2.." + } } // The versions are equal up to the point where they both still have parts @@ -131,11 +134,11 @@ struct Version : Hashable, Comparable { if count1 != count2 { let l = count1 > count2 let longerComponents = (l ? c1 : c2)[(l ? count2 : count1)...] - guard let component = longerComponents.first(where: { $0.type != .separator }) else { + guard let component = longerComponents.first(where: { $0 != .separator }) else { return .equal // Think "1.2" vs "1.2." } - if component.type == .number, let number = Int(component.string) { + if case .number(let number) = component { if number == 0 { return .equal // Think "1.2" vs "1.2.0" } @@ -156,8 +159,6 @@ extension Version: CustomDebugStringConvertible { } } -fileprivate typealias VersionComponent = (type: CharacterType, string: String) - /// An extension helping the version checking fileprivate extension String { @@ -166,27 +167,34 @@ fileprivate extension String { Components are grouped by Character type, so "12.3" returns [("12", .number), (".", .separator), ("3", .number)] */ func versionComponents() -> [VersionComponent] { - guard let first = self.first else { - return [] - } - - let components = self.dropFirst().reduce([(CharacterType.for(first)!, String(first))]) { (result: [VersionComponent], character) -> [VersionComponent] in - var result = result - var component = result.last! - let newType = CharacterType.for(character) - - if newType != component.type || component.type == .separator { - result.append((newType!, String(character))) - } else { - component.string.append(character) - result.removeLast() - result.append(component) - } - - return result - } - - return components + let scanner = Scanner(string: self) + + var components = [VersionComponent]() + while !scanner.isAtEnd { + var number: Int = 0 + var string: NSString? = "" + + // Try to scan number + if scanner.scanInt(&number) { + components.append(.number(value: number)) + } + + // Try to scan separator + else if scanner.scanCharacters(from: .separators, into: nil) { + components.append(.separator) + } + + // Try to scan anything else + else if scanner.scanCharacters(from: .letters, into: &string), let string { + components.append(.string(value: string as String)) + } + + else { + fatalError("Unable to parse version string: \(self)") + } + } + + return components } } @@ -194,35 +202,67 @@ fileprivate extension Array where Element == VersionComponent { /// Removes any leading v of a version number ("v1.2" -> "1.2") mutating func cutVersionPrefix() { - guard let component = self.first else { return } - - if component.string == "v" { - self.removeFirst() - } + guard let component = self.first, case .string(let value) = component, value == "v" else { return } + self.removeFirst() } } +fileprivate extension CharacterSet { + + /// Contains all delimiters used by a version string + static let separators = CharacterSet.whitespacesAndNewlines.union(.punctuationCharacters) + + /// Contains any characters but separators and digits + static let letters = CharacterSet.separators.union(.decimalDigits).inverted + +} + // Defining the type of a character -fileprivate enum CharacterType { - +fileprivate enum VersionComponent: Equatable { + case separator // Newlines, punctuation.. - case number // 0..9 - case string // Everything else - - /// Returns the type for a given character - static func `for`(_ character: Character) -> CharacterType? { - guard let scalar = character.unicodeScalars.first else { return nil } - - if NSCharacterSet.decimalDigits.contains(scalar) { - return .number - } - - if NSCharacterSet.whitespacesAndNewlines.contains(scalar) || NSCharacterSet.punctuationCharacters.contains(scalar) { - return .separator - } - - return .string - } - + case number(value: Int) // 0..9 + case string(value: String) // Everything else + + func isSameType(_ other: VersionComponent) -> Bool { + switch (self, other) { + case (.separator, .separator), + (.number(_), .number(_)), + (.string(_), .string(_)): + return true + default: + return false + } + } + } + + +// MARK: - + +extension OperatingSystemVersion { + + init(string: String) throws { + let components = string.versionComponents().compactMap({ component in + switch component { + case .number(let value): + return value + default: + return nil + } + }) + guard !components.isEmpty else { throw OperatingSystemVersionError.parsingError(version: string) } + + let major = components[0] + let minor = components.count > 1 ? components[1] : 0 + let patch = components.count > 2 ? components[2] : 0 + self.init(majorVersion: major, minorVersion: minor, patchVersion: patch) + } + + enum OperatingSystemVersionError: Error { + case parsingError(version: String) + } + +} + diff --git a/Latest/Resources/ar.lproj/Localizable.strings b/Latest/Resources/ar.lproj/Localizable.strings index 1d1a3721..064397cb 100644 --- a/Latest/Resources/ar.lproj/Localizable.strings +++ b/Latest/Resources/ar.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "الإصدار الخاص بك: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/bg.lproj/InfoPlist.strings b/Latest/Resources/bg.lproj/InfoPlist.strings new file mode 100644 index 00000000..673d75dd --- /dev/null +++ b/Latest/Resources/bg.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Latest"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Latest"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2022 Max Langer. Всички права запазени."; diff --git a/Latest/Resources/bg.lproj/Localizable.strings b/Latest/Resources/bg.lproj/Localizable.strings new file mode 100644 index 00000000..f40ab02c --- /dev/null +++ b/Latest/Resources/bg.lproj/Localizable.strings @@ -0,0 +1,91 @@ + + + +/* Title of release notes empty state */ +"NoAppSelectedTitle" = "Не е избрано приложение."; + +/* Error message that no release notes were found */ +"NoReleaseNotesFoundError" = "Не са намерени бележки за това приложение."; + +/* Button to retry an update in an error dialogue */ +"RetryAction" = "Опитай пак"; + +/* Reveal in Finder Row action */ +"RevealAction" = "Покажи"; + +/* Action to open the app. */ +"OpenAction" = "Отвори"; + +/* Description of release notes empty state */ +"NoAppSelectedDescription" = "Изберете приложение от списъка за да прочетете неговите бележки."; + +/* The description of the app's source. e.g. 'Source: Mac App Store' */ +"AppSource" = "Източник: %@"; + +/* Update String */ +"UpdateAction" = "Обнови"; + +/* Error message stating that update info could not be retrieved for a given app. */ +"UpdateInfoNotFoundError" = "Няма намерена актуализация за това приложение."; + +/* Update progress state of waiting to start an update */ +"WaitingUpdateStatus" = "Чакане"; + +/* The source name for apps loaded from third-party websites. */ +"WebSource" = "Web"; + +/* Current Version String */ +"LocalVersionFormat" = "Твоята версия: %@"; + +/* The source name of apps loaded from the App Store. */ +"AppStoreSource" = "Mac App Store"; + +/* New Version String */ +"RemoteVersionFormat" = "Нова версия: %@"; +/* The title of a section divider in the app list. The first placeholder is the name of the section. The value in paranthesis describes how many apps are in that section, number of apps is inserted in the second placeholder. Use the HTML underline tag to mark the deemphasized part of the text, which should be the count. Example: 'Installed Apps (42)' */ +"SectionTitle" = "%1$@ (%2$@)"; + +/* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ +"UpdateErrorAlertTitle" = "Възникна грешка при актуализирането на %@."; + +/* Touch Bar section title for available updates */ +"AvailableSection" = "Налично"; + +/* Table Section Header for available updates */ +"AvailableUpdatesSection" = "Налични актуализации"; + +/* Cancel button in an update dialogue */ +"CancelAction" = "Отказ"; + +/* Update progress state of cancelling an update */ +"CancellingUpdateStatus" = "Отказване"; + +/* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ +"DownloadingUpdateStatus" = "Изтеглени %@ от %@"; + +/* Description of button that opens an error dialogue. */ +"ErrorButtonAccessibilityTitle" = "Грешка при актуализиране на приложението"; + +/* Update progress state of extracting the downloaded update */ +"ExtractingUpdateStatus" = "Актуализацията се извлича"; + +/* Touch Bar section title for ignored apps */ +"IgnoredSection" = "Игнорирай"; + +/* Table Section Header for ignored apps */ +"IgnoredAppsSection" = "Игнорирани приложения"; + +/* Update progress state of initializing an update */ +"InitializingUpdateStatus" = "Инициализиране"; + +/* Touch Bar section title for installed apps */ +"InstalledSection" = "Инсталиран"; + +/* Table Section Header for already installed apps */ +"InstalledAppsSection" = "Инсталирани приложения"; + +/* Update progress state of installing an update */ +"InstallingUpdateStatus" = "Инсталиране"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Впишете се в Mac App Store за да обновите това приложение."; diff --git a/Latest/Resources/nb_NB.lproj/Localizable.stringsdict b/Latest/Resources/bg.lproj/Localizable.stringsdict similarity index 100% rename from Latest/Resources/nb_NB.lproj/Localizable.stringsdict rename to Latest/Resources/bg.lproj/Localizable.stringsdict diff --git a/Latest/Resources/ca.lproj/Localizable.strings b/Latest/Resources/ca.lproj/Localizable.strings index 0d7dd0c9..53805b3b 100644 --- a/Latest/Resources/ca.lproj/Localizable.strings +++ b/Latest/Resources/ca.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "La teva versió: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Inicia sessió a l'App Store de Mac per a actualitzar aquesta app."; diff --git a/Latest/Resources/cs.lproj/InfoPlist.strings b/Latest/Resources/cs.lproj/InfoPlist.strings index e69de29b..4a6cfc72 100644 --- a/Latest/Resources/cs.lproj/InfoPlist.strings +++ b/Latest/Resources/cs.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Latest"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Latest"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2022 Max Langer. Všechna práva vyhrazené."; diff --git a/Latest/Resources/cs.lproj/Localizable.strings b/Latest/Resources/cs.lproj/Localizable.strings index 7550259f..d66d8f35 100644 --- a/Latest/Resources/cs.lproj/Localizable.strings +++ b/Latest/Resources/cs.lproj/Localizable.strings @@ -2,87 +2,90 @@ /* Update progress state of cancelling an update */ -"CancellingUpdateStatus" = "Cancelling"; +"CancellingUpdateStatus" = "Rušení operace"; /* Describes how many apps are in a section, number of apps is inserted in placeholder. */ "SectionTitle" = "%1$@ (%2$@)"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ -"UpdateErrorAlertTitle" = "An error occurred while updating %@."; +"UpdateErrorAlertTitle" = "Nastala chyba při aktualizaci %@."; /* Touch Bar section title for available updates */ -"AvailableSection" = "Available"; +"AvailableSection" = "Dostupné"; /* Table Section Header for available updates */ -"AvailableUpdatesSection" = "Available Updates"; +"AvailableUpdatesSection" = "Dostupné aktualizace"; /* Cancel button in an update dialogue */ -"CancelAction" = "Cancel"; +"CancelAction" = "Zrušit"; /* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; +"DownloadingUpdateStatus" = "Stahování %@ z %@"; /* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; +"ErrorButtonAccessibilityTitle" = "Chyba aktualizace programu"; /* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; +"ExtractingUpdateStatus" = "Rozbalování aktualizace"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Ignored"; +"IgnoredSection" = "Ignorované"; /* Table Section Header for ignored apps */ -"IgnoredAppsSection" = "Ignored Apps"; +"IgnoredAppsSection" = "Ignorované aplikace"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Initializing"; +"InitializingUpdateStatus" = "Inicializace"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Installed"; +"InstalledSection" = "Nainstalované"; /* Table Section Header for already installed apps */ -"InstalledAppsSection" = "Installed Apps"; +"InstalledAppsSection" = "Nainstalované aplikace"; /* Update progress state of installing an update */ -"InstallingUpdateStatus" = "Installing"; +"InstallingUpdateStatus" = "Instalace"; /* The source name of apps loaded from the App Store. */ "AppStoreSource" = "Mac App Store"; /* New Version String */ -"RemoteVersionFormat" = "New version: %@"; +"RemoteVersionFormat" = "Nová verze: %@"; /* Title of release notes empty state */ -"NoAppSelectedTitle" = "No app selected."; +"NoAppSelectedTitle" = "Nebyla vybrána žádná aplikace."; /* Error message that no release notes were found */ -"NoReleaseNotesFoundError" = "No release notes were found for this app."; +"NoReleaseNotesFoundError" = "K této aplikaci nebyly nalezeny žádné poznámky o vydání."; /* Button to retry an update in an error dialogue */ -"RetryAction" = "Retry"; +"RetryAction" = "Zopakovat"; /* Reveal in Finder Row action */ -"RevealAction" = "Reveal"; +"RevealAction" = "Zobrazit"; /* Action to open the app. */ -"OpenAction" = "Open"; +"OpenAction" = "Otevřít"; /* Description of release notes empty state */ -"NoAppSelectedDescription" = "Select an app from the list to read its release notes."; +"NoAppSelectedDescription" = "Vyberte aplikaci pro zobrazení poznámek k vydání."; /* The description of the app's source. e.g. 'Source: Mac App Store' */ -"AppSource" = "Source: %@"; +"AppSource" = "Zdroj: %@"; /* Update String */ -"UpdateAction" = "Update"; +"UpdateAction" = "Aktualizace"; /* Error message stating that update info could not be retrieved for a given app. */ -"UpdateInfoNotFoundError" = "No update was found for this app."; +"UpdateInfoNotFoundError" = "K této aplikaci nebyly nalezeny žádné aktualizace."; /* Update progress state of waiting to start an update */ -"WaitingUpdateStatus" = "Waiting"; +"WaitingUpdateStatus" = "Čekám"; /* The source name for apps loaded from third-party websites. */ "WebSource" = "Web"; /* Current Version String */ -"LocalVersionFormat" = "Your version: %@"; +"LocalVersionFormat" = "Vaše verze: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Přihlašte se do Mac App Store pro aktualizaci této aplikace."; diff --git a/Latest/Resources/cs.lproj/Localizable.stringsdict b/Latest/Resources/cs.lproj/Localizable.stringsdict index 36a87067..4d603c06 100644 --- a/Latest/Resources/cs.lproj/Localizable.stringsdict +++ b/Latest/Resources/cs.lproj/Localizable.stringsdict @@ -1,6 +1,26 @@ - - + + NumberOfUpdatesAvailable + + NSStringLocalizedFormatKey + %#@value@ + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Aktualizované! + one + %d Aktualizace k dispozici + few + %d Aktualizací k dispozici + other + %d Aktualizací k dispozici + + + diff --git a/Latest/Resources/da.lproj/Localizable.strings b/Latest/Resources/da.lproj/Localizable.strings index 997f0862..d5a0a189 100644 --- a/Latest/Resources/da.lproj/Localizable.strings +++ b/Latest/Resources/da.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/de.lproj/Localizable.strings b/Latest/Resources/de.lproj/Localizable.strings index e1b12fb4..ee1a8347 100644 --- a/Latest/Resources/de.lproj/Localizable.strings +++ b/Latest/Resources/de.lproj/Localizable.strings @@ -85,3 +85,5 @@ /* The source name for apps loaded from third-party websites. */ "WebSource" = "Web"; +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Melde dich im Mac App Store an, um diese App zu aktualisieren."; diff --git a/Latest/Resources/el.lproj/Localizable.strings b/Latest/Resources/el.lproj/Localizable.strings index 1f4f3bc3..af9336b3 100644 --- a/Latest/Resources/el.lproj/Localizable.strings +++ b/Latest/Resources/el.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Η έκδοσή σας: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/en.lproj/Localizable.strings b/Latest/Resources/en.lproj/Localizable.strings index ad607c3c..c3898187 100644 --- a/Latest/Resources/en.lproj/Localizable.strings +++ b/Latest/Resources/en.lproj/Localizable.strings @@ -85,3 +85,5 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/es.lproj/Localizable.strings b/Latest/Resources/es.lproj/Localizable.strings index 5ff88907..abc5aaf7 100644 --- a/Latest/Resources/es.lproj/Localizable.strings +++ b/Latest/Resources/es.lproj/Localizable.strings @@ -34,7 +34,7 @@ "IgnoredAppsSection" = "Aplicaciones ignoradas"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Inicialización"; +"InitializingUpdateStatus" = "Inicializando"; /* Touch Bar section title for installed apps */ "InstalledSection" = "Instalado"; @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Su versión: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Inicia sesión en la Mac App Store para actualizar ésta app."; diff --git a/Latest/Resources/fa.lproj/InfoPlist.strings b/Latest/Resources/fa.lproj/InfoPlist.strings new file mode 100644 index 00000000..a8d2400c --- /dev/null +++ b/Latest/Resources/fa.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Latest"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Latest"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2022 Max Langer. All rights reserved."; diff --git a/Latest/Resources/fa.lproj/Localizable.strings b/Latest/Resources/fa.lproj/Localizable.strings new file mode 100644 index 00000000..c562304d --- /dev/null +++ b/Latest/Resources/fa.lproj/Localizable.strings @@ -0,0 +1,89 @@ +/* The title of a section divider in the app list. The first placeholder is the name of the section. The value in paranthesis describes how many apps are in that section, number of apps is inserted in the second placeholder. Use the HTML underline tag to mark the deemphasized part of the text, which should be the count. Example: 'Installed Apps (42)' */ +"SectionTitle" = "%1$@ (%2$@)"; + +/* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ +"UpdateErrorAlertTitle" = "اشکال در بروزرسانی %@."; + +/* Touch Bar section title for available updates */ +"AvailableSection" = "در دسترس"; + +/* Table Section Header for available updates */ +"AvailableUpdatesSection" = "بروزرسانی‌های موجود"; + +/* Cancel button in an update dialogue */ +"CancelAction" = "لغو"; + +/* Update progress state of cancelling an update */ +"CancellingUpdateStatus" = "در حال لغو"; + +/* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ +"DownloadingUpdateStatus" = "مقدار دانلود شده %@ از %@"; + +/* Description of button that opens an error dialogue. */ +"ErrorButtonAccessibilityTitle" = "اشکال در بروزرسانی اپلیکیشن"; + +/* Update progress state of extracting the downloaded update */ +"ExtractingUpdateStatus" = "استخراج بروزرسانی"; + +/* Touch Bar section title for ignored apps */ +"IgnoredSection" = "نادیده گرفته شده"; + +/* Table Section Header for ignored apps */ +"IgnoredAppsSection" = "اپلیکیشن‌های نادیده گرفته شده"; + +/* Update progress state of initializing an update */ +"InitializingUpdateStatus" = "آماده‌سازی"; + +/* Touch Bar section title for installed apps */ +"InstalledSection" = "نصب‌ شده"; + +/* Table Section Header for already installed apps */ +"InstalledAppsSection" = "اپلیکیشن‌های نصب شده"; + +/* Update progress state of installing an update */ +"InstallingUpdateStatus" = "در حال نصب"; + +/* The source name of apps loaded from the App Store. */ +"AppStoreSource" = "اپ‌استور مک"; + +/* New Version String */ +"RemoteVersionFormat" = "نسخه جدید: %@"; + +/* Title of release notes empty state */ +"NoAppSelectedTitle" = "هیچ اپلیکیشنی انتخاب نشده."; + +/* Error message that no release notes were found */ +"NoReleaseNotesFoundError" = "توضیحی برای این بروزرسانی پیدا نشد."; + +/* Button to retry an update in an error dialogue */ +"RetryAction" = "تلاش دوباره"; + +/* Reveal in Finder Row action */ +"RevealAction" = "نمایش"; + +/* Action to open the app. */ +"OpenAction" = "باز کردن"; + +/* Description of release notes empty state */ +"NoAppSelectedDescription" = "برای خواندن توضیحات بروزسانی اپلیکیشنی را از لیست انتخاب کنید."; + +/* The description of the app's source. e.g. 'Source: Mac App Store' */ +"AppSource" = "منبع: %@"; + +/* Update String */ +"UpdateAction" = "بروزرسانی"; + +/* Error message stating that update info could not be retrieved for a given app. */ +"UpdateInfoNotFoundError" = "بروزرسانی ای برای این اپلیکیشن پیدا نشد"; + +/* Update progress state of waiting to start an update */ +"WaitingUpdateStatus" = "انتظار"; + +/* The source name for apps loaded from third-party websites. */ +"WebSource" = "وب"; + +/* Current Version String */ +"LocalVersionFormat" = "نسخه شما: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/fa.lproj/Localizable.stringsdict b/Latest/Resources/fa.lproj/Localizable.stringsdict new file mode 100644 index 00000000..642d6be7 --- /dev/null +++ b/Latest/Resources/fa.lproj/Localizable.stringsdict @@ -0,0 +1,24 @@ + + + + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + بروزرسانی‌ای موجود نیست + one + %d بروزرسانی موجود است + other + %d بروزرسانی موجود است + + NSStringLocalizedFormatKey + %#@value@ + + + diff --git a/Latest/Resources/fi.lproj/Localizable.strings b/Latest/Resources/fi.lproj/Localizable.strings index d8cf8acc..97b87f50 100644 --- a/Latest/Resources/fi.lproj/Localizable.strings +++ b/Latest/Resources/fi.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/fr.lproj/Localizable.strings b/Latest/Resources/fr.lproj/Localizable.strings index e638d1a9..6ae5665e 100644 --- a/Latest/Resources/fr.lproj/Localizable.strings +++ b/Latest/Resources/fr.lproj/Localizable.strings @@ -85,4 +85,5 @@ /* The source name for apps loaded from third-party websites. */ "WebSource" = "Réseau"; - +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Connectez-vous au Mac App Store pour mettre à jour cette application."; diff --git a/Latest/Resources/gl.lproj/InfoPlist.strings b/Latest/Resources/gl.lproj/InfoPlist.strings new file mode 100644 index 00000000..e69de29b diff --git a/Latest/Resources/nb-NB.lproj/Localizable.strings b/Latest/Resources/gl.lproj/Localizable.strings similarity index 83% rename from Latest/Resources/nb-NB.lproj/Localizable.strings rename to Latest/Resources/gl.lproj/Localizable.strings index 997f0862..591f8cbc 100644 --- a/Latest/Resources/nb-NB.lproj/Localizable.strings +++ b/Latest/Resources/gl.lproj/Localizable.strings @@ -1,6 +1,13 @@ +/* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ +"DownloadingUpdateStatus" = "Downloading %@ of %@"; + +/* Description of button that opens an error dialogue. */ +"ErrorButtonAccessibilityTitle" = "Error while updating app"; -/* Describes how many apps are in a section, number of apps is inserted in placeholder. */ +/* Update progress state of extracting the downloaded update */ +"ExtractingUpdateStatus" = "Extracting Update"; +/* The title of a section divider in the app list. The first placeholder is the name of the section. The value in paranthesis describes how many apps are in that section, number of apps is inserted in the second placeholder. Use the HTML underline tag to mark the deemphasized part of the text, which should be the count. Example: 'Installed Apps (42)' */ "SectionTitle" = "%1$@ (%2$@)"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ @@ -18,15 +25,6 @@ /* Update progress state of cancelling an update */ "CancellingUpdateStatus" = "Cancelling"; -/* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; - -/* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; - -/* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; - /* Touch Bar section title for ignored apps */ "IgnoredSection" = "Ignored"; @@ -86,3 +84,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/gl.lproj/Localizable.stringsdict b/Latest/Resources/gl.lproj/Localizable.stringsdict new file mode 100644 index 00000000..36a87067 --- /dev/null +++ b/Latest/Resources/gl.lproj/Localizable.stringsdict @@ -0,0 +1,6 @@ + + + + + + diff --git a/Latest/Resources/he.lproj/Localizable.strings b/Latest/Resources/he.lproj/Localizable.strings index fa739115..02be740e 100644 --- a/Latest/Resources/he.lproj/Localizable.strings +++ b/Latest/Resources/he.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/hi.lproj/Localizable.strings b/Latest/Resources/hi.lproj/Localizable.strings index f5f2c4ca..07408ba1 100644 --- a/Latest/Resources/hi.lproj/Localizable.strings +++ b/Latest/Resources/hi.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "आपका वर्ज़न : %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/hi.lproj/Localizable.stringsdict b/Latest/Resources/hi.lproj/Localizable.stringsdict index 36a87067..31b0508c 100644 --- a/Latest/Resources/hi.lproj/Localizable.stringsdict +++ b/Latest/Resources/hi.lproj/Localizable.stringsdict @@ -1,6 +1,22 @@ - - + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + अद्यतन + one + %d उपलब्ध अद्यतन + other + %d अद्यतन उपलब्ध + + + diff --git a/Latest/Resources/hr.lproj/Localizable.strings b/Latest/Resources/hr.lproj/Localizable.strings index ab146214..1dda8b18 100644 --- a/Latest/Resources/hr.lproj/Localizable.strings +++ b/Latest/Resources/hr.lproj/Localizable.strings @@ -28,7 +28,7 @@ "ExtractingUpdateStatus" = "Raspakiravanje nove verzije"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Zanemareni"; +"IgnoredSection" = "Zanemareno"; /* Table Section Header for ignored apps */ "IgnoredAppsSection" = "Zanemareni programi"; @@ -40,7 +40,7 @@ "UpdateAction" = "Aktualiziraj"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Instalirani"; +"InstalledSection" = "Instalirano"; /* Table Section Header for already installed apps */ "InstalledAppsSection" = "Instalirani programi"; @@ -58,7 +58,7 @@ "NoAppSelectedTitle" = "Nijedan program nije odbran."; /* Error message that no release notes were found */ -"NoReleaseNotesFoundError" = "Za ovaj program nema napomena uz izdanje."; +"NoReleaseNotesFoundError" = "Za ovaj program nema napomena o izdanju."; /* Button to retry an update in an error dialogue */ "RetryAction" = "Pokušaj ponovo"; @@ -70,7 +70,7 @@ "OpenAction" = "Otvori"; /* Description of release notes empty state */ -"NoAppSelectedDescription" = "Odaberi program iz popisa čije napomene uz izdanje želiš pročitati."; +"NoAppSelectedDescription" = "Odaberi program iz popisa čije napomene o izdanju želiš pročitati."; /* The description of the app's source. e.g. 'Source: Mac App Store' */ "AppSource" = "Izvor: %@"; @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Tvoja verzija: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Za aktualiziranje ove aplikacije prijavi se na Mac App Store."; diff --git a/Latest/Resources/hr.lproj/Localizable.stringsdict b/Latest/Resources/hr.lproj/Localizable.stringsdict index ba6fea72..a0296a86 100644 --- a/Latest/Resources/hr.lproj/Localizable.stringsdict +++ b/Latest/Resources/hr.lproj/Localizable.stringsdict @@ -13,7 +13,7 @@ NSStringFormatValueTypeKey d zero - Verzije su aktualne! + Verzija je aktualna! one Dostupna je %d nova verzija few diff --git a/Latest/Resources/hu.lproj/InfoPlist.strings b/Latest/Resources/hu.lproj/InfoPlist.strings index e69de29b..010df628 100644 --- a/Latest/Resources/hu.lproj/InfoPlist.strings +++ b/Latest/Resources/hu.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Latest"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Latest"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2022 Max Langer. Minden jog fenntartva."; diff --git a/Latest/Resources/hu.lproj/Localizable.strings b/Latest/Resources/hu.lproj/Localizable.strings index f509e0f6..184127c5 100644 --- a/Latest/Resources/hu.lproj/Localizable.strings +++ b/Latest/Resources/hu.lproj/Localizable.strings @@ -2,87 +2,90 @@ /* Cancel button in an update dialogue */ -"CancelAction" = "Cancel"; +"CancelAction" = "Mégsem"; /* Update progress state of cancelling an update */ -"CancellingUpdateStatus" = "Cancelling"; +"CancellingUpdateStatus" = "Megszakítás"; /* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; +"ExtractingUpdateStatus" = "Frissítés kicsomagolása"; /* Reveal in Finder Row action */ -"RevealAction" = "Reveal"; +"RevealAction" = "Megjelenít"; /* Action to open the app. */ -"OpenAction" = "Open"; +"OpenAction" = "Megnyitás"; /* Description of release notes empty state */ -"NoAppSelectedDescription" = "Select an app from the list to read its release notes."; +"NoAppSelectedDescription" = "Válassz egy alkalmazást, hogy el tudd olvasni a változásokat."; /* The description of the app's source. e.g. 'Source: Mac App Store' */ -"AppSource" = "Source: %@"; +"AppSource" = "Forrás: %@"; /* Update String */ -"UpdateAction" = "Update"; +"UpdateAction" = "Frissítés"; /* Describes how many apps are in a section, number of apps is inserted in placeholder. */ "SectionTitle" = "%1$@ (%2$@)"; /* Update progress state of waiting to start an update */ -"WaitingUpdateStatus" = "Waiting"; +"WaitingUpdateStatus" = "Várakozás"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ -"UpdateErrorAlertTitle" = "An error occurred while updating %@."; +"UpdateErrorAlertTitle" = "A frissítés közben hiba történt %@."; /* Touch Bar section title for available updates */ -"AvailableSection" = "Available"; +"AvailableSection" = "Elérhető"; /* Table Section Header for available updates */ -"AvailableUpdatesSection" = "Available Updates"; +"AvailableUpdatesSection" = "Elérhető frissítések"; /* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; +"DownloadingUpdateStatus" = "%@ letöltése a %@"; /* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; +"ErrorButtonAccessibilityTitle" = "Hiba történt a frissítés közben"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Ignored"; +"IgnoredSection" = "Kihagyva"; /* Table Section Header for ignored apps */ -"IgnoredAppsSection" = "Ignored Apps"; +"IgnoredAppsSection" = "Kihagyott appok"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Initializing"; +"InitializingUpdateStatus" = "Betöltés"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Installed"; +"InstalledSection" = "Telepítve"; /* Table Section Header for already installed apps */ -"InstalledAppsSection" = "Installed Apps"; +"InstalledAppsSection" = "Telepített alkalmazások"; /* Update progress state of installing an update */ -"InstallingUpdateStatus" = "Installing"; +"InstallingUpdateStatus" = "Telepítés"; /* The source name of apps loaded from the App Store. */ "AppStoreSource" = "Mac App Store"; /* New Version String */ -"RemoteVersionFormat" = "New version: %@"; +"RemoteVersionFormat" = "Új verzió: %@"; /* Title of release notes empty state */ -"NoAppSelectedTitle" = "No app selected."; +"NoAppSelectedTitle" = "Nincsen alkalmazás kiválasztva."; /* Error message that no release notes were found */ -"NoReleaseNotesFoundError" = "No release notes were found for this app."; +"NoReleaseNotesFoundError" = "Nincsen elérhető leírás az alkalmazáshoz."; /* Button to retry an update in an error dialogue */ -"RetryAction" = "Retry"; +"RetryAction" = "Újra"; /* Error message stating that update info could not be retrieved for a given app. */ -"UpdateInfoNotFoundError" = "No update was found for this app."; +"UpdateInfoNotFoundError" = "Nem található frissítés ehhez az alkalmazáshoz."; /* The source name for apps loaded from third-party websites. */ "WebSource" = "Web"; /* Current Version String */ -"LocalVersionFormat" = "Your version: %@"; +"LocalVersionFormat" = "Jelenlegi verzió: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Jelentkezzen be a Mac App Store-ba az alkalmazás frissítéséhez."; diff --git a/Latest/Resources/hu.lproj/Localizable.stringsdict b/Latest/Resources/hu.lproj/Localizable.stringsdict index 36a87067..ceca496c 100644 --- a/Latest/Resources/hu.lproj/Localizable.stringsdict +++ b/Latest/Resources/hu.lproj/Localizable.stringsdict @@ -1,6 +1,24 @@ - - + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Minden a legfrissebb! + one + %d elérhető frissítés + other + %d elérhető frissítés + + NSStringLocalizedFormatKey + %#@value@ + + diff --git a/Latest/Resources/id.lproj/Localizable.strings b/Latest/Resources/id.lproj/Localizable.strings index 520fe014..0f913d8b 100644 --- a/Latest/Resources/id.lproj/Localizable.strings +++ b/Latest/Resources/id.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Versi Anda: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/it.lproj/Localizable.strings b/Latest/Resources/it.lproj/Localizable.strings index f68a65e9..c4cdc58a 100644 --- a/Latest/Resources/it.lproj/Localizable.strings +++ b/Latest/Resources/it.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Versione installata: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/ja.lproj/Localizable.strings b/Latest/Resources/ja.lproj/Localizable.strings index 67bf4f2e..52e3057c 100644 --- a/Latest/Resources/ja.lproj/Localizable.strings +++ b/Latest/Resources/ja.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/ko.lproj/Localizable.strings b/Latest/Resources/ko.lproj/Localizable.strings index dbeddf98..fc4a3792 100644 --- a/Latest/Resources/ko.lproj/Localizable.strings +++ b/Latest/Resources/ko.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "사용자 버전: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "이 앱을 업데이트하려면 Mac App Store에 로그인하십시오."; diff --git a/Latest/Resources/ms.lproj/Localizable.strings b/Latest/Resources/ms.lproj/Localizable.strings index 4232f8c2..7a92ff2e 100644 --- a/Latest/Resources/ms.lproj/Localizable.strings +++ b/Latest/Resources/ms.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Versi anda: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/nb.lproj/InfoPlist.strings b/Latest/Resources/nb.lproj/InfoPlist.strings new file mode 100644 index 00000000..ad233fdb --- /dev/null +++ b/Latest/Resources/nb.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Siste"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Siste"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Opphavsrett © 2022 Max Langer. Alle rettigheter forbeholdt."; diff --git a/Latest/Resources/nb.lproj/Localizable.strings b/Latest/Resources/nb.lproj/Localizable.strings new file mode 100644 index 00000000..2f704ae6 --- /dev/null +++ b/Latest/Resources/nb.lproj/Localizable.strings @@ -0,0 +1,91 @@ + + +/* Describes how many apps are in a section, number of apps is inserted in placeholder. */ +"SectionTitle" = "%1$@ (%2$@)"; + +/* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ +"UpdateErrorAlertTitle" = "Det oppsto en feil under oppdatering %@."; + +/* Touch Bar section title for available updates */ +"AvailableSection" = "Tilgjengelig"; + +/* Table Section Header for available updates */ +"AvailableUpdatesSection" = "Tilgjengelige Oppdateringer"; + +/* Cancel button in an update dialogue */ +"CancelAction" = "Avbryt"; + +/* Update progress state of cancelling an update */ +"CancellingUpdateStatus" = "Avbryter"; + +/* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ +"DownloadingUpdateStatus" = "Laster ned %@ av %@"; + +/* Description of button that opens an error dialogue. */ +"ErrorButtonAccessibilityTitle" = "Feil under oppdatering av appen"; + +/* Update progress state of extracting the downloaded update */ +"ExtractingUpdateStatus" = "Pakker ut Oppdatering"; + +/* Touch Bar section title for ignored apps */ +"IgnoredSection" = "Ignorert"; + +/* Table Section Header for ignored apps */ +"IgnoredAppsSection" = "Ignorerte Apper"; + +/* Update progress state of initializing an update */ +"InitializingUpdateStatus" = "Initialiserer"; + +/* Touch Bar section title for installed apps */ +"InstalledSection" = "Installert"; + +/* Table Section Header for already installed apps */ +"InstalledAppsSection" = "Installerte Apper"; + +/* Update progress state of installing an update */ +"InstallingUpdateStatus" = "Installerer"; + +/* The source name of apps loaded from the App Store. */ +"AppStoreSource" = "Mac App Store"; + +/* New Version String */ +"RemoteVersionFormat" = "Ny verson: %@"; + +/* Title of release notes empty state */ +"NoAppSelectedTitle" = "Ingen app er valgt."; + +/* Error message that no release notes were found */ +"NoReleaseNotesFoundError" = "Ingen versjonsnotater ble funnet for denne appen."; + +/* Button to retry an update in an error dialogue */ +"RetryAction" = "Prøv på nytt"; + +/* Reveal in Finder Row action */ +"RevealAction" = "Vis"; + +/* Action to open the app. */ +"OpenAction" = "Åpne"; + +/* Description of release notes empty state */ +"NoAppSelectedDescription" = "Velg en app fra listen for å lese versjonsnotatene."; + +/* The description of the app's source. e.g. 'Source: Mac App Store' */ +"AppSource" = "Kilde: %@"; + +/* Update String */ +"UpdateAction" = "Oppdater"; + +/* Error message stating that update info could not be retrieved for a given app. */ +"UpdateInfoNotFoundError" = "Ingen oppdatering ble funnet for denne appen."; + +/* Update progress state of waiting to start an update */ +"WaitingUpdateStatus" = "Venter"; + +/* The source name for apps loaded from third-party websites. */ +"WebSource" = "Internett"; + +/* Current Version String */ +"LocalVersionFormat" = "Din versjon: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Logg inn på Mac App Store for å oppdatere denne appen."; diff --git a/Latest/Resources/nb.lproj/Localizable.stringsdict b/Latest/Resources/nb.lproj/Localizable.stringsdict new file mode 100644 index 00000000..c3f4d438 --- /dev/null +++ b/Latest/Resources/nb.lproj/Localizable.stringsdict @@ -0,0 +1,24 @@ + + + + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Oppdatert! + one + %d Oppdatering Tilgjengelig + other + %d Oppdateringer Tilgjengelig + + NSStringLocalizedFormatKey + %#@value@ + + + diff --git a/Latest/Resources/nl.lproj/Localizable.strings b/Latest/Resources/nl.lproj/Localizable.strings index 1b406e93..c9d051e1 100644 --- a/Latest/Resources/nl.lproj/Localizable.strings +++ b/Latest/Resources/nl.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Jouw versie: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/pl.lproj/Localizable.strings b/Latest/Resources/pl.lproj/Localizable.strings index 342e6c45..bfe39423 100644 --- a/Latest/Resources/pl.lproj/Localizable.strings +++ b/Latest/Resources/pl.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/pt-BR.lproj/Localizable.strings b/Latest/Resources/pt-BR.lproj/Localizable.strings index 997f0862..d5a0a189 100644 --- a/Latest/Resources/pt-BR.lproj/Localizable.strings +++ b/Latest/Resources/pt-BR.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/pt-PT.lproj/Localizable.strings b/Latest/Resources/pt-PT.lproj/Localizable.strings index 32dae6ed..5dc3c2e8 100644 --- a/Latest/Resources/pt-PT.lproj/Localizable.strings +++ b/Latest/Resources/pt-PT.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* The source name for apps loaded from third-party websites. */ "WebSource" = "Web"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/pt.lproj/Localizable.strings b/Latest/Resources/pt.lproj/Localizable.strings index a58c2b43..17bd9c35 100644 --- a/Latest/Resources/pt.lproj/Localizable.strings +++ b/Latest/Resources/pt.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "A sua versão: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Inicie sessão na Mac App Store para atualizar esta aplicação."; diff --git a/Latest/Resources/ro.lproj/Localizable.strings b/Latest/Resources/ro.lproj/Localizable.strings index 997f0862..d5a0a189 100644 --- a/Latest/Resources/ro.lproj/Localizable.strings +++ b/Latest/Resources/ro.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/ru.lproj/Localizable.strings b/Latest/Resources/ru.lproj/Localizable.strings index b93c97d0..f9eb548f 100644 --- a/Latest/Resources/ru.lproj/Localizable.strings +++ b/Latest/Resources/ru.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Ваша версия: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Sign in to the Mac App Store to update this app."; diff --git a/Latest/Resources/sk.lproj/Localizable.strings b/Latest/Resources/sk.lproj/Localizable.strings index 7b84d0ea..0cc1df87 100644 --- a/Latest/Resources/sk.lproj/Localizable.strings +++ b/Latest/Resources/sk.lproj/Localizable.strings @@ -61,7 +61,7 @@ "RetryAction" = "Znovu"; /* Reveal in Finder Row action */ -"RevealAction" = "Ohladiť"; +"RevealAction" = "Zobraziť"; /* Action to open the app. */ "OpenAction" = "Otvoriť"; @@ -76,13 +76,16 @@ "UpdateAction" = "Aktualizácia"; /* Error message stating that update info could not be retrieved for a given app. */ -"UpdateInfoNotFoundError" = "Táto aplikácia nenašla žiadnu aktualizáciu."; +"UpdateInfoNotFoundError" = "K tejto aplikácii neboli nájdené žiadne aktualizácie."; /* Update progress state of waiting to start an update */ -"WaitingUpdateStatus" = "Čakanie"; +"WaitingUpdateStatus" = "Čakám"; /* The source name for apps loaded from third-party websites. */ "WebSource" = "Web"; /* Current Version String */ "LocalVersionFormat" = "Vaša verzia: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Prihláste sa do Mac App Store pre aktualizáciu tejto aplikácie."; diff --git a/Latest/Resources/sv.lproj/InfoPlist.strings b/Latest/Resources/sv.lproj/InfoPlist.strings index e69de29b..4c4d98e2 100644 --- a/Latest/Resources/sv.lproj/InfoPlist.strings +++ b/Latest/Resources/sv.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Senaste"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Upphovsrätt © 2022 Max Langer. Alla rättigheter förbehållna."; +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Senaste"; diff --git a/Latest/Resources/sv.lproj/Localizable.strings b/Latest/Resources/sv.lproj/Localizable.strings index ecb95450..3ea4c8f0 100644 --- a/Latest/Resources/sv.lproj/Localizable.strings +++ b/Latest/Resources/sv.lproj/Localizable.strings @@ -4,85 +4,88 @@ "SectionTitle" = "%1$@ (%2$@)"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ -"UpdateErrorAlertTitle" = "An error occurred while updating %@."; +"UpdateErrorAlertTitle" = "Ett fel inträffade under uppdateringen av %@."; /* Touch Bar section title for available updates */ -"AvailableSection" = "Available"; +"AvailableSection" = "Tillgänglig"; /* Table Section Header for available updates */ -"AvailableUpdatesSection" = "Available Updates"; +"AvailableUpdatesSection" = "Tillgängliga uppdateringar"; /* Cancel button in an update dialogue */ -"CancelAction" = "Cancel"; +"CancelAction" = "Avbryt"; /* Update progress state of cancelling an update */ -"CancellingUpdateStatus" = "Cancelling"; +"CancellingUpdateStatus" = "Avbryter"; /* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; +"DownloadingUpdateStatus" = "Laddar ner %@ av %@"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Ignored"; +"IgnoredSection" = "Ignorerad"; /* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; +"ErrorButtonAccessibilityTitle" = "Fel vid uppdatering av app"; /* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; +"ExtractingUpdateStatus" = "Packar upp uppdatering"; /* Table Section Header for ignored apps */ -"IgnoredAppsSection" = "Ignored Apps"; +"IgnoredAppsSection" = "Ignorerade appar"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Initializing"; +"InitializingUpdateStatus" = "Initialiserar"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Installed"; +"InstalledSection" = "Installerad"; /* Table Section Header for already installed apps */ -"InstalledAppsSection" = "Installed Apps"; +"InstalledAppsSection" = "Installerade appar"; /* Update progress state of installing an update */ -"InstallingUpdateStatus" = "Installing"; +"InstallingUpdateStatus" = "Installerar"; /* The source name of apps loaded from the App Store. */ "AppStoreSource" = "Mac App Store"; /* New Version String */ -"RemoteVersionFormat" = "New version: %@"; +"RemoteVersionFormat" = "Ny version: %@"; /* Title of release notes empty state */ -"NoAppSelectedTitle" = "No app selected."; +"NoAppSelectedTitle" = "Ingen app vald."; /* Error message that no release notes were found */ -"NoReleaseNotesFoundError" = "No release notes were found for this app."; +"NoReleaseNotesFoundError" = "Ingen versionsinformation kunde hittas för denna app."; /* Button to retry an update in an error dialogue */ -"RetryAction" = "Retry"; +"RetryAction" = "Försök igen"; /* Reveal in Finder Row action */ -"RevealAction" = "Reveal"; +"RevealAction" = "Visa"; /* Action to open the app. */ -"OpenAction" = "Open"; +"OpenAction" = "Öppna"; /* Description of release notes empty state */ -"NoAppSelectedDescription" = "Select an app from the list to read its release notes."; +"NoAppSelectedDescription" = "Välj en app från listan för att läsa versionsinformation."; /* The description of the app's source. e.g. 'Source: Mac App Store' */ -"AppSource" = "Source: %@"; +"AppSource" = "Källa: %@"; /* Update String */ -"UpdateAction" = "Update"; +"UpdateAction" = "Uppdatera"; /* Error message stating that update info could not be retrieved for a given app. */ -"UpdateInfoNotFoundError" = "No update was found for this app."; +"UpdateInfoNotFoundError" = "Ingen uppdatering hittades för denna app."; /* Update progress state of waiting to start an update */ -"WaitingUpdateStatus" = "Waiting"; +"WaitingUpdateStatus" = "Väntar"; /* The source name for apps loaded from third-party websites. */ -"WebSource" = "Web"; +"WebSource" = "Webb"; /* Current Version String */ -"LocalVersionFormat" = "Your version: %@"; +"LocalVersionFormat" = "Din version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Logga in på Mac App Store för att uppdatera denna app."; diff --git a/Latest/Resources/sv.lproj/Localizable.stringsdict b/Latest/Resources/sv.lproj/Localizable.stringsdict index 36a87067..fd567b33 100644 --- a/Latest/Resources/sv.lproj/Localizable.stringsdict +++ b/Latest/Resources/sv.lproj/Localizable.stringsdict @@ -1,6 +1,24 @@ - - + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Uppdaterad! + one + %d Updatering Tillgänglig + other + %d Updateringar Tillgängliga + + NSStringLocalizedFormatKey + %#@value@ + + diff --git a/Latest/Resources/th.lproj/Localizable.strings b/Latest/Resources/th.lproj/Localizable.strings index 997f0862..d5a0a189 100644 --- a/Latest/Resources/th.lproj/Localizable.strings +++ b/Latest/Resources/th.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/tr.lproj/InfoPlist.strings b/Latest/Resources/tr.lproj/InfoPlist.strings index e69de29b..0244ad2a 100644 --- a/Latest/Resources/tr.lproj/InfoPlist.strings +++ b/Latest/Resources/tr.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Güncel"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Güncel"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Telif Hakkı © 2022 Max Langer. Tüm Hakları Saklıdır"; diff --git a/Latest/Resources/tr.lproj/Localizable.strings b/Latest/Resources/tr.lproj/Localizable.strings index 997f0862..0cea8bfb 100644 --- a/Latest/Resources/tr.lproj/Localizable.strings +++ b/Latest/Resources/tr.lproj/Localizable.strings @@ -4,40 +4,40 @@ "SectionTitle" = "%1$@ (%2$@)"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ -"UpdateErrorAlertTitle" = "An error occurred while updating %@."; +"UpdateErrorAlertTitle" = "Güncelleme sırasında bir hata oluştu %@."; /* Touch Bar section title for available updates */ -"AvailableSection" = "Available"; +"AvailableSection" = "Hazır"; /* Table Section Header for available updates */ -"AvailableUpdatesSection" = "Available Updates"; +"AvailableUpdatesSection" = "Kullanılabilir Güncellemeler"; /* Cancel button in an update dialogue */ -"CancelAction" = "Cancel"; +"CancelAction" = "İptal"; /* Update progress state of cancelling an update */ -"CancellingUpdateStatus" = "Cancelling"; +"CancellingUpdateStatus" = "İptal"; /* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; +"DownloadingUpdateStatus" = "%@ / %@ indiriliyor"; /* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; +"ErrorButtonAccessibilityTitle" = "Uygulama güncellenirken hata oluştu"; /* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; +"ExtractingUpdateStatus" = "Güncelleme ayıklanıyor"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Ignored"; +"IgnoredSection" = "Yok Sayıldı"; /* Table Section Header for ignored apps */ -"IgnoredAppsSection" = "Ignored Apps"; +"IgnoredAppsSection" = "Yoksayılan Uygulamalar"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Initializing"; +"InitializingUpdateStatus" = "Başlatılıyor"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Installed"; +"InstalledSection" = "Yüklendi"; /* Table Section Header for already installed apps */ "InstalledAppsSection" = "Installed Apps"; @@ -64,7 +64,7 @@ "RevealAction" = "Reveal"; /* Action to open the app. */ -"OpenAction" = "Open"; +"OpenAction" = "Aç"; /* Description of release notes empty state */ "NoAppSelectedDescription" = "Select an app from the list to read its release notes."; @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/tr.lproj/Localizable.stringsdict b/Latest/Resources/tr.lproj/Localizable.stringsdict index 36a87067..d0ece70e 100644 --- a/Latest/Resources/tr.lproj/Localizable.stringsdict +++ b/Latest/Resources/tr.lproj/Localizable.stringsdict @@ -1,6 +1,24 @@ - - + + NumberOfUpdatesAvailable + + NSStringLocalizedFormatKey + %#@value@ + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Güncel! + one + %d Güncelleme Mevcut + other + %d Güncellemeler Mevcut + + + diff --git a/Latest/Resources/uk.lproj/InfoPlist.strings b/Latest/Resources/uk.lproj/InfoPlist.strings index e69de29b..f6853c7c 100644 --- a/Latest/Resources/uk.lproj/InfoPlist.strings +++ b/Latest/Resources/uk.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleName" = "Latest"; + +/* The name of the app. Should only be translated if "Latest" feels "wrong" for a given language and if a better alternative exists. I.e. the app is not localized in German as english app names are common and no "good sounding" alternatives exist. */ +"CFBundleDisplayName" = "Latest"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Авторські права © 2022 Max Langer. Усі права захищено."; diff --git a/Latest/Resources/uk.lproj/Localizable.strings b/Latest/Resources/uk.lproj/Localizable.strings index 997f0862..271a2cb5 100644 --- a/Latest/Resources/uk.lproj/Localizable.strings +++ b/Latest/Resources/uk.lproj/Localizable.strings @@ -4,85 +4,88 @@ "SectionTitle" = "%1$@ (%2$@)"; /* Title of alert stating that an error occurred during an app update. The placeholder %@ will be replaced with the name of the app. */ -"UpdateErrorAlertTitle" = "An error occurred while updating %@."; +"UpdateErrorAlertTitle" = "Під час оновлення сталася помилка %@."; /* Touch Bar section title for available updates */ -"AvailableSection" = "Available"; +"AvailableSection" = "Доступно"; /* Table Section Header for available updates */ -"AvailableUpdatesSection" = "Available Updates"; +"AvailableUpdatesSection" = "Доступні Оновлення"; /* Cancel button in an update dialogue */ -"CancelAction" = "Cancel"; +"CancelAction" = "Скасувати"; /* Update progress state of cancelling an update */ -"CancellingUpdateStatus" = "Cancelling"; +"CancellingUpdateStatus" = "Скасування"; /* Update progress state of downloading an update. The first %@ stands for the already downloaded bytes, the second one for the total amount of bytes. One expected output would be 'Downloading 3 MB of 21 MB' */ -"DownloadingUpdateStatus" = "Downloading %@ of %@"; +"DownloadingUpdateStatus" = "Завантаження %@ із %@"; /* Description of button that opens an error dialogue. */ -"ErrorButtonAccessibilityTitle" = "Error while updating app"; +"ErrorButtonAccessibilityTitle" = "Помилка під час оновлення застосунку"; /* Update progress state of extracting the downloaded update */ -"ExtractingUpdateStatus" = "Extracting Update"; +"ExtractingUpdateStatus" = "Вилучення оновлення"; /* Touch Bar section title for ignored apps */ -"IgnoredSection" = "Ignored"; +"IgnoredSection" = "Ігнорується"; /* Table Section Header for ignored apps */ -"IgnoredAppsSection" = "Ignored Apps"; +"IgnoredAppsSection" = "Ігноровані Застосунки"; /* Update progress state of initializing an update */ -"InitializingUpdateStatus" = "Initializing"; +"InitializingUpdateStatus" = "Ініціалізація"; /* Touch Bar section title for installed apps */ -"InstalledSection" = "Installed"; +"InstalledSection" = "Встановлено"; /* Table Section Header for already installed apps */ -"InstalledAppsSection" = "Installed Apps"; +"InstalledAppsSection" = "Встановлені застосунки"; /* Update progress state of installing an update */ -"InstallingUpdateStatus" = "Installing"; +"InstallingUpdateStatus" = "Встановлення"; /* The source name of apps loaded from the App Store. */ "AppStoreSource" = "Mac App Store"; /* New Version String */ -"RemoteVersionFormat" = "New version: %@"; +"RemoteVersionFormat" = "Нова версія: %@"; /* Title of release notes empty state */ -"NoAppSelectedTitle" = "No app selected."; +"NoAppSelectedTitle" = "Застосунок не вибрано."; /* Error message that no release notes were found */ -"NoReleaseNotesFoundError" = "No release notes were found for this app."; +"NoReleaseNotesFoundError" = "Для цього застосунку не знайдено приміток до випуску."; /* Button to retry an update in an error dialogue */ -"RetryAction" = "Retry"; +"RetryAction" = "Повторити спробу"; /* Reveal in Finder Row action */ -"RevealAction" = "Reveal"; +"RevealAction" = "Розкрити"; /* Action to open the app. */ -"OpenAction" = "Open"; +"OpenAction" = "Відкрити"; /* Description of release notes empty state */ -"NoAppSelectedDescription" = "Select an app from the list to read its release notes."; +"NoAppSelectedDescription" = "Виберіть застосунок зі списку, щоб прочитати примітки до її випуску."; /* The description of the app's source. e.g. 'Source: Mac App Store' */ -"AppSource" = "Source: %@"; +"AppSource" = "Джерело: %@"; /* Update String */ -"UpdateAction" = "Update"; +"UpdateAction" = "Оновлення"; /* Error message stating that update info could not be retrieved for a given app. */ -"UpdateInfoNotFoundError" = "No update was found for this app."; +"UpdateInfoNotFoundError" = "Не знайдено оновлення для цього застосунку."; /* Update progress state of waiting to start an update */ -"WaitingUpdateStatus" = "Waiting"; +"WaitingUpdateStatus" = "Очікування"; /* The source name for apps loaded from third-party websites. */ -"WebSource" = "Web"; +"WebSource" = "Веб"; /* Current Version String */ -"LocalVersionFormat" = "Your version: %@"; +"LocalVersionFormat" = "Ваша версія: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "Увійдіть до Mac App Store, щоб оновити цей застосунок."; diff --git a/Latest/Resources/uk.lproj/Localizable.stringsdict b/Latest/Resources/uk.lproj/Localizable.stringsdict index 36a87067..e63fe3ae 100644 --- a/Latest/Resources/uk.lproj/Localizable.stringsdict +++ b/Latest/Resources/uk.lproj/Localizable.stringsdict @@ -1,6 +1,26 @@ - - + + NumberOfUpdatesAvailable + + value + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Оновлено! + one + %d Оновлення доступне + few + %d Оновлення доступні + many + %d Оновлень доступні + + NSStringLocalizedFormatKey + %#@value@ + + diff --git a/Latest/Resources/vi.lproj/Localizable.strings b/Latest/Resources/vi.lproj/Localizable.strings index 9a181ce0..c9612e7c 100644 --- a/Latest/Resources/vi.lproj/Localizable.strings +++ b/Latest/Resources/vi.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "Your version: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Resources/zh-Hans.lproj/Localizable.strings b/Latest/Resources/zh-Hans.lproj/Localizable.strings index 13d4af79..77cc4be8 100644 --- a/Latest/Resources/zh-Hans.lproj/Localizable.strings +++ b/Latest/Resources/zh-Hans.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "你的版本: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "登录 Mac App Store 以更新此应用程序。"; diff --git a/Latest/Resources/zh-Hant.lproj/Localizable.strings b/Latest/Resources/zh-Hant.lproj/Localizable.strings index 28b27e5a..3dca4609 100644 --- a/Latest/Resources/zh-Hant.lproj/Localizable.strings +++ b/Latest/Resources/zh-Hant.lproj/Localizable.strings @@ -86,3 +86,6 @@ /* Current Version String */ "LocalVersionFormat" = "您的版本: %@"; + +/* Error description when the attempt to update an app from the App Store failed because the user is not signed in with their App Store account. */ +"AppStoreNotSignedInError" = "\"Sign in to the Mac App Store to update this app.\""; diff --git a/Latest/Utilities/LatestError.swift b/Latest/Utilities/LatestError.swift index 101d9303..de13f250 100644 --- a/Latest/Utilities/LatestError.swift +++ b/Latest/Utilities/LatestError.swift @@ -15,6 +15,8 @@ enum LatestError: Int, CustomNSError { /// An error to be used when no release notes were found for a given app. case releaseNotesUnavailable + /// An error raised by the App Store updater in case the user is not signed in. + case notSignedInToAppStore // MARK: - NSError Protocol @@ -36,6 +38,9 @@ enum LatestError: Int, CustomNSError { case .releaseNotesUnavailable: return NSLocalizedString("NoReleaseNotesFoundError", comment: "Error message that no release notes were found") + + case .notSignedInToAppStore: + return NSLocalizedString("AppStoreNotSignedInError", comment: "Error description when no update was found for a particular app.") } } diff --git a/Latest/View Model/AppListSettings.swift b/Latest/View Model/AppListSettings.swift index f4daf2db..054a4bf6 100644 --- a/Latest/View Model/AppListSettings.swift +++ b/Latest/View Model/AppListSettings.swift @@ -15,7 +15,10 @@ struct AppListSettings: Observable { var observers = [UUID : ObservationHandler]() - private init() {} + private init() { + // Show installed updates by default + UserDefaults.standard.register(defaults: [ShowInstalledUpdatesKey: true]) + } static var shared: AppListSettings = { return AppListSettings() diff --git a/Latest/View Model/AppListSnapshot.swift b/Latest/View Model/AppListSnapshot.swift index 4c67387c..160fe26e 100644 --- a/Latest/View Model/AppListSnapshot.swift +++ b/Latest/View Model/AppListSnapshot.swift @@ -47,7 +47,7 @@ struct AppListSnapshot { // Filter installed updates if !AppListSettings.shared.showInstalledUpdates { - visibleApps = visibleApps.filter({ $0.updateAvailable }) + visibleApps = visibleApps.filter({ $0.updateAvailable || $0.isIgnored }) } // Filter unsupported apps diff --git a/Tests/VersionTest.swift b/Tests/VersionTest.swift index 2718c729..df655843 100644 --- a/Tests/VersionTest.swift +++ b/Tests/VersionTest.swift @@ -13,13 +13,13 @@ class VersionTest: XCTestCase { func testInitialization() { // Simple test - var version = Version("2.1.5", "215") + var version = Version(versionNumber: "2.1.5", buildNumber: "215") XCTAssertEqual(version.versionNumber, "2.1.5") XCTAssertEqual(version.buildNumber, "215") // Nil test - version = Version(nil, nil) + version = Version(versionNumber: nil, buildNumber: nil) XCTAssertNil(version.versionNumber) XCTAssertNil(version.buildNumber) } @@ -31,23 +31,23 @@ class VersionTest: XCTestCase { // If bundle is available, check for the bundle // Should check the bundle version - var v1 = Version("2.1.5", "312") - var v2 = Version("2.1.6d12", "215") + var v1 = Version(versionNumber: "2.1.5", buildNumber: "312") + var v2 = Version(versionNumber: "2.1.6d12", buildNumber: "215") self.newer(v1, v2) // Should check the version - v1 = Version("2.1.5", nil) - v2 = Version("2.2.6", "216") + v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + v2 = Version(versionNumber: "2.2.6", buildNumber: "216") self.older(v1, v2) // Should check the version - v1 = Version("2.1.5", "215") - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "2.1.5", buildNumber: "215") + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.older(v1, v2) // Should check the version - v1 = Version("2.1.5", nil) - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.older(v1, v2) } @@ -55,104 +55,152 @@ class VersionTest: XCTestCase { // MARK: - Bundle Checking func testOlderBundle() { - var v1 = Version("2.1.5", "215") - var v2 = Version("2.1.6", "216") + var v1 = Version(versionNumber: "2.1.5", buildNumber: "215") + var v2 = Version(versionNumber: "2.1.6", buildNumber: "216") self.older(v1, v2) - v1 = Version("2.1.5", "215a") - v2 = Version("2.2.6", "216b") + v1 = Version(versionNumber: "2.1.5", buildNumber: "215a") + v2 = Version(versionNumber: "2.2.6", buildNumber: "216b") self.older(v1, v2) } func testEqualBundle() { - let v1 = Version("2.1.5", "215") - let v2 = Version("2.1.5", "215") + let v1 = Version(versionNumber: "2.1.5", buildNumber: "215") + let v2 = Version(versionNumber: "2.1.5", buildNumber: "215") self.equal(v1, v2) } func testNewerBundle() { - var v1 = Version("2.0.6", "217") - var v2 = Version("2.1.5", "216") + var v1 = Version(versionNumber: "2.0.6", buildNumber: "217") + var v2 = Version(versionNumber: "2.1.5", buildNumber: "216") self.newer(v1, v2) - v1 = Version("2.1.6", "217a") - v2 = Version("2.2.4", "216b") + v1 = Version(versionNumber: "2.1.6", buildNumber: "217a") + v2 = Version(versionNumber: "2.2.4", buildNumber: "216b") self.newer(v1, v2) } // MARK: - Version Checking func testOlderVersionSimple() { - var v1 = Version("2.1.5", nil) - var v2 = Version("2.1.6", "216") + var v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.6", buildNumber: "216") self.older(v1, v2) - v1 = Version("2.1.5", "215") - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "2.1.5", buildNumber: "215") + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.older(v1, v2) - v1 = Version("2.1.5", nil) - v2 = Version("3.1.6", nil) + v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + v2 = Version(versionNumber: "3.1.6", buildNumber: nil) self.older(v1, v2) } func testEqualVersionSimple() { - var v1 = Version("2.1.5", nil) - var v2 = Version("2.1.5", "215") + var v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.5", buildNumber: "215") self.equal(v1, v2) - v1 = Version("2.2.6", "215") - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "2.2.6", buildNumber: "215") + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.equal(v1, v2) - v1 = Version("3.1.6", nil) - v2 = Version("3.1.6", nil) + v1 = Version(versionNumber: "3.1.6", buildNumber: nil) + v2 = Version(versionNumber: "3.1.6", buildNumber: nil) self.equal(v1, v2) } func testNewerVersionSimple() { - var v1 = Version("2.1.6", nil) - var v2 = Version("2.1.5", "216") + var v1 = Version(versionNumber: "2.1.6", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.5", buildNumber: "216") self.newer(v1, v2) - v1 = Version("2.3.6", "215") - v2 = Version("2.2.4", nil) + v1 = Version(versionNumber: "2.3.6", buildNumber: "215") + v2 = Version(versionNumber: "2.2.4", buildNumber: nil) self.newer(v1, v2) - v1 = Version("4.1.5", nil) - v2 = Version("3.1.6", nil) + v1 = Version(versionNumber: "4.1.5", buildNumber: nil) + v2 = Version(versionNumber: "3.1.6", buildNumber: nil) self.newer(v1, v2) } func testOlderVersion() { - let v1 = Version("2.1.5", nil) - let v2 = Version("v2.1.6", "216") + let v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + let v2 = Version(versionNumber: "v2.1.6", buildNumber: "216") self.older(v1, v2) } func testEqualVersion() { - var v1 = Version("2.1.5", nil) - var v2 = Version("2.1.5.0", "215") + var v1 = Version(versionNumber: "2.1.5", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.5.0", buildNumber: "215") self.equal(v1, v2) - v1 = Version("2.2.6.0", "215") - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "2.2.6.0", buildNumber: "215") + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.equal(v1, v2) - v1 = Version("v2.2.6", nil) - v2 = Version("2.2.6", nil) + v1 = Version(versionNumber: "v2.2.6", buildNumber: nil) + v2 = Version(versionNumber: "2.2.6", buildNumber: nil) self.equal(v1, v2) } func testNewerVersion() { - var v1 = Version("v3.1.5", nil) - var v2 = Version("2.1.6", "216") + var v1 = Version(versionNumber: "v3.1.5", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.6", buildNumber: "216") self.newer(v1, v2) - v1 = Version("3.1.5", "215") - v2 = Version("v2.2.6", nil) + v1 = Version(versionNumber: "3.1.5", buildNumber: "215") + v2 = Version(versionNumber: "v2.2.6", buildNumber: nil) self.newer(v1, v2) } + + func testNumeralSystems() { + // Western arabic numerals + var v1 = Version(versionNumber: "v3.1.5", buildNumber: nil) + var v2 = Version(versionNumber: "2.1.6", buildNumber: "216") + self.newer(v1, v2) + + // Eastern arabic numerals + v1 = Version(versionNumber: "٣.١.٥", buildNumber: "٢١٥") + v2 = Version(versionNumber: "v٢.٢.٦", buildNumber: nil) + self.newer(v1, v2) + + // Indian numerals + v1 = Version(versionNumber: "३.१.५", buildNumber: "२१७") + v2 = Version(versionNumber: "v२.१.६", buildNumber: nil) + self.newer(v1, v2) + } + + + // MARK: - OS Version + + func testGenericOSVersion() throws { + let version = try OperatingSystemVersion(string: "11.2.3") + XCTAssertEqual(version.majorVersion, 11) + XCTAssertEqual(version.minorVersion, 2) + XCTAssertEqual(version.patchVersion, 3) + } + + func testOnlyMajorOSVersion() throws { + let version = try OperatingSystemVersion(string: "11.0") + XCTAssertEqual(version.majorVersion, 11) + XCTAssertEqual(version.minorVersion, 0) + XCTAssertEqual(version.patchVersion, 0) + } + + func testFourComponentOSVersion() throws { + let version = try OperatingSystemVersion(string: "11.2.3.1") + XCTAssertEqual(version.majorVersion, 11) + XCTAssertEqual(version.minorVersion, 2) + XCTAssertEqual(version.patchVersion, 3) + } + + + func testInvalidOSVersion() throws { + XCTAssertThrowsError(try OperatingSystemVersion(string: "")) + XCTAssertThrowsError(try OperatingSystemVersion(string: "Version")) + } + // MARK: - Helper Methods