From 02a9d781a1aa69bf3eaa1e2fc30f8434ec5640d0 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Tue, 1 Oct 2024 19:36:53 +0700 Subject: [PATCH 1/8] feat: timeskew & coinjoin warning --- DashSyncCurrentCommit | 2 +- DashWallet.xcodeproj/project.pbxproj | 26 ++-- .../Models/CoinJoin/CoinJoinService.swift | 97 +++++++++---- .../CoinJoin/CoinJoinInfoViewController.swift | 2 +- .../CoinJoinLevelsViewController.swift | 25 +++- ...el.swift => CoinJoinLevelsViewModel.swift} | 29 +++- .../Sources/UI/Home/HomeViewController.swift | 53 ++++++++ .../Sources/UI/Home/Views/HomeView.swift | 113 +++++++++------- .../Sources/UI/Home/Views/HomeViewModel.swift | 53 +++++++- .../Settings/SettingsMenuViewController.swift | 2 +- DashWallet/Sources/Utils/TimeUtils.swift | 128 ++++++++++++++++++ 11 files changed, 434 insertions(+), 96 deletions(-) rename DashWallet/Sources/UI/DashPay/CoinJoin/{CoinJoinViewModel.swift => CoinJoinLevelsViewModel.swift} (71%) create mode 100644 DashWallet/Sources/Utils/TimeUtils.swift diff --git a/DashSyncCurrentCommit b/DashSyncCurrentCommit index 0f3f5633b..ed9612b84 100644 --- a/DashSyncCurrentCommit +++ b/DashSyncCurrentCommit @@ -1 +1 @@ -49b001b3a003a443fd3fc6d2cd1a470e2cb7638a +b865fe4369d35ec7a123171c4ce31a759161c68b diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index 155dbd6f1..c7eafa6fd 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -615,6 +615,8 @@ 759ADD582BF3447400767ACD /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759ADD562BF3447400767ACD /* Button.swift */; }; 759C8F9F2B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; 759C8FA02B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; + 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; + 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; 75A664D82B09F1EA007EFD16 /* VotingInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A664D72B09F1EA007EFD16 /* VotingInfoViewController.swift */; }; 75A8C1652AE5726B0042256E /* UsernameRequestsDAO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */; }; 75A8C1672AE5734A0042256E /* UsernameRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1662AE5734A0042256E /* UsernameRequest.swift */; }; @@ -633,8 +635,8 @@ 75B2F45D2B0B1EC1004C071A /* RequestUsernameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B2F45C2B0B1EC1004C071A /* RequestUsernameViewController.swift */; }; 75BDE7AC2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; 75BDE7AD2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; - 75C1F0452AE26AC0006929CA /* CoinJoinViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinViewModel.swift */; }; - 75C1F0462AE26AC0006929CA /* CoinJoinViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinViewModel.swift */; }; + 75C1F0452AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */; }; + 75C1F0462AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */; }; 75C1F09E2AFF675400FE675E /* EnterVotingKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F09D2AFF675400FE675E /* EnterVotingKeyViewController.swift */; }; 75C72CDF2B19FB0C00129504 /* DPWelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C72CDE2B19FB0C00129504 /* DPWelcomeView.swift */; }; 75C83B522B11B62400C33660 /* ConfirmRequestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C83B512B11B62400C33660 /* ConfirmRequestViewController.swift */; }; @@ -2483,6 +2485,7 @@ 759816E619357D6F005060EA /* BRBubbleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BRBubbleView.m; sourceTree = ""; }; 759ADD562BF3447400767ACD /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeAPYView.swift; sourceTree = ""; }; + 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeUtils.swift; sourceTree = ""; }; 75A664D72B09F1EA007EFD16 /* VotingInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingInfoViewController.swift; sourceTree = ""; }; 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestsDAO.swift; sourceTree = ""; }; 75A8C1662AE5734A0042256E /* UsernameRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequest.swift; sourceTree = ""; }; @@ -2494,7 +2497,7 @@ 75AA33D72BFB4A5A00F12465 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 75B2F45C2B0B1EC1004C071A /* RequestUsernameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestUsernameViewController.swift; sourceTree = ""; }; 75BDE7AB2BF3287400556791 /* Toast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = ""; }; - 75C1F0442AE26AC0006929CA /* CoinJoinViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinViewModel.swift; sourceTree = ""; }; + 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinLevelsViewModel.swift; sourceTree = ""; }; 75C1F09D2AFF675400FE675E /* EnterVotingKeyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnterVotingKeyViewController.swift; sourceTree = ""; }; 75C72CDE2B19FB0C00129504 /* DPWelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DPWelcomeView.swift; sourceTree = ""; }; 75C83B512B11B62400C33660 /* ConfirmRequestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmRequestViewController.swift; sourceTree = ""; }; @@ -5892,6 +5895,7 @@ isa = PBXGroup; children = ( 472D13E0299E1F2F006903F1 /* CSVBuilder.swift */, + 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */, ); path = Utils; sourceTree = ""; @@ -6071,7 +6075,7 @@ 75889B752AD296E700C17F5D /* CoinJoinInfoViewController.swift */, 751B61C72AE0EDD000D1C2EF /* CoinJoinLevelsViewController.swift */, 75889B812AD2D7F800C17F5D /* CoinJoin.storyboard */, - 75C1F0442AE26AC0006929CA /* CoinJoinViewModel.swift */, + 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */, ); path = CoinJoin; sourceTree = ""; @@ -8738,7 +8742,7 @@ 478A2C7128DC554200AD1420 /* BuySellPortalModel.swift in Sources */, 75F51AAF2ABD8D070057B499 /* IntegrationViewController+Coinbase.swift in Sources */, 75AA33D22BF9E18E00F12465 /* Color+DWStyle.swift in Sources */, - 75C1F0452AE26AC0006929CA /* CoinJoinViewModel.swift in Sources */, + 75C1F0452AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */, 478C98262942DC2700FAA0F0 /* BuyDashViewController.swift in Sources */, 2A0C69D023143435001B8C90 /* DWModalDismissalAnimation.m in Sources */, 47CDEECE294A3CF2008AE06D /* UIViewController+DashWallet.swift in Sources */, @@ -8979,6 +8983,7 @@ 75EBAA292BBBE385004488E3 /* ZenLedgerViewModel.swift in Sources */, 471A260A289ACDF70056B7B2 /* Taxes.swift in Sources */, 2AD1CE9722DD0E8E00C99324 /* DWSeedWordModel+DWLayoutSupport.m in Sources */, + 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */, 47EEE243293F436200049E0B /* CoinbaseAPIClient.swift in Sources */, 47B30D80291123D30080C326 /* SendAmountViewController.swift in Sources */, 47CF46A1296540EF0067B6EE /* AccountService.swift in Sources */, @@ -9634,7 +9639,7 @@ C9D2C83F2A320AA000D15901 /* CoinbaseSwapeTradeResponse.swift in Sources */, C943B4FF2A40A54600AF23C5 /* DWDPGenericContactRequestItemView.m in Sources */, C9D2C8402A320AA000D15901 /* DWQRScanView.m in Sources */, - 75C1F0462AE26AC0006929CA /* CoinJoinViewModel.swift in Sources */, + 75C1F0462AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */, C9D2C8412A320AA000D15901 /* ServiceItem.swift in Sources */, C9D2C8422A320AA000D15901 /* ErrorPresentable.swift in Sources */, C9D2C8432A320AA000D15901 /* DWPinInputStepView.m in Sources */, @@ -9668,6 +9673,7 @@ C943B53F2A40A6BE00AF23C5 /* DPAlertChildContentsView.m in Sources */, C9D2C85B2A320AA000D15901 /* PointOfUseListEmptyResultsView.swift in Sources */, C9D2C85C2A320AA000D15901 /* ShortcutsModel.swift in Sources */, + 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */, 75FFD6C82BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */, C9D2C85D2A320AA000D15901 /* DWLockPinInputView.m in Sources */, C9D2C85E2A320AA000D15901 /* UIView+DWHUD.m in Sources */, @@ -10753,7 +10759,7 @@ CLIENT_ID = 0c38beb67db0c68191326be347d7ec0abd7d77adb02a79db1abeba343f16a0f7; CLIENT_SECRET = cc980185754f905e24250f877792817c03540b3d0e0959721df291c816797e59; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 170; + CURRENT_PROJECT_VERSION = 171; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -10889,7 +10895,7 @@ CLIENT_ID = 0c38beb67db0c68191326be347d7ec0abd7d77adb02a79db1abeba343f16a0f7; CLIENT_SECRET = cc980185754f905e24250f877792817c03540b3d0e0959721df291c816797e59; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 170; + CURRENT_PROJECT_VERSION = 171; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -11024,7 +11030,7 @@ CLIENT_ID = 0c38beb67db0c68191326be347d7ec0abd7d77adb02a79db1abeba343f16a0f7; CLIENT_SECRET = cc980185754f905e24250f877792817c03540b3d0e0959721df291c816797e59; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 170; + CURRENT_PROJECT_VERSION = 171; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -11169,7 +11175,7 @@ CLIENT_ID = 0c38beb67db0c68191326be347d7ec0abd7d77adb02a79db1abeba343f16a0f7; CLIENT_SECRET = cc980185754f905e24250f877792817c03540b3d0e0959721df291c816797e59; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 170; + CURRENT_PROJECT_VERSION = 171; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; diff --git a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift index 8659804ca..7940b44de 100644 --- a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift +++ b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift @@ -55,13 +55,15 @@ enum CoinJoinMode: Int { case advanced } -private let kDefaultMultisession = false // for stability, need to investigate +private let kDefaultMultisession = false // (android comment) for stability, need to investigate private let kDefaultRounds: Int32 = 4 private let kDefaultSessions: Int32 = 6 private let kDefaultDenominationGoal: Int32 = 50 private let kDefaultDenominationHardcap: Int32 = 300 private let kCoinJoinMainnetMode = "coinJoinModeMainnetKey" private let kCoinJoinTestnetMode = "coinJoinModeTestnetKey" +let kMaxAllowedAheadTimeskew: TimeInterval = 5 +let kMaxAllowedBehindTimeskew: TimeInterval = 20 class CoinJoinService: NSObject { static let shared: CoinJoinService = { @@ -75,6 +77,7 @@ class CoinJoinService: NSObject { private var coinJoinManager: DSCoinJoinManager? = nil private var hasAnonymizableBalance: Bool = false private var networkStatus: NetworkStatus = .online + private var timeSkew: TimeInterval = 0 private var chainModeKey: String { get { @@ -113,21 +116,24 @@ class CoinJoinService: NSObject { restoreMode() } - func updateMode(mode: CoinJoinMode) { + func updateMode(mode: CoinJoinMode) async { self.coinJoinManager?.updateOptions(withEnabled: mode != .none) - let account = DWEnvironment.sharedInstance().currentAccount - let balance = account.balance if mode != .none && self.mode == .none { - configureMixing(amount: balance) + configureMixing() configureObservers() } else if mode == .none { removeObservers() } - updateBalance(balance: balance) - // TODO: timeskew - updateState(balance: balance, mode: mode, timeSkew: TimeInterval(0), hasAnonymizableBalance: self.hasAnonymizableBalance, networkStatus: self.networkStatus, chain: DWEnvironment.sharedInstance().currentChain) + let account = DWEnvironment.sharedInstance().currentAccount + updateBalance(balance: account.balance) + let currentTimeSkew = await getCurrentTimeSkew() + updateState(mode: mode, timeSkew: currentTimeSkew, hasAnonymizableBalance: self.hasAnonymizableBalance, networkStatus: self.networkStatus, chain: DWEnvironment.sharedInstance().currentChain) + } + + func updateTimeSkew(timeSkew: TimeInterval) { + updateTimeSkewInternal(timeSkew: timeSkew) } private func prepareMixing() { @@ -142,7 +148,7 @@ class CoinJoinService: NSObject { guard let coinJoinManager = self.coinJoinManager else { return } if !coinJoinManager.startMixing() { - print("[SW] CoinJoin: Mixing has been started already.") + DSLogger.log("[SW] CoinJoin: Mixing has been started already.") } else { coinJoinManager.refreshUnusedKeys() coinJoinManager.initMasternodeGroup() @@ -150,9 +156,10 @@ class CoinJoinService: NSObject { } } - private func configureMixing(amount: UInt64) { + private func configureMixing() { guard let coinJoinManager = self.coinJoinManager ?? createCoinJoinManager() else { return } + let account = DWEnvironment.sharedInstance().currentAccount let rounds: Int32 switch mode { case .none: @@ -163,7 +170,7 @@ class CoinJoinService: NSObject { rounds = kDefaultRounds * 2 } - coinJoinManager.configureMixing(withAmount: amount, rounds: rounds, sessions: kDefaultSessions, withMultisession: kDefaultMultisession, denominationGoal: kDefaultDenominationGoal, denominationHardCap: kDefaultDenominationHardcap) + coinJoinManager.configureMixing(withAmount: account.balance, rounds: rounds, sessions: kDefaultSessions, withMultisession: kDefaultMultisession, denominationGoal: kDefaultDenominationGoal, denominationHardCap: kDefaultDenominationHardcap) } private func updateProgress() { @@ -216,9 +223,8 @@ class CoinJoinService: NSObject { DSLogger.log("[SW] CoinJoin: can mix balance: \(hasBalanceLeftToMix) = balance: (\(anonBalance > smallestDenomination) && canDenominate: \(canDenominate)) || partially-mixed: \(hasPartiallyMixedCoins)") updateState( - balance: balance, mode: self.mode, - timeSkew: TimeInterval(0), // TODO + timeSkew: self.timeSkew, hasAnonymizableBalance: hasBalanceLeftToMix, networkStatus: self.networkStatus, chain: DWEnvironment.sharedInstance().currentChain @@ -231,7 +237,6 @@ class CoinJoinService: NSObject { } private func updateState( - balance: UInt64, mode: CoinJoinMode, timeSkew: TimeInterval, hasAnonymizableBalance: Bool, @@ -239,17 +244,17 @@ class CoinJoinService: NSObject { chain: DSChain ) { synchronized(self.updateMutex) { - DSLogger.log("[SW] CoinJoin: \(mode), \(timeSkew) ms, \(hasAnonymizableBalance), \(networkStatus), synced: \(SyncingActivityMonitor.shared.state == .syncDone)") + DSLogger.log("[SW] CoinJoin: \(mode), \(timeSkew) s, \(hasAnonymizableBalance), \(networkStatus), synced: \(SyncingActivityMonitor.shared.state == .syncDone)") self.networkStatus = networkStatus self.hasAnonymizableBalance = hasAnonymizableBalance self.mode = mode - // self.timeSkew = timeSkew + self.timeSkew = timeSkew - if mode == .none /*|| !isInsideTimeSkewBounds(timeSkew) || blockchainState.replaying*/ { // TODO + if mode == .none || !isInsideTimeSkewBounds(timeSkew: timeSkew) /*|| blockchainState.replaying*/ { // TODO updateMixingState(state: .notStarted) } else { - configureMixing(amount: balance) + configureMixing() if hasAnonymizableBalance { if networkStatus == .online && SyncingActivityMonitor.shared.state == .syncDone { @@ -268,6 +273,10 @@ class CoinJoinService: NSObject { private func updateMixingState(state: MixingStatus) { synchronized(self.updateMixingStateMutex) { + if self.mixingState == state { + return + } + let previousMixingStatus = self.mixingState DSLogger.log("[SW] CoinJoin: \(previousMixingStatus) -> \(state)") @@ -288,11 +297,39 @@ class CoinJoinService: NSObject { } } + private func updateTimeSkewInternal(timeSkew: TimeInterval) { + let chain = DWEnvironment.sharedInstance().currentChain + updateState(mode: self.mode, + timeSkew: timeSkew, + hasAnonymizableBalance: self.hasAnonymizableBalance, + networkStatus: self.networkStatus, + chain: chain) + } + + private func getCurrentTimeSkew() async -> TimeInterval { + do { + return await TimeInterval(try TimeUtils.getTimeSkew()) + } catch { + DSLogger.log("[SW] CoinJoin: getTimeSkew problem: \(error)") + return 0.0 + } + } + private func restoreMode() { - let mode = CoinJoinMode(rawValue: savedMode) ?? .none - - if mode != self.mode { - updateMode(mode: mode) + Task { + let mode = CoinJoinMode(rawValue: savedMode) ?? .none + + if mode != self.mode { + await updateMode(mode: mode) + } + } + } + + private func isInsideTimeSkewBounds(timeSkew: TimeInterval) -> Bool { + if timeSkew > 0 { + return timeSkew < kMaxAllowedAheadTimeskew + } else { + return (-timeSkew) < kMaxAllowedBehindTimeskew } } @@ -303,11 +340,22 @@ class CoinJoinService: NSObject { } .store(in: &cancellableBag) + NotificationCenter.default.publisher(for: .NSSystemClockDidChange) + .sink { [weak self] _ in + guard let self = self else { return } + // Time has changed, handle the change here + DSLogger.log("[SW] CoinJoin: Time or Time Zone changed") + Task { + self.updateTimeSkewInternal(timeSkew: await self.getCurrentTimeSkew()) + } + } + .store(in: &cancellableBag) + SyncingActivityMonitor.shared.add(observer: self) } private func removeObservers() { - cancellableBag.removeAll() + cancellableBag.forEach { $0.cancel() } SyncingActivityMonitor.shared.remove(observer: self) } @@ -365,9 +413,8 @@ extension CoinJoinService: SyncingActivityMonitorObserver { func syncingActivityMonitorStateDidChange(previousState: SyncingActivityMonitor.State, state: SyncingActivityMonitor.State) { self.updateState( - balance: DWEnvironment.sharedInstance().currentAccount.balance, mode: self.mode, - timeSkew: TimeInterval(0), // TODO + timeSkew: self.timeSkew, hasAnonymizableBalance: self.hasAnonymizableBalance, networkStatus: self.networkStatus, chain: DWEnvironment.sharedInstance().currentChain diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinInfoViewController.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinInfoViewController.swift index f1f229035..7d26d2b7c 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinInfoViewController.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinInfoViewController.swift @@ -16,7 +16,7 @@ // class CoinJoinInfoViewController: UIViewController { - private let viewModel = CoinJoinViewModel.shared + private let viewModel = CoinJoinLevelViewModel.shared @IBOutlet private var titleLabel: UILabel! @IBOutlet private var subtitleLabel: UILabel! diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift index ab17aad16..7b6723065 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift @@ -18,7 +18,7 @@ import Combine class CoinJoinLevelsViewController: UIViewController { - private let viewModel = CoinJoinViewModel.shared + private let viewModel = CoinJoinLevelViewModel.shared private var cancellableBag = Set() @IBOutlet private var titleLabel: UILabel! @@ -102,7 +102,28 @@ extension CoinJoinLevelsViewController { } if viewModel.selectedMode == .none || viewModel.mixingState == .notStarted { - viewModel.selectedMode = mode + Task { + if await viewModel.isTimeSkewedForCoinJoin() { + let settingsURL = URL(string: UIApplication.openSettingsURLString) + let hasSettings = settingsURL != nil && UIApplication.shared.canOpenURL(settingsURL!) + let message = String(format: NSLocalizedString("Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin.", comment: "TimeSkew")) + + showModalDialog( + icon: .custom("image.coinjoin.menu"), + heading: NSLocalizedString("CoinJoin", comment: "CoinJoin"), + textBlock1: message, + positiveButtonText: NSLocalizedString("Settings", comment: ""), + positiveButtonAction: hasSettings ? { + if let url = settingsURL { + UIApplication.shared.open(url) + } + } : nil, + negativeButtonText: NSLocalizedString("Dismiss", comment: "") + ) + } else { + viewModel.selectedMode = mode + } + } } else { confirmFor(mode) } diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinViewModel.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift similarity index 71% rename from DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinViewModel.swift rename to DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift index d2e8038bd..e08fd8a74 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinViewModel.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift @@ -22,14 +22,14 @@ import Combine public class CoinJoinObjcWrapper: NSObject { @objc public class func infoShown() -> Bool { - CoinJoinViewModel.shared.infoShown + CoinJoinLevelViewModel.shared.infoShown } } private let kInfoShown = "coinJoinInfoShownKey" -class CoinJoinViewModel: ObservableObject { - static let shared = CoinJoinViewModel() +class CoinJoinLevelViewModel: ObservableObject { + static let shared = CoinJoinLevelViewModel() private var cancellableBag = Set() private let coinJoinService = CoinJoinService.shared @@ -63,12 +63,31 @@ class CoinJoinViewModel: ObservableObject { func startMixing() { if self.selectedMode != .none { - coinJoinService.updateMode(mode: self.selectedMode) + Task { + await coinJoinService.updateMode(mode: self.selectedMode) + } } } func stopMixing() { selectedMode = .none - coinJoinService.updateMode(mode: .none) + Task { + await coinJoinService.updateMode(mode: .none) + } + } + + func isTimeSkewedForCoinJoin() async -> Bool { + do { + let timeSkew = try await TimeUtils.getTimeSkew() + coinJoinService.updateTimeSkew(timeSkew: timeSkew) + + if timeSkew > 0 { + return timeSkew > kMaxAllowedAheadTimeskew + } else { + return -timeSkew > kMaxAllowedBehindTimeskew + } + } catch { + return false + } } } diff --git a/DashWallet/Sources/UI/Home/HomeViewController.swift b/DashWallet/Sources/UI/Home/HomeViewController.swift index d78b95310..121a66c69 100644 --- a/DashWallet/Sources/UI/Home/HomeViewController.swift +++ b/DashWallet/Sources/UI/Home/HomeViewController.swift @@ -17,11 +17,14 @@ import UIKit import SwiftUI +import Combine class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { + private var cancellableBag = Set() var model: DWHomeProtocol! private var homeView: HomeView! weak var delegate: (DWHomeViewControllerDelegate & DWWipeDelegate)? + private let viewModel = HomeViewModel.shared #if DASHPAY var isBackButtonHidden: Bool = false @@ -61,6 +64,7 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { setupView() performJailbreakCheck() + configureObservers() } override var preferredStatusBarStyle: UIStatusBarStyle { @@ -220,6 +224,55 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { let nvc = BaseNavigationController(rootViewController: controller) present(nvc, animated: true, completion: nil) } + + private func configureObservers() { + viewModel.$showTimeSkewAlertDialog + .sink { [weak self] showTimeSkew in + guard let self = self else { return } + + if showTimeSkew { + let diffSeconds = (viewModel.timeSkew < 0 ? -1 : 1) * Int64(ceil(abs(viewModel.timeSkew))) + let coinJoinOn = viewModel.coinJoinMode != .none + self.showTimeSkewDialog(diffSeconds: diffSeconds, coinjoin: coinJoinOn) + } + } + .store(in: &cancellableBag) + + NotificationCenter.default.publisher(for: .NSSystemClockDidChange) + .sink { [weak self] _ in self?.viewModel.checkTimeSkew(force: true) } + .store(in: &cancellableBag) + } + + private func showTimeSkewDialog(diffSeconds: Int64, coinjoin: Bool) { + let settingsURL = URL(string: UIApplication.openSettingsURLString) + let hasSettings = settingsURL != nil && UIApplication.shared.canOpenURL(settingsURL!) + let message: String + + if coinjoin { + let position = diffSeconds > 0 ? NSLocalizedString("ahead", comment: "TimeSkew") : NSLocalizedString("behind", comment: "TimeSkew") + message = String(format: NSLocalizedString("Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin.", comment: "TimeSkew"), position, abs(diffSeconds)) + } else { + message = String(format: NSLocalizedString("Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings.", comment: "TimeSkew"), abs(diffSeconds / 60)) + } + + showModalDialog( + style: .warning, + icon: .system("exclamationmark.triangle"), + heading: NSLocalizedString("Check date & time settings", comment: "TimeSkew"), + textBlock1: message, + positiveButtonText: NSLocalizedString("Settings", comment: ""), + positiveButtonAction: hasSettings ? { + self.viewModel.showTimeSkewAlertDialog = false + if let url = settingsURL { + UIApplication.shared.open(url) + } + } : nil, + negativeButtonText: NSLocalizedString("Dismiss", comment: ""), + negativeButtonAction: { + self.viewModel.showTimeSkewAlertDialog = false + } + ) + } } diff --git a/DashWallet/Sources/UI/Home/Views/HomeView.swift b/DashWallet/Sources/UI/Home/Views/HomeView.swift index e3640d809..99c51f39c 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeView.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeView.swift @@ -34,7 +34,6 @@ protocol HomeViewDelegate: AnyObject { // MARK: - HomeView final class HomeView: UIView, DWHomeModelUpdatesObserver, DWDPRegistrationErrorRetryDelegate { - weak var delegate: HomeViewDelegate? private(set) var headerView: HomeHeaderView! @@ -42,7 +41,7 @@ final class HomeView: UIView, DWHomeModelUpdatesObserver, DWDPRegistrationErrorR // Strong ref to current dataSource to make sure it always exists while tableView uses it var currentDataSource: TransactionListDataSource? - var viewModel: HomeViewModel = HomeViewModel() + private let viewModel = HomeViewModel.shared @objc var model: DWHomeProtocol? { @@ -84,7 +83,7 @@ final class HomeView: UIView, DWHomeModelUpdatesObserver, DWDPRegistrationErrorR syncingHeaderView = SyncingHeaderView(frame: CGRect.zero) syncingHeaderView.delegate = self - let content = TransactionList( + let content = HomeViewContent( viewModel: self.viewModel, balanceHeader: { UIViewWrapper(uiView: self.headerView) }, syncingHeader: { UIViewWrapper(uiView: self.syncingHeaderView) } @@ -103,7 +102,10 @@ final class HomeView: UIView, DWHomeModelUpdatesObserver, DWDPRegistrationErrorR ]) swiftUIController.didMove(toParent: nil) - + configureObservers() + } + + private func configureObservers() { NotificationCenter.default.addObserver(self, selector: #selector(setNeedsLayout), name: UIContentSizeCategory.didChangeNotification, @@ -272,7 +274,7 @@ struct TxPreviewModel: Identifiable, Equatable { } } -struct TransactionList: View { +struct HomeViewContent: View { @State private var selectedTxDataItem: TransactionListDataItem? = nil @StateObject var viewModel: HomeViewModel @@ -282,59 +284,64 @@ struct TransactionList: View { private let topOverscrollSize: CGFloat = 1000 // Fixed value for top overscroll area var body: some View { - ScrollView { - ZStack { Color.navigationBarColor } // Top overscroll area - .frame(height: topOverscrollSize) - .padding(EdgeInsets(top: -topOverscrollSize, leading: 0, bottom: 0, trailing: 0)) - - LazyVStack(pinnedViews: [.sectionHeaders]) { - balanceHeader() - .frame(height: viewModel.balanceHeaderHeight) - - if viewModel.coinJoinItem.isOn { - CoinJoinProgressView( - state: viewModel.coinJoinItem.state, - progress: viewModel.coinJoinItem.progress, - mixed: viewModel.coinJoinItem.mixed, - total: viewModel.coinJoinItem.total - ) - .padding(.horizontal, 15) - .id(viewModel.coinJoinItem.id) - } - - syncingHeader() - .frame(height: 50) + ZStack { + ScrollView { + ZStack { Color.navigationBarColor } // Top overscroll area + .frame(height: topOverscrollSize) + .padding(EdgeInsets(top: -topOverscrollSize, leading: 0, bottom: 0, trailing: 0)) - if viewModel.txItems.isEmpty { - Text(NSLocalizedString("There are no transactions to display", comment: "")) - .font(.caption) - .foregroundColor(Color.primary.opacity(0.5)) - .padding(.top, 20) - } else { - ForEach(viewModel.txItems, id: \.0.key) { key, value in - Section(header: SectionHeader(key) - .padding(.bottom, -24) - ) { - VStack(spacing: 0) { - ForEach(value, id: \.id) { txItem in - TransactionPreviewFrom(txItem: txItem) - .padding(.horizontal, 5) + LazyVStack(pinnedViews: [.sectionHeaders]) { + balanceHeader() + .frame(height: viewModel.balanceHeaderHeight) + + if viewModel.coinJoinItem.isOn { + CoinJoinProgressView( + state: viewModel.coinJoinItem.state, + progress: viewModel.coinJoinItem.progress, + mixed: viewModel.coinJoinItem.mixed, + total: viewModel.coinJoinItem.total + ) + .padding(.horizontal, 15) + .id(viewModel.coinJoinItem.id) + } + + syncingHeader() + .frame(height: 50) + + if viewModel.txItems.isEmpty { + Text(NSLocalizedString("There are no transactions to display", comment: "")) + .font(.caption) + .foregroundColor(Color.primary.opacity(0.5)) + .padding(.top, 20) + } else { + ForEach(viewModel.txItems, id: \.0.key) { key, value in + Section(header: SectionHeader(key) + .padding(.bottom, -24) + ) { + VStack(spacing: 0) { + ForEach(value, id: \.id) { txItem in + TransactionPreviewFrom(txItem: txItem) + .padding(.horizontal, 5) + } } + .padding(.bottom, 4) + .background(Color.secondaryBackground) + .clipShape(RoundedShape(corners: [.bottomLeft, .bottomRight], radii: 10)) + .padding(15) + .shadow(color: .shadow, radius: 10, x: 0, y: 5) } - .padding(.bottom, 4) - .background(Color.secondaryBackground) - .clipShape(RoundedShape(corners: [.bottomLeft, .bottomRight], radii: 10)) - .padding(15) - .shadow(color: .shadow, radius: 10, x: 0, y: 5) } } } + .padding(EdgeInsets(top: -20, leading: 0, bottom: 0, trailing: 0)) } - .padding(EdgeInsets(top: -20, leading: 0, bottom: 0, trailing: 0)) } .sheet(item: $selectedTxDataItem) { item in TransactionDetailsSheet(item: item) } + .onAppear { + viewModel.checkTimeSkew() + } } @ViewBuilder @@ -446,3 +453,15 @@ struct TransactionDetailsSheet: View { } } } + +struct BackgroundBlurView: UIViewRepresentable { + func makeUIView(context: Context) -> UIView { + let view = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) + DispatchQueue.main.async { + view.superview?.superview?.backgroundColor = .clear + } + return view + } + + func updateUIView(_ uiView: UIView, context: Context) {} +} diff --git a/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift b/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift index ecb2b535f..a49ec7960 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift @@ -18,15 +18,24 @@ import Foundation import Combine -let kBaseBalanceHeaderHeight: CGFloat = 250 +private let kBaseBalanceHeaderHeight: CGFloat = 250 +private let kTimeskewTolerance: TimeInterval = 3600 // 1 hour +@MainActor class HomeViewModel: ObservableObject { private var cancellableBag = Set() private let coinJoinService = CoinJoinService.shared + private var timeSkewDialogShown: Bool = false - @Published var txItems: Array<(DateKey, [TransactionListDataItem])> = [] - @Published var balanceHeaderHeight: CGFloat = kBaseBalanceHeaderHeight // TDOO: move back to HomeView when fully transitioned to SwiftUI - @Published var coinJoinItem = CoinJoinMenuItemModel(title: NSLocalizedString("Mixing", comment: "CoinJoin"), isOn: false, state: .notStarted, progress: 0.0, mixed: 0.0, total: 0.0) + static let shared: HomeViewModel = { + return HomeViewModel() + }() + + @Published private(set) var txItems: Array<(DateKey, [TransactionListDataItem])> = [] + @Published private(set) var balanceHeaderHeight: CGFloat = kBaseBalanceHeaderHeight // TDOO: move back to HomeView when fully transitioned to SwiftUI + @Published private(set) var coinJoinItem = CoinJoinMenuItemModel(title: NSLocalizedString("Mixing", comment: "CoinJoin"), isOn: false, state: .notStarted, progress: 0.0, mixed: 0.0, total: 0.0) + @Published var showTimeSkewAlertDialog: Bool = false + @Published private(set) var timeSkew: TimeInterval = 0 private var model: SyncModel = SyncModelImpl() var showJoinDashpay: Bool = false { @@ -35,6 +44,10 @@ class HomeViewModel: ObservableObject { } } + var coinJoinMode: CoinJoinMode { + get { coinJoinService.mode } + } + init() { model.networkStatusDidChange = { status in self.recalculateHeight() @@ -75,6 +88,18 @@ class HomeViewModel: ObservableObject { } } + func checkTimeSkew(force: Bool = false) { + Task { + let (isTimeSkewed, timeSkew) = await getDeviceTimeSkew(force: force) + self.timeSkew = timeSkew + + if isTimeSkewed && (!timeSkewDialogShown || force) { + timeSkewDialogShown = true + showTimeSkewAlertDialog = true + } + } + } + private func recalculateHeight() { var height = kBaseBalanceHeaderHeight let hasNetwork = model.networkStatus == .online @@ -89,6 +114,26 @@ class HomeViewModel: ObservableObject { self.balanceHeaderHeight = height } + + private func getDeviceTimeSkew(force: Bool) async -> (Bool, TimeInterval) { + do { + let timeSkew = try await TimeUtils.getTimeSkew(force: force) + let maxAllowedTimeSkew: TimeInterval + + if coinJoinService.mode == .none { + maxAllowedTimeSkew = kTimeskewTolerance + } else { + maxAllowedTimeSkew = timeSkew > 0 ? kMaxAllowedAheadTimeskew * 3 : kMaxAllowedBehindTimeskew * 2 + } + + coinJoinService.updateTimeSkew(timeSkew: timeSkew) + print("[SW] CoinJoin: timeskew: \(timeSkew) s") + return (abs(timeSkew) > maxAllowedTimeSkew, timeSkew) + } catch { + // Ignore errors + return (false, 0) + } + } } extension HomeViewModel { diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift index eaf18d330..e83c909d8 100644 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift @@ -208,7 +208,7 @@ extension SettingsMenuViewController { private func showCoinJoinController() { let vc: UIViewController - if CoinJoinViewModel.shared.infoShown { + if CoinJoinLevelViewModel.shared.infoShown { vc = CoinJoinLevelsViewController.controller() } else { vc = CoinJoinInfoViewController.controller() diff --git a/DashWallet/Sources/Utils/TimeUtils.swift b/DashWallet/Sources/Utils/TimeUtils.swift new file mode 100644 index 000000000..e8e8c6655 --- /dev/null +++ b/DashWallet/Sources/Utils/TimeUtils.swift @@ -0,0 +1,128 @@ +import Foundation +import Network + +class TimeUtils { + private static var lastTimeWhenSkewChecked: Int64 = 0 + private static var lastTimeSkew: TimeInterval = 0 + + private static func queryNtpTime(server: String) async -> Int64? { + let message = Data([0b00100011] + [UInt8](repeating: 0, count: 47)) + + let connection = NWConnection(to: .hostPort(host: .name(server, nil), port: 123), using: .udp) + connection.stateUpdateHandler = { _ in } + connection.start(queue: .global()) + + return await withCheckedContinuation { continuation in + connection.send(content: message, completion: .contentProcessed({ error in + if let error = error { + print("Error sending NTP request: \(error)") + continuation.resume(returning: nil) + return + } + + connection.receive(minimumIncompleteLength: 48, maximumLength: 48) { content, _, _, error in + defer { connection.cancel() } + + if let error = error { + print("Error receiving NTP response: \(error)") + continuation.resume(returning: nil) + return + } + + guard let message = content else { + continuation.resume(returning: nil) + return + } + + // Timestamp starts at byte 40 of the received packet and is four bytes, + // or two words, long. First byte is the high-order byte of the integer; + // the last byte is the low-order byte. The high word is the seconds field, + // and the low word is the fractional field. + let seconds = Int64(message[40]) << 24 | + Int64(message[41]) << 16 | + Int64(message[42]) << 8 | + Int64(message[43]) + + let result = (seconds - 2_208_988_800) * 1000 + continuation.resume(returning: result) + } + })) + } + } + + static func getTimeSkew(force: Bool = false) async throws -> TimeInterval { + let currentTimeMillis = Int64(Date().timeIntervalSince1970 * 1000) + + // Check if we can use the cached skew + if !force && (lastTimeWhenSkewChecked + 60_000 > currentTimeMillis) { + print("[SW] CoinJoin: timeskew: \(lastTimeSkew); using last value") + return lastTimeSkew + } + + var networkTime: Int64? + var timeSource = "NTP" + + // Attempt multiple NTP queries + var networkTimes: [Int64] = [] + for _ in 0..<4 { + if let time = await queryNtpTime(server: "pool.ntp.org"), time > 0 { + networkTimes.append(time) + } + } + + networkTimes.sort() + switch networkTimes.count { + case 3: + networkTime = networkTimes[2] + case 2: + networkTime = (networkTimes[0] + networkTimes[1]) / 2 + default: + break + } + + // Fallback to HTTP Date headers if NTP fails + if networkTime == nil { + let urls = ["https://www.dash.org/", "https://insight.dash.org/insight"] + for url in urls { + do { + let (_, response) = try await URLSession.shared.data(from: URL(string: url)!) + if let httpResponse = response as? HTTPURLResponse, + let dateString = httpResponse.allHeaderFields["Date"] as? String, + let networkDate = DateFormatter.rfc1123.date(from: dateString) { + networkTime = Int64(networkDate.timeIntervalSince1970 * 1000) + timeSource = url + break + } + } catch { + // Log the error and try the next URL + print("[SW] CoinJoin: Error fetching HTTP date from \(url): \(error)") + } + } + + print("[SW] CoinJoin: timeskew: network time is \(String(describing: networkTime))") + guard networkTime != nil else { + throw NSError(domain: "TimeUtils", code: 1, userInfo: [NSLocalizedDescriptionKey: "Failed to get network time"]) + } + } + + // Calculate the new time skew + let newSkew = TimeInterval((currentTimeMillis - networkTime!) / 1000) + + // Update the cache + lastTimeWhenSkewChecked = currentTimeMillis + lastTimeSkew = newSkew + + print("[SW] CoinJoin: timeskew: \(currentTimeMillis)-\(networkTime!) = \(newSkew) s; source: \(timeSource)") + return newSkew + } +} + +extension DateFormatter { + static let rfc1123: DateFormatter = { + let formatter = DateFormatter() + formatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z" + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(abbreviation: "GMT") + return formatter + }() +} From 02d12ab3e57ba282dec4d066cc47f771f134f418 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 17:07:53 +0700 Subject: [PATCH 2/8] fix: timeskew dialog & state restoring --- .../Sources/Models/CoinJoin/CoinJoinService.swift | 15 ++++++++++++--- .../CoinJoin/CoinJoinLevelsViewController.swift | 5 +++++ .../CoinJoin/CoinJoinLevelsViewModel.swift | 4 ++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift index b7c355f91..d0fdf0b12 100644 --- a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift +++ b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift @@ -49,6 +49,7 @@ enum MixingStatus: Int { } } +@objc enum CoinJoinMode: Int { case none case intermediate @@ -65,6 +66,14 @@ private let kCoinJoinTestnetMode = "coinJoinModeTestnetKey" let kMaxAllowedAheadTimeskew: TimeInterval = 5 let kMaxAllowedBehindTimeskew: TimeInterval = 20 + +@objc +public class CoinJoinServiceWrapper: NSObject { + @objc class func mode() -> CoinJoinMode { + return CoinJoinService.shared.mode + } +} + class CoinJoinService: NSObject { static let shared: CoinJoinService = { return CoinJoinService() @@ -88,8 +97,7 @@ class CoinJoinService: NSObject { private var savedMode: Int { get { - let key = chainModeKey - return UserDefaults.standard.integer(forKey: key) + return UserDefaults.standard.integer(forKey: chainModeKey) } set(value) { UserDefaults.standard.set(value, forKey: chainModeKey) } } @@ -258,7 +266,7 @@ class CoinJoinService: NSObject { self.mode = mode self.timeSkew = timeSkew - if mode == .none || !isInsideTimeSkewBounds(timeSkew: timeSkew) /*|| blockchainState.replaying*/ { // TODO + if mode == .none || !isInsideTimeSkewBounds(timeSkew: timeSkew) || DWGlobalOptions.sharedInstance().isResyncingWallet { updateMixingState(state: .notStarted) } else { configureMixing() @@ -326,6 +334,7 @@ class CoinJoinService: NSObject { self.stopMixing() self.coinJoinManager = nil self.hasAnonymizableBalance = false + let savedMode = self.savedMode self.mode = .none let mode = CoinJoinMode(rawValue: savedMode) ?? .none Task { diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift index 7b6723065..ae8df44b1 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift @@ -42,6 +42,11 @@ class CoinJoinLevelsViewController: UIViewController { configureHierarchy() configureObservers() } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + viewModel.resetSelectedMode() + } @IBAction func continueButtonAction() { diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift index e08fd8a74..5e2b4feba 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift @@ -60,6 +60,10 @@ class CoinJoinLevelViewModel: ObservableObject { } .store(in: &cancellableBag) } + + func resetSelectedMode() { + self.selectedMode = coinJoinService.mode + } func startMixing() { if self.selectedMode != .none { From b79658b694441adc669613fb99f7c07ac5e4a546 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 19:24:24 +0700 Subject: [PATCH 3/8] fix: set from the payment processor to account for CJ mode --- DashSyncCurrentCommit | 2 +- .../Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DashSyncCurrentCommit b/DashSyncCurrentCommit index ed9612b84..64bf52c50 100644 --- a/DashSyncCurrentCommit +++ b/DashSyncCurrentCommit @@ -1 +1 @@ -b865fe4369d35ec7a123171c4ce31a759161c68b +03698d4a7b17cda10bfbbd104fd7557fddf13b76 diff --git a/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m b/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m index b7e2ca72b..5e9aaacfc 100644 --- a/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m +++ b/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m @@ -24,6 +24,7 @@ #import "DWPaymentInput.h" #import "DWPaymentInputBuilder.h" #import "DWPaymentOutput+Private.h" +#import "dashwallet-Swift.h" #if DASHPAY #import "DWDPUserObject.h" @@ -323,6 +324,7 @@ - (void)confirmProtocolRequest:(DSPaymentProtocolRequest *)protocolRequest { const BOOL addressIsFromPasteboard = self.paymentInput.source == DWPaymentInputSource_Pasteboard; self.didSendRequestDelegateNotified = NO; + BOOL mixedOnly = [CoinJoinServiceWrapper mode] != CoinJoinModeNone; [chainManager.transactionManager confirmProtocolRequest:protocolRequest @@ -332,6 +334,7 @@ - (void)confirmProtocolRequest:(DSPaymentProtocolRequest *)protocolRequest { acceptReusingAddress:NO addressIsFromPasteboard:addressIsFromPasteboard acceptUncertifiedPayee:NO + mixedOnly:mixedOnly requiresSpendingAuthenticationPrompt:YES keepAuthenticatedIfErrorAfterAuthentication:NO requestingAdditionalInfo:^(DSRequestingAdditionalInfo additionalInfoRequestType) { From efdccef9457f02137d56dffdc7fff0802168a5e8 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 19:26:53 +0700 Subject: [PATCH 4/8] feat: info dialog --- .../CoinJoinLevelsViewController.swift | 12 +++++ .../CoinJoin/CoinJoinLevelsViewModel.swift | 11 ++++ .../UI/SwiftUI Components/ModalDialog.swift | 54 ++++++++++++++++++- 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift index ae8df44b1..905cc4e2d 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewController.swift @@ -108,6 +108,18 @@ extension CoinJoinLevelsViewController { if viewModel.selectedMode == .none || viewModel.mixingState == .notStarted { Task { + if !viewModel.keepOpenInfoShown { + await showModalDialog( + style: .regular, + icon: .system("info"), + heading: NSLocalizedString("Mixing is only possible with the app open", comment: "CoinJoin"), + textBlock1: NSLocalizedString("When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app.", comment: "CoinJoin"), + positiveButtonText: NSLocalizedString("OK", comment: "") + ) + + viewModel.keepOpenInfoShown = true + } + if await viewModel.isTimeSkewedForCoinJoin() { let settingsURL = URL(string: UIApplication.openSettingsURLString) let hasSettings = settingsURL != nil && UIApplication.shared.canOpenURL(settingsURL!) diff --git a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift index 5e2b4feba..26fab14c5 100644 --- a/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift +++ b/DashWallet/Sources/UI/DashPay/CoinJoin/CoinJoinLevelsViewModel.swift @@ -27,6 +27,8 @@ public class CoinJoinObjcWrapper: NSObject { } private let kInfoShown = "coinJoinInfoShownKey" +private let kKeepOpenShown = "coinJoinKeepOpenShownKey" + class CoinJoinLevelViewModel: ObservableObject { static let shared = CoinJoinLevelViewModel() @@ -45,6 +47,15 @@ class CoinJoinLevelViewModel: ObservableObject { } } + private var _keepOpenInfoShown: Bool? = nil + var keepOpenInfoShown: Bool { + get { _keepOpenInfoShown ?? UserDefaults.standard.bool(forKey: kKeepOpenShown) } + set(value) { + _keepOpenInfoShown = value + UserDefaults.standard.set(value, forKey: kKeepOpenShown) + } + } + init() { coinJoinService.$mode .receive(on: DispatchQueue.main) diff --git a/DashWallet/Sources/UI/SwiftUI Components/ModalDialog.swift b/DashWallet/Sources/UI/SwiftUI Components/ModalDialog.swift index f00c91ce4..7f2e443b4 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/ModalDialog.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/ModalDialog.swift @@ -147,8 +147,7 @@ extension UIViewController { negativeButtonAction: (() -> Void)? = nil, buttonsOrientation: Axis = .vertical, buttonsStyle: ButtonsGroup.Style = .regular - ) { - + ) { let dialog = ModalDialog( style: style, icon: icon, @@ -179,4 +178,55 @@ extension UIViewController { present(hostingController, animated: true, completion: nil) } + + @MainActor + @discardableResult + func showModalDialog( + style: ModalDialog.Style = .regular, + icon: IconName? = nil, + heading: String, + textBlock1: String? = nil, + textBlock2: String? = nil, + smallButtonText: String? = nil, + smallButtonIcon: IconName? = nil, + smallButtonAction: (() -> Void)? = nil, + positiveButtonText: String, + negativeButtonText: String? = nil, + buttonsOrientation: Axis = .vertical, + buttonsStyle: ButtonsGroup.Style = .regular + ) async -> Bool { + await withCheckedContinuation { continuation in + let dialog = ModalDialog( + style: style, + icon: icon, + heading: heading, + textBlock1: textBlock1, + textBlock2: textBlock2, + smallButtonText: smallButtonText, + smallButtonIcon: smallButtonIcon, + smallButtonAction: smallButtonAction, + positiveButtonText: positiveButtonText, + positiveButtonAction: { + self.dismiss(animated: true) { + continuation.resume(returning: true) + } + }, + negativeButtonText: negativeButtonText, + negativeButtonAction: { + self.dismiss(animated: true) { + continuation.resume(returning: false) + } + }, + buttonsOrientation: buttonsOrientation, + buttonsStyle: buttonsStyle + ) + + let hostingController = UIHostingController(rootView: dialog) + hostingController.modalPresentationStyle = .overFullScreen + hostingController.modalTransitionStyle = .crossDissolve + hostingController.view.backgroundColor = UIColor.black.withAlphaComponent(0.7) + + present(hostingController, animated: true, completion: nil) + } + } } From c2b9ae7d06653a6614716721411f01fd7e541825 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 21:10:28 +0700 Subject: [PATCH 5/8] chore: enable cj in wallet & fix fresh install crash --- .../Sources/Models/CoinJoin/CoinJoinService.swift | 9 ++++++--- .../Sources/UI/Menu/Settings/SettingsViewModel.swift | 12 ++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift index d0fdf0b12..0c591e287 100644 --- a/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift +++ b/DashWallet/Sources/Models/CoinJoin/CoinJoinService.swift @@ -336,9 +336,12 @@ class CoinJoinService: NSObject { self.hasAnonymizableBalance = false let savedMode = self.savedMode self.mode = .none - let mode = CoinJoinMode(rawValue: savedMode) ?? .none - Task { - await updateMode(mode: mode) + let restoredMode = CoinJoinMode(rawValue: savedMode) ?? .none + + if restoredMode != .none { + Task { + await updateMode(mode: restoredMode) + } } } diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift index 22ba9b187..978078026 100644 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift @@ -108,11 +108,7 @@ class SettingsViewModel: ObservableObject { action: { [weak self] in self?.navigationDestination = .about } - ) - ] - - #if DASHPAY - items.append(contentsOf: [ + ), CoinJoinMenuItemModel( title: NSLocalizedString("CoinJoin", comment: "CoinJoin"), isOn: coinJoinService.mode != .none, @@ -123,7 +119,11 @@ class SettingsViewModel: ObservableObject { action: { [weak self] in self?.navigationDestination = .coinjoin } - ), + ) + ] + + #if DASHPAY + items.append(contentsOf: [ MenuItemModel( title: "Enable Voting", showToggle: true, From 62298f87894adb5559f9fdd73af696c2df978212 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 21:10:53 +0700 Subject: [PATCH 6/8] fix: timeutil --- DashWallet/Sources/Utils/TimeUtils.swift | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/DashWallet/Sources/Utils/TimeUtils.swift b/DashWallet/Sources/Utils/TimeUtils.swift index e8e8c6655..fddaa0f2d 100644 --- a/DashWallet/Sources/Utils/TimeUtils.swift +++ b/DashWallet/Sources/Utils/TimeUtils.swift @@ -69,15 +69,16 @@ class TimeUtils { networkTimes.append(time) } } - - networkTimes.sort() - switch networkTimes.count { - case 3: - networkTime = networkTimes[2] - case 2: - networkTime = (networkTimes[0] + networkTimes[1]) / 2 - default: - break + + if networkTimes.count > 1 { + let sortedTimes = networkTimes.sorted() + let middleIndex = sortedTimes.count / 2 + + if sortedTimes.count % 2 == 0 { + networkTime = (sortedTimes[middleIndex - 1] + sortedTimes[middleIndex]) / 2 + } else { + networkTime = sortedTimes[middleIndex] + } } // Fallback to HTTP Date headers if NTP fails From b81517593e7f9febee2614b00a91a525352e8b0f Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Thu, 3 Oct 2024 21:11:25 +0700 Subject: [PATCH 7/8] chore: strings --- DashWallet/ar.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/bg.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ca.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/cs.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/da.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/de.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/el.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/en.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/eo.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/es.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/et.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/fa.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/fi.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/fil.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/fr.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/hr.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/hu.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/id.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/it.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ja.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ko.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/mk.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ms.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/nb.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/nl.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/pl.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/pt.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ro.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/ru.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sk.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sl.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sl_SI.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sq.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sr.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/sv.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/th.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/tr.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/uk.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/vi.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/zh-Hans.lproj/Localizable.strings | 63 +++++++++++++++++++ .../zh-Hant-TW.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/zh.lproj/Localizable.strings | 63 +++++++++++++++++++ DashWallet/zh_TW.lproj/Localizable.strings | 63 +++++++++++++++++++ 43 files changed, 2709 insertions(+) diff --git a/DashWallet/ar.lproj/Localizable.strings b/DashWallet/ar.lproj/Localizable.strings index 57ecb021c..7687f416a 100644 --- a/DashWallet/ar.lproj/Localizable.strings +++ b/DashWallet/ar.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "الكل"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "كن جزءًا من Dash Masternode مع CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "افحص اتصالك"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "تم قطع الاتصال"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "احصل على مكافآت من الودائع في Dash Masternodes بأقل من 0.5 داش."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "رصيد غير كاف"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "يعمل بحث التاجر بشكل أفضل مع تشغيل خدمات الموقع."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "المزيد"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "السلسلة قيد المزامنة ..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "عندما يتم تأكيد المعاملة ، ستكون المحفظة الأخرى عديمة القيمة ويجب عدم إعادة استخدامها لأسباب تتعلق بالسلامة."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "أين تنفق؟"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "تم استلام الإيداع الخاص بك إلى CrowdNode."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/bg.lproj/Localizable.strings b/DashWallet/bg.lproj/Localizable.strings index 80b611eb3..5a4ac6a5c 100644 --- a/DashWallet/bg.lproj/Localizable.strings +++ b/DashWallet/bg.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Всички"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Проверете връзката"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Недостатъчно средства"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Още"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Неизползван досега"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Включи парола за устройството"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Когато транзакцията бъде потвърдена, другият портфейл ще бъде безполезен и не бива да се използва повторно от съображения за безопасност."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/ca.lproj/Localizable.strings b/DashWallet/ca.lproj/Localizable.strings index 436b55ce3..d2748a850 100644 --- a/DashWallet/ca.lproj/Localizable.strings +++ b/DashWallet/ca.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/cs.lproj/Localizable.strings b/DashWallet/cs.lproj/Localizable.strings index 1640ad934..8a15b231a 100644 --- a/DashWallet/cs.lproj/Localizable.strings +++ b/DashWallet/cs.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Souhlasím"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Vše"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Od %1$ld do %2$ld znaků"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Zkontrolujte vaše připojení"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Odpojeno"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Zobrazované jméno"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Chyba při aktualizaci"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Rozšířené veřejné klíče"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Nedostatečný zůstatek"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Nedostatečný zůstatek"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Vyhledávání obchodníků funguje lépe se zapnutým určením polohy."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Více"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Ještě nebyla použita"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Zapněte bezpečnostní kód zařízení"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Po potvrzení transakce bude druhá peněženka bezcenná, z bezpečnostních důvodů by neměla být znovu používána."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Kde nakupovat"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/da.lproj/Localizable.strings b/DashWallet/da.lproj/Localizable.strings index 6ee2e0c06..61b75d818 100644 --- a/DashWallet/da.lproj/Localizable.strings +++ b/DashWallet/da.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index 7f1b14932..f38937124 100644 --- a/DashWallet/de.lproj/Localizable.strings +++ b/DashWallet/de.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Zustimmen"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Alles"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Werde Teil eines Dash Masternodes mit CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Zwischen %1$ld und %2$ld Zeichen"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Wechsel zu Standard"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Verbindung überprüfen"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Verbindung getrennt"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Name anzeigen"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Fehler beim Aktualisieren"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Beispielpost"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Alle Transaktionen exportieren"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Erweiterter Public Key"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "von deinem Coinbase Konto"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Erhalte Erträge für Einzahlungen in Dash Masternodes bereits ab 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Guthaben nicht ausreichend"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Wallet Guthaben nicht ausreichend"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Aufsteigend"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Verfasse einen Post mit dem obigen Text (oder etwas ähnliches) auf einer bekannten Social Media oder Messenger Plattform, damit du bestätigen kannst, dass du der Originalbesitzer der Anfrage für den Nutzernamen bist. Füge den Link dann in den unten stehenden Beitrag ein."; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Die Händlersuche funktioniert besser, wenn die Standortdienste aktiviert sind."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Das Mixen deiner Dash macht deine Transaktionen anonymer."; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Mehr"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Nicht festgelegt"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Noch nicht verwendet"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash ist kostenlos und kann von einem Faucet erhalten werden.\nKopiere eine Adresse von deiner Empfangsanzeige in deiner Wallet und klicke auf den Button unter deinem Dash Guthaben."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Die Chain synchronisiert..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Gerätecode aktivieren"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Das Anschalten dieses Features wird deinen Akkuverbrauch erhöhen."; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Sobald die Transaktion bestätigt ist, ist die andere Wallet wertlos und sollte aus Sicherheitsgründen nicht wieder verwendet werden."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Wo bezahlen"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Deine Einzahlung auf CrowdNode wurde erhalten."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Deine E-Mail wird nicht in der DashPay Wallet oder auf anderen Servern gespeichert. Sie wird lediglich dazu genutzt um die Gravatar Kontodetails abzurufen. Danach wird die E-Mail entfernt."; diff --git a/DashWallet/el.lproj/Localizable.strings b/DashWallet/el.lproj/Localizable.strings index 60911da39..6b6d9542a 100644 --- a/DashWallet/el.lproj/Localizable.strings +++ b/DashWallet/el.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Συμφωνώ"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Όλα"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Γίνετε μέλος ενός Dash Masternode με το CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Ενδιάμεσα σε %1$ld και %2$ld χαρακτήρες"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Αλλαγή σε Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Ελέγξτε την σύνδεση σας"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Αποσυνδεδεμένο"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Όνομα προβολής"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Σφάλμα Αναβάθμισης"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Παράδειγμα δημοσίευσης"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Εξαγωγή όλων των συναλλαγών"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Εκτεταμένα Δημόσια Κλειδιά"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "από τον λογαριασμό σας στην Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Κερδίστε ανταμοιβές από καταθέσεις σε Dash Masternodes με μόλις 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Ανεπαρκή χρήματα"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Ανεπαρκές υπόλοιπο πορτοφολιού"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Χαμηλά σε υψηλά"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Κάντε μια ανάρτηση με το παραπάνω κείμενο (ή κάτι παρόμοιο) σε ένα γνωστό μέσο κοινωνικής δικτύωσης ή σε μια πλατφόρμα ανταλλαγής μηνυμάτων για να επαληθεύσετε ότι είστε ο αρχικός κάτοχος του ζητούμενου ονόματος χρήστη και επικολλήστε έναν σύνδεσμο στην παρακάτω ανάρτηση."; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Η εμπορική αναζήτηση λειτουργεί καλύτερα με ενεργοποιημένες τις Υπηρεσίες τοποθεσίας."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Η μίξη των Dash νομισμάτων σας θα καταστήσει τις συναλλαγές σας πιο ιδιωτικές."; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Περισσότερα"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Δεν έχει καθοριστεί"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Δεν έχουν χρησιμοποιηθεί ακόμη"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Τα Test Dash είναι δωρεάν και μπορεί να αποκτηθούν από αυτό που ονομάζεται faucet.\nΑντιγράψτε μια διεύθυνση από την οθόνη Λήψης του πορτοφολιού σας και κάντε κλικ στο κουμπί παρακάτω για να λάβετε το Dash σας."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Το blockchain συγχρονίζεται..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Ενεργοποιήστε τον κωδικό πρόσβασης της συσκευής"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Ενεργοποιώντας αυτήν τη λειτουργία θα οδηγήσει σε αυξημένη χρήση της μπαταρίας."; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Όταν επιβεβαιωθεί η συναλλαγή, το άλλο πορτοφόλι θα είναι άχρηστο και δεν θα πρέπει να επαναχρησιμοποιηθεί για λόγους ασφαλείας."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Πού να ξοδέψετε"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Η κατάθεσή σας στο CrowdNode ελήφθη."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Το email σας δεν αποθηκεύεται στο πορτοφόλι DashPay ούτε σε κανέναν διακομιστή. Χρησιμοποιείται μία φορά για να λάβετε τα στοιχεία του λογαριασμού σας Gravatar και στη συνέχεια απορρίπτεται."; diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index 60a09ec9c..e0885a59a 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/eo.lproj/Localizable.strings b/DashWallet/eo.lproj/Localizable.strings index 978887da1..83b84090e 100644 --- a/DashWallet/eo.lproj/Localizable.strings +++ b/DashWallet/eo.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index da5b17389..79f0c25e7 100644 --- a/DashWallet/es.lproj/Localizable.strings +++ b/DashWallet/es.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Aceptar"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Todos"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Forma parte de un Masternode de Dash con CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Entre %1$ld y %2$ld caracteres"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Cambiar a Intermedio"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Verifique tu conección"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Desconectado"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Nombre para mostrar"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error al actualizar"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Publicación de ejemplo"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Exportar todas las transacciones"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Llaves públicas extendidas"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "desde tu cuenta de Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Obtén recompensas de depósitos en Masternodes de Dash con tan solo 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Fondos insuficientes"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Saldo de billetera insuficiente"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Bajo a alto"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Haz una publicación con el texto de arriba (o algo similar) en una red social o plataforma de mensajería conocida para verificar que eres el propietario original del nombre de usuario solicitado y pega un enlace a la publicación a continuación."; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "La búsqueda de comerciantes funciona mejor con los servicios de ubicación activados."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mezclar tus monedas Dash hará que tus transacciones sean más privadas"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Más"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "No determinado"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "No utilizada aún"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Los Dash de prueba son gratuitos y se pueden obtener desde lo que se llama faucet.\nCopia una dirección de la pantalla Recibir de tu billetera y haz clic en el botón a continuación para obtener su Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "La cadena esta sincronizando..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Habilita la clave de acceso de tu dispositivo"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Activar esta función resultará en un mayor uso de la batería"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Al confirmarse la transacción, la billetera de papel quedará inutilizada y no deberá ser reutilizada por razones de seguridad."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Donde gastar?"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Tu depósito en CrowdNode ha sido recibido."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Tu correo electrónico no se almacena en la billetera de DashPay ni en ningún servidor. Se usa una vez para obtener los detalles de tu cuenta de Gravatar y luego se descarta."; diff --git a/DashWallet/et.lproj/Localizable.strings b/DashWallet/et.lproj/Localizable.strings index ff983a08a..693d3d878 100644 --- a/DashWallet/et.lproj/Localizable.strings +++ b/DashWallet/et.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index 0af94c221..f10d5ece3 100644 --- a/DashWallet/fa.lproj/Localizable.strings +++ b/DashWallet/fa.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "همه"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "از طریق کراودنود یکی از مسترنودهای دش بشوید."; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "لطفا اتصال‌ به اینترنت را بررسی کنید"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "عدم اتصال به شبکه"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "خروجی گرفتن از همه تراکنش‌ها"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "با سپرده‌گذاری در مسترنودهای دش، حتی به میزان ۰.۵ دش، پاداش دریافت کنید. "; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "موجودی ناکافی"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "پس از روشن کردن موقعیت مکانی دستگاه، جستجوی فروشندگان بهتر عمل می‌کند. "; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "بیشتر"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "بلاکچین در حال به‌روزرسانی..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "وقتی که تراکنش تائید شد، کیف پول کاغذی مذکور دیگر بی‌ارزش خواهد شد و به دلایل امنیتی، بهتر است دیگر از آن استفاده نکنید. "; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "کجا خرج کنیم؟ "; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "واریز شما به کراودنود صورت گرفت. "; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/fi.lproj/Localizable.strings b/DashWallet/fi.lproj/Localizable.strings index b32b8f79e..92727b196 100644 --- a/DashWallet/fi.lproj/Localizable.strings +++ b/DashWallet/fi.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index c2190138b..39ea46a5c 100644 --- a/DashWallet/fil.lproj/Localizable.strings +++ b/DashWallet/fil.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Sumang-ayon"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Lahat"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Maging bahagi ng isang Dash Masternode na may CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Sa pagitan ng %1$ld at %2$ld karakter"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Baguhin sa Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Suriin ang koneksyon"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Idiskonekta"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "I-display ang pangalan"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Kamalian sa Pag-upgrade"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Halimbawang post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "I-export ang lahat ng transaksyon"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Pinalawak na Public Key"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "mula sa iyong Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Makakuha ng mga reward mula sa mga deposito sa Dash Masternodes na may kasing liit na 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Hindi sapat na pondo"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Hindi sapat na Balanse sa Wallet"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Mababa hanggang mataas"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Gumawa ng post gamit ang text sa itaas (o katulad nito) sa isang kilalang social media o messaging platform para i-verify na ikaw ang orihinal na may-ari ng hiniling na username at mag-paste ng link sa post sa ibaba"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Mas mahusay na gumagana ang paghahanap ng merchant kapag naka-on ang Mga Serbisyo sa Lokasyon."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Ang paghahalo ng iyong mga Dash coins ay gagawing mas pribado ang iyong mga transaksyon"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Marami"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Hindi determinado"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Hindi pa ito nagamit"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Ang Test Dash ay libre at maaaring makuha mula sa tinatawag na gripo.\nKopyahin ang isang address mula sa Receive screen ng iyong wallet at i-click ang button sa ibaba upang makuha ang iyong Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Nagsi-sync ang chain…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "I-turn on ang device passcode"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Ang pag-on sa feature na ito ay magreresulta ng mas mataas na paggamit ng baterya"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Kapag ang transaksyon ay nakumpirma, ang ibang wallet ay mawawalan ng bisa at hindi na pwedeng gamitin ulit para sa panseguridad. "; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Saan Gagastos"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Natanggap na ang iyong deposito sa CrowdNode."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Ang iyong Email ay hindi nakaimbak sa DashPay wallet o sa anumang mga server. Ginagamit ito nang isang beses upang makuha ang mga detalye ng iyong Gravatar account at pagkatapos ay itapon."; diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index 212228ee2..4a159b44c 100644 --- a/DashWallet/fr.lproj/Localizable.strings +++ b/DashWallet/fr.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Accepter"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Tous"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Participez à un masternode Dash avec CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Entre %1$ld et %2$ld caractères"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Basculer sur Intermédiaire"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Vérifier votre connexion"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Déconnecté"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Afficher le nom"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Erreur pendant la mise à jour"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Exemple de message"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Exporter toutes les transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Clés publiques étendues"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "depuis votre compte Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Percevez des récompenses grâce à vos transferts sur des masternodes Dash, dès la petite somme de 0,5 dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Fonds insuffisants"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Solde de portefeuille insuffisant"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "De bas à haut"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Publiez un message avec le texte ci-dessus (ou quelque chose de similaire) sur un réseau social bien connu ou une plateforme de messagerie, pour vérifier que vous êtes le propriétaire d'origine du nom d'utilisateur demandé, puis copiez-collez ci-dessous un lien vers le message"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "La recherche de vendeurs marche mieux lorsque les services de localisation sont activés."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mélanger vos dashs rendra vos transactions plus confidentielles"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Plus"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Indéterminé"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Pas encore utilisé"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Les dashs de test sont gratuits et peuvent être obtenus à ce qu'on appelle un robinet.\nCopiez une adresse depuis l'onglet Recevoir de votre portefeuille, puis cliquez sur le bouton ci-dessous pour obtenir vos dashs de test."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Synchronisation de la chaîne..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Activer le code d'accès de l'appareil"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Activer cette fonction entraînera une plus grande utilisation de la batterie."; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Quand la transaction sera confirmée, l'autre portefeuille ne contiendra plus de fonds, et il ne devra pas être réutilisé pour des raisons de sécurité."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Où dépenser"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Votre transfert vers CrowdNode a été reçu."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Votre adresse e-mail n'est pas stockée dans le portefeuille DashPay, ni sur aucun serveur. Elle est utilisée une seule fois pour obtenir les détails de votre compte Gravatar, puis elle est oubliée."; diff --git a/DashWallet/hr.lproj/Localizable.strings b/DashWallet/hr.lproj/Localizable.strings index 9213e5615..6c0eed1fc 100644 --- a/DashWallet/hr.lproj/Localizable.strings +++ b/DashWallet/hr.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/hu.lproj/Localizable.strings b/DashWallet/hu.lproj/Localizable.strings index e9dee52ee..7575f8387 100644 --- a/DashWallet/hu.lproj/Localizable.strings +++ b/DashWallet/hu.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/id.lproj/Localizable.strings b/DashWallet/id.lproj/Localizable.strings index e8019a0f8..dfc16911e 100644 --- a/DashWallet/id.lproj/Localizable.strings +++ b/DashWallet/id.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Setuju"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Semua"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Menjadi bagian dari Masternode Dash dengan CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Antara %1$ld dan %2$ld karakter"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Ubah ke Menengah"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Periksa koneksi anda"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Terputus"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Nama Tampilan"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Kesalahan Mengupgrade"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Contoh postingan"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Ekspor semua transaksi"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Kunci Publik Diperpanjang"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "dari akun Coinbase Anda"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Dapatkan hadiah dari deposit di Dash Masternodes hanya dengan 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Dana tidak mencukupi"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Saldo Wallet tidak mencukupi"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Rendah ke tinggi"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Buat postingan dengan teks di atas (atau yang serupa) di media sosial atau platform perpesanan terkenal untuk memverifikasi bahwa Anda adalah pemilik asli nama pengguna yang diminta dan tempelkan link ke postingan di bawah"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Pencarian pedagang bekerja lebih baik dengan Layanan Lokasi diaktifkan."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mencampur koin Dash Anda akan membuat transaksi Anda lebih pribadi"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Lebih"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Tidak ditentukan"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Belum digunakan"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash gratis dan dapat diperoleh dari apa yang disebut faucet.\nSalin alamat dari layar Terima dompet Anda dan klik tombol di bawah untuk mendapatkan Dash Anda."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Rantai sedang menyinkronkan…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Aktifkan kode sandi perangkat"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Mengaktifkan fitur ini akan menghasilkan penggunaan baterai yang lebih tinggi"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Ketika transaksi dikonfirmasi, dompet lainnya tidak akan berharga dan tidak boleh digunakan kembali untuk alasan keamanan."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Dimana harus Belanja"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Setoran Anda ke CrowdNode diterima."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Email Anda tidak disimpan di dompet DashPay atau di server mana pun. Ini digunakan sekali untuk mendapatkan detail akun Gravatar Anda dan kemudian dibuang."; diff --git a/DashWallet/it.lproj/Localizable.strings b/DashWallet/it.lproj/Localizable.strings index 73f431cbc..ba4834dc9 100644 --- a/DashWallet/it.lproj/Localizable.strings +++ b/DashWallet/it.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Acconsento"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Tutte"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Entra a far parte di un Dash Masternode con CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Tra %1$ld e %2$ld caratteri\n "; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Passare ad Intermedio"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Controlla la connessione"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnesso"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Nome da visualizzare"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Errore durante l'aggiornamento"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Messaggio di esempio"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Esporta tutte le transazioni"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Chiavi pubbliche estese"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "dal tuo conto Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ottieni ricompense dai depositi in Dash Masternodes con un minimo di 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Fondi insufficenti"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Saldo del portafoglio insufficiente"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Dal basso all'alto"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Pubblica un post con il testo sopra (o qualcosa di simile) su un social media o una piattaforma di messaggistica ben nota per verificare di essere il proprietario originale del nome utente richiesto e incolla un collegamento al post qui sotto"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "La ricerca commerciante funziona meglio con i servizi di localizzazione attivati."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixare i tuoi Dash renderà le tue transazioni più private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Di Più"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Non determinato"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Non ancora usato"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "I Dash di Test sono gratuiti e possono essere ottenuti da quello che viene chiamato faucet.\nCopia un indirizzo dalla schermata Ricevi del tuo wallet e fai clic sul pulsante qui sotto per ottenere i tuoi Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "La catena si sta sincronizzando..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Attiva codice d'accesso dispositivo"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "L'attivazione di questa funzione comporterà un maggiore utilizzo della batteria"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "A transazione confermata, il portafoglio di origine sarà privo di valore e non dovrebbe essere riutilizzato per motivi di sicurezza."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Dove spendere"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Il tuo deposito a CrowdNode è stato ricevuto."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "La tua Email non è memorizzata nel Wallet DashPay né su alcun server. Viene utilizzato una volta per ottenere i dettagli del tuo account Gravatar e quindi scartato."; diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index a57bfb7d1..7e0582a28 100644 --- a/DashWallet/ja.lproj/Localizable.strings +++ b/DashWallet/ja.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "同意する"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "全て"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "CrowdNodeでDashのマスターノードに加入します"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "%1$ld~%2$ld文字"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "通常のものに変更する"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "接続を確認してください"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "切断されました"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "表示名"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "アップグレード中のエラー"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "投稿例"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "全てのトランザクションをエクスポートする"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "拡張されたパブリックキー"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "Coinbaseアカウントから"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "0.5DashからDashのマスターノードに入金して報酬を得ることができます。"; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "資金不足"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "ウォレットの残高不足"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "低から高"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "よく知られたソーシャルメディアやメッセージングプラットフォームに、上記のテキスト(または類似のもの)を投稿し、お客様が申請されたユーザー名の元々の所有者であることを認証し、下記の投稿へのリンクを貼り付けます"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "位置情報サービスをオンにすると、加盟店検索がより機能します。"; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Dashコインをミキシングすると、よりプライベートな取引ができるようになります"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "追加"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "未定"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "まだ使用されていません"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "テストDashは無料で、いわゆるフォーセットから入手できます。\nお客様のウォレットの受け取り画面からアドレスをコピーし、下のボタンをクリックするとDashを入手できます。"; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "チェーンを同期中"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "端末のパスコードを有効に"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "この機能をオンにすると、バッテリーの消費量が増えます"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "この取引が確定したら、他のウォレットは無価値となり、安全上の理由から再び使用しないようにしてください。"; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "使用できる場所"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "お客様のCrowdNodeへの入金が完了しました。"; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "お客様のメールアドレスは、DashPayウォレットにもサーバーにも保存されません。Gravatarアカウントの詳細を取得するために一度だけ使用され、その後は破棄されます。"; diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index 0bf557edf..07fcd12b3 100644 --- a/DashWallet/ko.lproj/Localizable.strings +++ b/DashWallet/ko.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "동의합니다"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "모두"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "크라우드노드를 통해 대시 마스터노드의 일원이 되세요"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "%1$ld 와 %2$ld 글자 사이"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "중급으로 변경하기"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "연결을 확인하세요"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "연결 해제"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "이름 표시"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "업그레이드 오류"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "예시 포스트"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "모든 거래 내보내기"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "확장된 공개 키"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "당신의 코인베이스 계좌로부터"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "대시 마스터노드에 최소 보증금 0.5대시로 리워드를 받아보세요."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "잔액 부족"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "지갑 잔고 부족"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "낮음부터 높음"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "위의 텍스트를 사용해 잘 알려진 소셜 미디어나 메시징 플랫폼 상에 포스트(혹은 그와 유사한 무언가)를 작성하고, 아래에 해당 포스트의 링크를 붙여넣음으로써 당신이 요청된 사용자 이름의 원래 소유주임을 증명하세요"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "상점 검색은 위치 서비스를 켰을 때 보다 잘 작동합니다."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "대시 코인을 믹싱하면 거래 내역이 보다 보호됩니다."; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "더 알아보기"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "결정되지 않음"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "아직 사용되지 않음"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "테스트 대시는 무료이며 파셋이라 불리는 곳으로부터 얻을 수 있습니다\n지갑의 받기 화면에서 주소를 복사하고 아래 버튼을 클릭하여 대시를 받으세요."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "체인 동기화 중..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "비밀번호 켜기"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "이 기능을 켜면 더 많은 배터리를 사용하게 됩니다."; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "거래가 확인되면 다른 지갑은 가치를 가지지 않게 되며, 보안 관련 사유를 위해서는 이를 다시 사용해서는 안됩니다."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "사용 장소"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "크라우드노드 입금이 완료되었습니다."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "당신의 이메일은 대시페이 지갑 혹은 다른 어떤 서버에도 저장되지 ㅇ낳습니다. 이는 Gravatar 계정 상세 정보에 한 번 사용될 뿐이며, 그 이후로는 폐기됩니다."; diff --git a/DashWallet/mk.lproj/Localizable.strings b/DashWallet/mk.lproj/Localizable.strings index 2ecf9aeee..ff2eb4e00 100644 --- a/DashWallet/mk.lproj/Localizable.strings +++ b/DashWallet/mk.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/ms.lproj/Localizable.strings b/DashWallet/ms.lproj/Localizable.strings index 8f3bff69c..1fa4f84f4 100644 --- a/DashWallet/ms.lproj/Localizable.strings +++ b/DashWallet/ms.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/nb.lproj/Localizable.strings b/DashWallet/nb.lproj/Localizable.strings index de0e2d0ae..88bb1448d 100644 --- a/DashWallet/nb.lproj/Localizable.strings +++ b/DashWallet/nb.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/nl.lproj/Localizable.strings b/DashWallet/nl.lproj/Localizable.strings index 34a86eacc..96762f08c 100644 --- a/DashWallet/nl.lproj/Localizable.strings +++ b/DashWallet/nl.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Akkoord"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Alles"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Word onderdeel van een Dash Masternode met CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Tussen %1$ld en %2$ld karakters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Wijzig naar gemiddeld"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Controleer je verbinding"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Verbinding verbroken"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Weergavenaam"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Fout bij het upgraden"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Voorbeeld bericht"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Exporteer alle transacties"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Uitgebreide publieke sleutels"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "vanaf je Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ontvang beloningen van deposito's in Dash Masternodes vanaf slechts 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Ontoereikende fondsen"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Onvoldoende saldo"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Laag naar hoog"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Plaats een bericht met de bovenstaande tekst (of iets dergelijks) op een bekend sociale media- of berichtenplatform om te verifiëren dat jij de oorspronkelijke eigenaar bent van de gevraagde gebruikersnaam en plak een link naar het bericht hieronder"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Zoeken naar acceptanten werkt beter met locatiediensten ingeschakeld."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Door Dash te mixen, worden je transacties meer privé"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Meer"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Niet bepaald"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Nog niet gebruikt"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is gratis en kan worden verkregen via een soort uitgifte portaal genaamd faucet.\nKopieer een adres uit het ontvangstscherm van de portemonnee en klik op de onderstaande knop om test Dash te krijgen."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "De blockchain wordt gesynchroniseerd..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Zet apparaat-toegangscode aan"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Als je deze functie inschakelt, zal het batterijgebruik toenemen"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Wanneer de transactie is bevestigd, is de andere portemonnee waardeloos en mag deze om veiligheidsredenen niet opnieuw worden gebruikt."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Waar uit te geven"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Je storting op CrowdNode is ontvangen."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "je e-mail wordt niet opgeslagen in de DashPay portemonnee, en ook niet op servers. Het wordt één keer gebruikt om je Gravatar accountgegevens te krijgen en wordt vervolgens weggegooid."; diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index 9b80c906f..24936f7b8 100644 --- a/DashWallet/pl.lproj/Localizable.strings +++ b/DashWallet/pl.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Zgadzam się"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Wszystko"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Zostań współwłaścicielem Masternoda dzięki CrwodNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Pomiędzy %1$ld a %2$ld znaków"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Zmień na Średniozaawansowany"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Sprawdź swoje połączenie"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Rozłączony"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Pokaż Imię"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Wystąpił błąd podczas ulepszania"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Przykładowy wpis"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Eksportuj wszystkie transakcje"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Wydłużone Publiczne Klucze"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "z twojego konta na Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Pozwól aby twoje monety Dash pracowały na siebie jako zabezpieczenie Masternoda. Możesz zacząć z 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Niewystarczająca ilość funduszy"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Nie posiadasz wystarczająco środków"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Od niskiego do wysokiego"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Stwórz post zawierający powyższy tekst (lub coś podobnego) na jednej z większych mediów społecznościowych lub komunikatorze, aby zweryfikować, że jesteś pierwotnym właścicielem żądanej nazwy użytkownika, i wklej link do postu poniżej"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Szukiwanie sprzedawców działa lepiej z włączonymi usługami lokalizacyjnymi."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mieszanie monet Dash sprawi, że Twoje transakcje będą bardziej prywatne"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Więcej"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Nieustalony"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Jeszcze nie użyty"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash jest bezpłatny i można go uzyskać z tak zwanego kranu (faucet).\nSkopiuj adres z zakładki Odbierz w swoim portfelu i kliknij przycisk poniżej, aby otrzymać Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Łańcuch synchronizuje się…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Włącz hasło urządzenia"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Włączenie tej funkcji spowoduje większe zużycie baterii"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Po potwierdzeniu transakcji, drugi portfel będzie bezwartościowy i nie powinien być ponownie wykorzystywany ze względów bezpieczeństwa."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Gdzie kupować"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Otrzymaliśmy twój depozyt."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Twój Email nie jest przechowywany w portfelu Dash lub na serwerach sieci. Jest on użyty tylko raz aby pobrać detale twojego konta Gravatar, i później jest kasowany. "; diff --git a/DashWallet/pt.lproj/Localizable.strings b/DashWallet/pt.lproj/Localizable.strings index f6f2bd2b2..7402c8829 100644 --- a/DashWallet/pt.lproj/Localizable.strings +++ b/DashWallet/pt.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Aceitar"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Todos"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Torne-se parte de um Masternode Dash com CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Entre %1$ld e %2$ld caracteres"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Mudar para Intermediário"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Verifique sua conexão"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Desconectado"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Nome de Exibição"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Erro no Upgrade"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Postagem de exemplo"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Exportar todas as transações"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Chave Pública Estendida"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "da sua conta Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ganhe recompensas de depósitos em Dash Masternodes com apenas 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Fundos insuficientes"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Saldo da Carteira Insuficiente"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Do mais baixo para o mais alto"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Para verificar que você é o proprietário original do nome de usuário solicitado, crie uma publicação com o texto acima (ou algo similar) em uma plataforma de mídia social ou mensagens bem conhecida e cole o link da publicação abaixo"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "A pesquisa de comércios funciona melhor com os Serviços de Localização ativados."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Misturar suas moedas Dash tornará suas transações mais privadas"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Mais"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Não determinado"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Não utilizado ainda"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "O Dash de teste é gratuito e pode ser obtido através do que é chamado de \"faucet\". Copie um endereço da tela de Recebimento da sua carteira e clique no botão abaixo para obter seu Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "A cadeia está sendo sincronizada…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Habilite a senha de dispositivo"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Ativar essa funcionalidade resultará em um maior consumo de bateria."; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Quando a transação esteja confirmada, a outra carteira será inutilizada e não deve ser utilizada por razões de segurança."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Onde Gastar"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Seu depósito no CrowdNode foi recebido."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Seu e-mail não é armazenado na carteira DashPay nem em nenhum servidor. Ele é usado uma vez para obter os detalhes da sua conta Gravatar e depois descartado."; diff --git a/DashWallet/ro.lproj/Localizable.strings b/DashWallet/ro.lproj/Localizable.strings index e806a78a9..6f8691fb1 100644 --- a/DashWallet/ro.lproj/Localizable.strings +++ b/DashWallet/ro.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Fonduri nesuficiente"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/ru.lproj/Localizable.strings b/DashWallet/ru.lproj/Localizable.strings index a97204867..84e1941de 100644 --- a/DashWallet/ru.lproj/Localizable.strings +++ b/DashWallet/ru.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Согласиться"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Все"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Станьте частью мастерноды Dash вместе с CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "От %1$ld до %2$ld символов"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Сменить на Средний"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Проверьте ваше интернет-соединение"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Подключение отсутствует"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Отображаемое имя"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Ошибка при обновлении"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Пример сообщения"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Экспортировать все транзакции"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Расширенные публичные ключи"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "с аккаунта Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Получайте вознаграждение за инвестирование в мастерноды Dash, начиная с 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Недостаточно средств"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Недостаточно средств на балансе кошелька"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "По возрастанию"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Опубликуйте сообщение с таким же (или похожим) текстом как в примере выше в известной соцсети или мессенджере, чтобы подтвердить, что вы действительно являетесь владельцем запрошенного имени пользователя, и вставьте ссылку на этот пост в поле ниже"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Поиск продавцов работает лучше всего с включенными службами геолокации."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Перемешивание монет Dash повысит уровень приватности ваших транзакций"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Больше"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Не определён"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Еще не использован"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Тестовый Dash распространяется бесплатно, его можно получить из так называемого крана.\nСкопируйте адрес с экрана \"Получить\" в вашем кошельке и нажмите на кнопку ниже, чтобы получить Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Блокчейн синхронизируется..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Включить код-пароль"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Включение этой функции повысит расход батареи"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = " Когда эта транзакция будет подтверждена, другой кошелёк будет бесполезен и не должен быть повторно использован в целях безопасности."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Где потратить"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Ваши средства зачислены на CrowdNode."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Введёный адрес электронной почты нигде не сохраняется - ни в кошельке DashPay, ни на серверах. Он нужен лишь единожды для получения информации с Gravatar."; diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 862472f64..2770a7181 100644 --- a/DashWallet/sk.lproj/Localizable.strings +++ b/DashWallet/sk.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Súhlasím"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Všetko"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Staňte sa súčasťou Dash Masternode s CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Medzi %1$ld a %2$ld znakmi"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Zmeniť na stredne pokročilé"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Skontrolujte pripojenie"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Odpojený"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Zobrazované meno"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Chyba pri inovácii"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Príklad príspevku"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Exportovať všetky transakcie"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Rozšírené verejné kľúče"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "z vášho Coinbase účtu"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Získajte odmeny z vkladov v Dash Masternodes už za 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Nedostatok prostriedkov"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Nedostatočný zostatok v peňaženke"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Od najmenších"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Uverejnite príspevok s textom uvedeným vyššie (alebo niečím podobným) na známej sociálnej sieti alebo platforme na odosielanie správ, aby ste si overili, že ste pôvodným vlastníkom požadovaného používateľského mena, a vložte odkaz na príspevok nižšie"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Vyhľadávanie obchodníkov funguje lepšie so zapnutými službami určovania polohy."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Miešaním vašich Dashov budú vaše transakcie súkromnejšie"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Viac"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Neurčené"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Zatiaľ nepoužité"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Testovací Dash je zadarmo a možno ho získať z takzvaného faucetu.\nSkopírujte adresu z prijímacej obrazovky vašej peňaženky a kliknutím na tlačidlo nižšie získate svoj Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Reťazec sa synchronizuje..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Zapnúť prístupový kód"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Zapnutie tejto funkcie spôsobí vyššiu spotrebu batérie"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Po potvrdení transakcie bude druhá peňaženka bezcenná a z bezpečnostných dôvodov by sa nemala znovu používať."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Kde minúť"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Váš vklad do CrowdNode je prijatý."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Váš e-mail nie je uložený v peňaženke DashPay ani na žiadnych serveroch. Použije sa jeden krát na získanie podrobností o vašom Gravatar účte a potom sa zahodí."; diff --git a/DashWallet/sl.lproj/Localizable.strings b/DashWallet/sl.lproj/Localizable.strings index d07f57675..336c774a2 100644 --- a/DashWallet/sl.lproj/Localizable.strings +++ b/DashWallet/sl.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/sl_SI.lproj/Localizable.strings b/DashWallet/sl_SI.lproj/Localizable.strings index eec0118de..06d47c7bf 100644 --- a/DashWallet/sl_SI.lproj/Localizable.strings +++ b/DashWallet/sl_SI.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/sq.lproj/Localizable.strings b/DashWallet/sq.lproj/Localizable.strings index e03e1f795..48719a3a4 100644 --- a/DashWallet/sq.lproj/Localizable.strings +++ b/DashWallet/sq.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/sr.lproj/Localizable.strings b/DashWallet/sr.lproj/Localizable.strings index 8307bfc67..538c47dec 100644 --- a/DashWallet/sr.lproj/Localizable.strings +++ b/DashWallet/sr.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/sv.lproj/Localizable.strings b/DashWallet/sv.lproj/Localizable.strings index 3f2c170ec..80fb3e758 100644 --- a/DashWallet/sv.lproj/Localizable.strings +++ b/DashWallet/sv.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Alla"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Kontrollera din anslutning"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index c8667dfbe..886725bfc 100644 --- a/DashWallet/th.lproj/Localizable.strings +++ b/DashWallet/th.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "เห็นด้วย"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "ทั้งหมด"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "เป็นส่วนหนึ่งของ Dash มาสเตอร์โหนด กับ CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "ระหว่าง %1$ld and %2$ld ตัวอักษร"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "เปลี่ยนเป็นระดับกลาง"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "ตรวจสอบการเชื่อมต่อ"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "ตัดการเชื่อมต่อ"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "ชื่อที่แสดง"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "อัพเกรดข้อผิดพลาด"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "ขยายกุญแจสาธารณะ"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "จากบัญชี Coinbase ของคุณ"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "รับรางวัลจากเงินฝากใน Dash มาสเตอร์โหนดที่มีเพียง 0.5 Dash"; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "ยอดเงินไม่เพียงพอ"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "ยอดเงินไม่เพียงพอ"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "ต่ำไปสูง"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "การค้นหาร้านค้าทำงานได้ดีขึ้นเมื่อเปิดการใช้งานบริการสถานที่"; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "การผสมเหรียญ Dash ของคุณจะทำให้ธุรกรรมของคุณเป็นส่วนตัวมากขึ้น"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "มากขึ้น"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "ไม่ได้กำหนด"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "ยังไม่ถูกใช้"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash นั้นฟรีและสามารถรับได้จากสิ่งที่เรียกว่า faucet\nคัดลอกที่อยู่จากหน้าจอรับของกระเป๋าเงินของคุณ และคลิกที่ปุ่มด้านล่างเพื่อรับ Dash ของคุณ"; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "โซ่กำลังซิงค์..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "เปิดรหัสผ่านของอุปกรณ์"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "การเปิดคุณสมบัตินี้จะส่งผลให้มีการใช้งานแบตเตอรี่มากขึ้น"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "เมื่อธุรกรรมถูกยืนยัน วอลเล็ทอื่นๆจะไม่มีจราคาและไม่ควรนำมาใช้อีกครั้งเพื่อความปลอดภัย"; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "จะใช้จ่ายที่ไหน"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "ได้รับเงินฝากของคุณไปยัง CrowdNode"; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "อีเมลของคุณไม่ได้ถูกเก็บไว้ในกระเป๋าเงิน DashpPay หรือบนเซิร์ฟเวอร์ใด ๆ มันถูกใช้หนึ่งครั้งเพื่อรับรายละเอียดบัญชี Gravatar ของคุณแล้วทิ้ง"; diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index 5063e6dd2..093edae7f 100644 --- a/DashWallet/tr.lproj/Localizable.strings +++ b/DashWallet/tr.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Kabul etmek"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Hepsi"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "CrowdNode ile Dash Masternode'un parçası olun"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "%1$ld ile %2$ld karakter arasında"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Orta Seviyeye Değiştir"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Bağlantınızı kontrol edin"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Bağlantı kesildi"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Ekran adı"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Yükseltme Hatası"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Örnek gönderi"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Tüm işlemleri dışa aktar"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Genişletilmiş Genel Anahtar"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "Coinbase hesabınızdan"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "0,5 Dash gibi küçük bir miktar ile Dash Masternode'da para yatırma işlemlerinden ödüller kazanın."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Yetersiz bakiye"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Yetersiz Cüzdan Bakiyesi"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Alçaktan yükseğe"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "İstenilen kullanıcı adının asıl sahibi olduğunuzu doğrulamak için iyi bilinen bir sosyal medya veya mesajlaşma platformunda yukarıdaki metni (veya benzerini) içeren bir gönderi oluşturun ve gönderinin bağlantısını aşağıya yapıştırın."; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Tüccar araması, Konum Servisleri açıkken daha iyi çalışır."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Dash’inizi karıştırmak işlemlerinizi daha özel hale getirir"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Daha Fazla"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Belirlenmedi"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Henüz kullanılmadı"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash ücretsizdir ve musluk denilen yerden elde edilebilir.\nCüzdanınızın Alma ekranından bir adres kopyalayın ve Dash'ınızı almak için aşağıdaki düğmeye tıklayın."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Zincir senkronize ediliyor…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Cihaz parolasını aç"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Bu özelliğin açılması daha yüksek pil kullanımına neden olur"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "İşlem onaylandığında, diğer cüzdan değersiz olacaktır ve güvenlik nedeniyle yeniden kullanılmamalıdır."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Nerede Harcamalı"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "CrowdNode'a yaptığınız ödeme alındı."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "E-postanız DashPay cüzdanında veya herhangi bir sunucuda saklanmaz. Gravatar hesap ayrıntılarınızı almak için bir kez kullanılır ve ardından yok edilir."; diff --git a/DashWallet/uk.lproj/Localizable.strings b/DashWallet/uk.lproj/Localizable.strings index d4c242d7d..1dc3499d3 100644 --- a/DashWallet/uk.lproj/Localizable.strings +++ b/DashWallet/uk.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Погоджуюсь"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Все"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Стань частиною Dash Мастерноди з CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Між %1$ld і %2$ld символів"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Зміна на проміжний"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Перевірте з'єднання"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Відображуване ім'я"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Помилка оновлення"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Приклад публікації"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Експорт усіх транзакцій"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Розширені відкриті ключі"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "з вашого акаунта Coinbase"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Отримуйте нагороди від депозитів у Dash Мастерноди лише за 0,5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Недостатньо коштів"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Недостатній баланс гаманця"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Від низького до високого"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Опублікуйте публікацію з наведеним вище текстом (або щось подібне) у відомих соціальних мережах або на платформі обміну повідомленнями, щоб підтвердити, що ви є справжнім власником потрібного імені користувача, і вставте посилання на публікацію нижче"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Пошук продавців працює краще, якщо ввімкнено служби локації."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Змішування монет Dash зробить ваші транзакції більш конфіденційними"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Більше"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Не визначено"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Ще не використовувався"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Тестові Dash є безкоштовними і їх можна отримати з так званого\"крану\".\nСкопіюйте адресу з екрана отримання вашого гаманця та натисніть кнопку нижче, щоб отримати свій Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "Блокчейн синхронізується..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Увімкніть пароль"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Увімкнення цієї функції призведе до більшого використання акумулятора"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Коли ця транзакція буде підтверджена, гаманець буде непотрібним і не зможе бути повторно використаний з метою безпеки."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Де витратити"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Ваш депозит на CrowdNode отримано."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Ваша електронна пошта не зберігається ні в гаманці DashPay, ні на будь-яких серверах. Він використовується один раз, щоб отримати дані вашого облікового запису Gravatar, а потім відкидається."; diff --git a/DashWallet/vi.lproj/Localizable.strings b/DashWallet/vi.lproj/Localizable.strings index cdf0fb9bf..ac09f1db8 100644 --- a/DashWallet/vi.lproj/Localizable.strings +++ b/DashWallet/vi.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "Tất cả"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Kiểm tra kết nối của bạn"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Lỗi nâng cấp"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Không đủ tiền"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "Thêm"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Chưa từng được dùng"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Hãy bật chế độ mật khẩu cho thiết bị"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "Khi các giao dịch được xác thực, ví kia sẽ trở nên vô giá trị và không nên được tiếp tục sử dụng vì những lý do an toàn."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/zh-Hans.lproj/Localizable.strings b/DashWallet/zh-Hans.lproj/Localizable.strings index b645943c0..40fc8652c 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.strings +++ b/DashWallet/zh-Hans.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.strings b/DashWallet/zh-Hant-TW.lproj/Localizable.strings index e0232d0b2..8f8675f6c 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.strings +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "Agree"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "All"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "Between %1$ld and %2$ld characters"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "Change to Intermediate"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "Disconnected"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "Display Name"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "Error Upgrading"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "Example post"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "Export all transactions"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "Extended Public Keys"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "Insufficient funds"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "Insufficient Wallet Balance"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "Low to high"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "Merchant search works better with Location Services turned on."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "Mixing your Dash coins will make your transactions more private"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "More"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "Not Determined"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "Not yet used"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "The chain is syncing…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "Turn device passcode on"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "Turning this feature on will result a higher battery usage"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "Where to Spend"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded."; diff --git a/DashWallet/zh.lproj/Localizable.strings b/DashWallet/zh.lproj/Localizable.strings index c8d10d045..5dce36ba6 100644 --- a/DashWallet/zh.lproj/Localizable.strings +++ b/DashWallet/zh.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "同意"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "所有"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "通过CrowdNode成为Dash主节点的一部分"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "在 %1$ld 和 %2$ld 个字符之间"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "改变到常规"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "检查您的连接"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "连接断开"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "显示名称"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "错误升级"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "示例内容"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "导出所有交易"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "扩展公钥"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "从您的 Coinbase 账户"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "仅需 0.5 Dash的存款即可从Dash主节点中获得奖励."; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "资金不足"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "钱包余额不足"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "低到高"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "在知名社交媒体或信息平台使用上述文本 (或类似内容) 发布一个帖子以证明您是所申请用户名的原始持有者, 并将链接粘贴在下方"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "开启位置服务能获得更好的商户搜索效果."; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "通过混合您的Dash将使您的交易更具隐私性"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "更多"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "尚未确定"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "尚未使用"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "Test Dash 是免费的, 可以通过阀门来获得.\n从您钱包的接收页面复制一个地址并点击下方按钮来获得您的 Dash."; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "区块链正在同步..."; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "打开设备密码"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "打开这项功能将导致更高的电池使用率"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "当交易被确认后, 另一个钱包将会分文不值, 并且出于安全原因不应当再被使用."; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "在哪里消费"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "您向CrowdNode的存款已收到."; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "您的电子邮箱不会存储在 DashPay钱包或任何服务器上. 它用于获取您的 Gravatar账户详细信息, 之后会被丢弃."; diff --git a/DashWallet/zh_TW.lproj/Localizable.strings b/DashWallet/zh_TW.lproj/Localizable.strings index a47554ab5..31c85e6b1 100644 --- a/DashWallet/zh_TW.lproj/Localizable.strings +++ b/DashWallet/zh_TW.lproj/Localizable.strings @@ -163,6 +163,9 @@ /* No comment provided by engineer. */ "Agree" = "同意"; +/* TimeSkew */ +"ahead" = "ahead"; + /* No comment provided by engineer. */ "All" = "所有"; @@ -292,6 +295,9 @@ /* CrowdNode */ "Become part of a Dash Masternode with CrowdNode" = "通過 CrowdNode 成為達世幣主節點的一部分"; +/* TimeSkew */ +"behind" = "behind"; + /* Validation rule: Between 3 and 24 characters */ "Between %ld and %ld characters" = "在 %1$ld 和 %2$ld 個字符之間"; @@ -383,6 +389,9 @@ /* CoinJoin */ "Change to Intermediate" = "更改為中階"; +/* TimeSkew */ +"Check date & time settings" = "Check date & time settings"; + /* No comment provided by engineer. */ "Check your connection" = "Check your connection"; @@ -670,6 +679,9 @@ Coinbase Entry Point */ "Disconnected" = "斷開連接"; +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "Display Name" = "顯示名稱"; @@ -760,6 +772,9 @@ /* No comment provided by engineer. */ "Error Upgrading" = "錯誤升級"; +/* CoinJoin */ +"Error ·" = "Error ·"; + /* Usernames */ "Example post" = "範例貼文"; @@ -778,6 +793,9 @@ /* ZenLedger */ "Export all transactions" = "匯出所有交易"; +/* No comment provided by engineer. */ +"Export CSV" = "Export CSV"; + /* No comment provided by engineer. */ "Extended Public Keys" = "擴展公鑰"; @@ -889,6 +907,9 @@ /* Coinbase */ "from your Coinbase account" = "從你的 Coinbase 帳戶"; +/* CoinJoin */ +"Fully mixed" = "Fully mixed"; + /* CrowdNode */ "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "只需 0.5 Dash,即可從達世幣主節點中的存款中獲得獎勵。"; @@ -1063,6 +1084,9 @@ /* No comment provided by engineer. */ "Insufficient funds" = "餘額不足"; +/* Send screen */ +"Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction." = "Insufficient mixed funds. Wait for CoinJoin mixing to finish or disable this feature in the settings to complete this transaction."; + /* No comment provided by engineer. */ "Insufficient Wallet Balance" = "錢包餘額不足"; @@ -1289,6 +1313,9 @@ /* Voting */ "Low to high" = "從低到高"; +/* No comment provided by engineer. */ +"Mainnet" = "Mainnet"; + /* Usernames */ "Make a post with the text above (or something similar) on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste a link to the post bellow" = "在知名社交媒體或訊息平台上發布包含上述文字(或類似內容)的帖子,以驗證您是所請求用戶名的原始所有者,並將連結貼到下面的帖子"; @@ -1340,9 +1367,24 @@ /* No comment provided by engineer. */ "Merchant search works better with Location Services turned on." = "開啟位置服務後,商家搜索效果會更好。"; +/* No comment provided by engineer. */ +"Mixed balance" = "Mixed balance"; + +/* CoinJoin */ +"Mixing" = "Mixing"; + +/* CoinJoin */ +"Mixing is only possible with the app open" = "Mixing is only possible with the app open"; + +/* CoinJoin */ +"Mixing Paused ·" = "Mixing Paused ·"; + /* CoinJoin */ "Mixing your Dash coins will make your transactions more private" = "混合您的達世幣將使您交易的私隱度更高"; +/* CoinJoin */ +"Mixing ·" = "Mixing ·"; + /* No comment provided by engineer. */ "More" = "更多"; @@ -1451,6 +1493,9 @@ /* Location Service Status */ "Not Determined" = "尚未決定"; +/* CoinJoin */ +"Not started" = "Not started"; + /* No comment provided by engineer. */ "Not yet used" = "尚未使用"; @@ -2133,6 +2178,9 @@ /* No comment provided by engineer. */ "Test Dash is free and can be obtained from what is called a faucet.\nCopy an address from the Receive screen of your wallet and click on the button bellow to get your Dash." = "測試用的達世幣是免費的,可以從所謂的水龍頭獲得。\n從錢包的接收畫面複製位址,然後點擊下面的按鈕以獲取您的達世幣。"; +/* No comment provided by engineer. */ +"Testnet" = "Testnet"; + /* No comment provided by engineer. */ "The chain is syncing…" = "區塊鏈正在同步…"; @@ -2285,6 +2333,9 @@ /* Alert title */ "Turn device passcode on" = "在設備上開啟驗證碼"; +/* CoinJoin */ +"Turned off" = "Turned off"; + /* Coinbase */ "Turning this feature on will result a higher battery usage" = "打開此功能將導致更高的電池使用率"; @@ -2546,6 +2597,9 @@ /* No comment provided by engineer. */ "When the transaction is confirmed, the other wallet will be worthless and should not be re-used for safety reasons." = "當交易確認後,另一個錢包的結餘將會消失,並且出於安全原因不應重複使用該錢包。"; +/* CoinJoin */ +"When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app." = "When you close the app or lock the screen, the mixing process stops. It will resume when you reopen the app."; + /* No comment provided by engineer. */ "Where to Spend" = "在哪裡消費"; @@ -2742,6 +2796,15 @@ /* CrowdNode */ "Your deposit to CrowdNode is received." = "您對 CrowdNode 的存款已收到了。"; +/* TimeSkew */ +"Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; + +/* TimeSkew */ +"Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings." = "Your device time is off by %d minutes. You probably cannot send or receive Dash due to this problem.\n\nYou should check and if necessary correct your date, time and timezone settings."; + +/* TimeSkew */ +"Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin." = "Your device time is off by more than 5 seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” before using CoinJoin."; + /* No comment provided by engineer. */ "Your Email is not stored in the DashPay wallet nor on any servers. It is used once to get your Gravatar account details and then discarded." = "您的電子郵件不會存儲在 DashPay 錢包或任何服務器上。它用於獲取您的 Gravatar 帳戶詳細信息,然後被丟棄。"; From 825f3e1a0fd079e98b4bc2a39e04c251d04ef3af Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Fri, 4 Oct 2024 17:11:09 +0700 Subject: [PATCH 8/8] fix: transaction manager method signature --- .../Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m b/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m index 5e9aaacfc..5b5584cfa 100644 --- a/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m +++ b/DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m @@ -201,8 +201,9 @@ - (void)confirmPaymentOutput:(DWPaymentOutput *)paymentOutput { self.didSendRequestDelegateNotified = NO; const BOOL requiresSpendingAuthenticationPrompt = ![[DWGlobalOptions sharedInstance] spendingConfirmationDisabled]; - + BOOL mixedOnly = [CoinJoinServiceWrapper mode] != CoinJoinModeNone; DSChainManager *chainManager = [DWEnvironment sharedInstance].currentChainManager; + [chainManager.transactionManager signAndPublishTransaction:paymentOutput.tx createdFromProtocolRequest:protocolRequest @@ -212,6 +213,7 @@ - (void)confirmPaymentOutput:(DWPaymentOutput *)paymentOutput { promptMessage:nil forAmount:paymentOutput.amount keepAuthenticatedIfErrorAfterAuthentication:NO + mixedOnly:mixedOnly requestingAdditionalInfo:^(DSRequestingAdditionalInfo additionalInfoRequestType) { [self txManagerRequestingAdditionalInfo:additionalInfoRequestType protocolRequest:protocolRequest];