diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index 9b4f19d43..1c3b726c2 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -180,15 +180,8 @@ 2A74EFFB2305464C00C475EB /* DWRecoverTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFA2305464C00C475EB /* DWRecoverTextView.m */; }; 2A74EFFE2305763F00C475EB /* DWRecoverModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFD2305763F00C475EB /* DWRecoverModel.m */; }; 2A7A7BAE234770C900451078 /* DWCaptureSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BAD234770C900451078 /* DWCaptureSessionManager.m */; }; - 2A7A7BB22347927700451078 /* DWMainMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BB12347927700451078 /* DWMainMenuViewController.m */; }; - 2A7A7BBE2347950700451078 /* DWMainMenuTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BBC2347950700451078 /* DWMainMenuTableViewCell.m */; }; - 2A7A7BBF2347950700451078 /* DWMainMenuTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A7A7BBD2347950700451078 /* DWMainMenuTableViewCell.xib */; }; - 2A7A7BC3234797FC00451078 /* DWMainMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BC2234797FC00451078 /* DWMainMenuModel.m */; }; 2A7A7BC92347E0D700451078 /* DWBaseFormTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BC82347E0D700451078 /* DWBaseFormTableViewCell.m */; }; - 2A7A7BCD2347F01B00451078 /* DWSecurityMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BCC2347F01B00451078 /* DWSecurityMenuViewController.m */; }; - 2A7A7BD02348A34800451078 /* DWSecurityMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BCF2348A34800451078 /* DWSecurityMenuModel.m */; }; - 2A7A7BD62348CB6600451078 /* SettingsMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD52348CB6600451078 /* SettingsMenuViewController.swift */; }; - 2A7A7BD92348CB7300451078 /* DWSettingsMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD82348CB7300451078 /* DWSettingsMenuModel.m */; }; + 2A7A7BD62348CB6600451078 /* SettingsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD52348CB6600451078 /* SettingsScreen.swift */; }; 2A7A7C16234B763600451078 /* DWLocalCurrencyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C15234B763600451078 /* DWLocalCurrencyViewController.m */; }; 2A7A7C1D234B771400451078 /* DWLocalCurrencyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1C234B771400451078 /* DWLocalCurrencyModel.m */; }; 2A7A7C20234B79B700451078 /* DWLocalCurrencyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1F234B79B700451078 /* DWLocalCurrencyTableViewCell.m */; }; @@ -508,8 +501,8 @@ 75050CCF2DF2CB0F00F586D6 /* GiftCardMetadataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75050CCD2DF2CB0E00F586D6 /* GiftCardMetadataProvider.swift */; }; 75050CD12DF2FCC200F586D6 /* ServiceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75050CD02DF2FCBF00F586D6 /* ServiceName.swift */; }; 75050CD22DF2FCC200F586D6 /* ServiceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75050CD02DF2FCBF00F586D6 /* ServiceName.swift */; }; - 750CED602C94BFD7000FB837 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CED5F2C94BFD7000FB837 /* SettingsViewModel.swift */; }; - 750CED612C94BFD7000FB837 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CED5F2C94BFD7000FB837 /* SettingsViewModel.swift */; }; + 750CED602C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CED5F2C94BFD7000FB837 /* SettingsMenuViewModel.swift */; }; + 750CED612C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CED5F2C94BFD7000FB837 /* SettingsMenuViewModel.swift */; }; 750CEFA12CCA6EA100E87A32 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CEFA02CCA6EA100E87A32 /* TextInput.swift */; }; 750CEFA22CCA6EA100E87A32 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CEFA02CCA6EA100E87A32 /* TextInput.swift */; }; 750CEFA42CCA713300E87A32 /* CreateUsernameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750CEFA32CCA712E00E87A32 /* CreateUsernameViewController.swift */; }; @@ -537,6 +530,18 @@ 7527720F2AA9F58E0066557E /* TopperViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7527720E2AA9F58E0066557E /* TopperViewModel.swift */; }; 752772122AAA1CE30066557E /* Coinbase-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 752772112AAA1CE30066557E /* Coinbase-Info.plist */; }; 752C3ED22B1AF19C00F46CD3 /* BuySellPortal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9FAABB42AB793CE00878224 /* BuySellPortal.storyboard */; }; + 752D03A92E2F758B00B88784 /* MainMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03A82E2F758B00B88784 /* MainMenuViewModel.swift */; }; + 752D03AC2E2F758B00B88784 /* MainMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03A72E2F758B00B88784 /* MainMenuViewController.swift */; }; + 752D03AD2E2F758B00B88784 /* MainMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03A82E2F758B00B88784 /* MainMenuViewModel.swift */; }; + 752D03B02E2F758B00B88784 /* MainMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03A72E2F758B00B88784 /* MainMenuViewController.swift */; }; + 752D03B22E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03B12E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift */; }; + 752D03B32E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752D03B12E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift */; }; + 752F81982E30F55E00ADA76D /* SecurityMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81962E30F55E00ADA76D /* SecurityMenuScreen.swift */; }; + 752F81992E30F55E00ADA76D /* SecurityMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81972E30F55E00ADA76D /* SecurityMenuViewModel.swift */; }; + 752F819A2E30F55E00ADA76D /* SecurityMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81962E30F55E00ADA76D /* SecurityMenuScreen.swift */; }; + 752F819B2E30F55E00ADA76D /* SecurityMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81972E30F55E00ADA76D /* SecurityMenuViewModel.swift */; }; + 752F81A92E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */; }; + 752F81AA2E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */; }; 75303FE52AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; 75303FE62AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7531308C2B47EC910069C9B7 /* UpholdClient.swift */; }; @@ -617,8 +622,8 @@ 755E6DFE2A99E7A000A42870 /* DWInvitationSetupState.m in Sources */ = {isa = PBXBuildFile; fileRef = 755E6DFC2A99E7A000A42870 /* DWInvitationSetupState.m */; }; 756557B52CE84FFA0060348D /* FeeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756557B42CE84FF70060348D /* FeeInfo.swift */; }; 756557B62CE84FFA0060348D /* FeeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756557B42CE84FF70060348D /* FeeInfo.swift */; }; - 7566F4832BB6949E005238D2 /* ToolsMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuViewController.swift */; }; - 7566F4842BB6949E005238D2 /* ToolsMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuViewController.swift */; }; + 7566F4832BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */; }; + 7566F4842BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */; }; 7566F48A2BB6CAF2005238D2 /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4892BB6CAF2005238D2 /* MenuItem.swift */; }; 7566F48B2BB6CAF2005238D2 /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4892BB6CAF2005238D2 /* MenuItem.swift */; }; 7569D6832DE6DA6800768BFF /* ExploreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */; }; @@ -664,7 +669,6 @@ 758CE59E2BC566DE0062AF53 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 758CE59B2BC566DE0062AF53 /* PrivacyInfo.xcprivacy */; }; 759063E92C411673002F2AA9 /* ZenLedgerInfoSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EBAA1C2BBA71D9004488E3 /* ZenLedgerInfoSheet.swift */; }; 759063ED2C42687F002F2AA9 /* RootEditProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759063EC2C42687F002F2AA9 /* RootEditProfileViewController.swift */; }; - 759063EF2C427324002F2AA9 /* DWMainMenuViewController+DashPay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759063EE2C427324002F2AA9 /* DWMainMenuViewController+DashPay.swift */; }; 7592AA7C2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7592AA7B2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift */; }; 7592AA7D2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7592AA7B2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift */; }; 7596091A2C4550F500F3BF04 /* DWDashPaySetupModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 759609182C4550F400F3BF04 /* DWDashPaySetupModel.m */; }; @@ -754,8 +758,6 @@ 75EBAA262BBA9DC2004488E3 /* ZenLedger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EBAA242BBA9DC2004488E3 /* ZenLedger.swift */; }; 75EBAA292BBBE385004488E3 /* ZenLedgerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EBAA282BBBE385004488E3 /* ZenLedgerViewModel.swift */; }; 75EBAA2A2BBBE385004488E3 /* ZenLedgerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EBAA282BBBE385004488E3 /* ZenLedgerViewModel.swift */; }; - 75EE38D32CBE9EFC00845FFF /* MainMenuContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE38D22CBE9EFC00845FFF /* MainMenuContentView.swift */; }; - 75EE38D42CBE9EFC00845FFF /* MainMenuContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE38D22CBE9EFC00845FFF /* MainMenuContentView.swift */; }; 75EE38D82CBFE52E00845FFF /* ContactsPlaceholderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE38D72CBFE52B00845FFF /* ContactsPlaceholderViewController.swift */; }; 75EE9F422DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */; }; 75EE9F432DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */; }; @@ -1051,7 +1053,7 @@ C9D2C6AD2A320AA000D15901 /* HairlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1428C6378E00490F5E /* HairlineView.swift */; }; C9D2C6AE2A320AA000D15901 /* DWInitialViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E9423A3F75F006A2A59 /* DWInitialViewController.m */; }; C9D2C6AF2A320AA000D15901 /* BuySellPortalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751136B28D9A3DB00223B77 /* BuySellPortalViewController.swift */; }; - C9D2C6B02A320AA000D15901 /* SettingsMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD52348CB6600451078 /* SettingsMenuViewController.swift */; }; + C9D2C6B02A320AA000D15901 /* SettingsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD52348CB6600451078 /* SettingsScreen.swift */; }; C9D2C6B22A320AA000D15901 /* UISpringTimingParameters+DWInit.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69D92314727F001B8C90 /* UISpringTimingParameters+DWInit.m */; }; C9D2C6B62A320AA000D15901 /* NumberKeyboardButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661AC28F972BD00028A8D /* NumberKeyboardButton.swift */; }; C9D2C6B72A320AA000D15901 /* IsDefaultEmail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AE3DD72997C599000856EE /* IsDefaultEmail.swift */; }; @@ -1239,7 +1241,6 @@ C9D2C78F2A320AA000D15901 /* CrowdNodeBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C89294B11DD004FC7BF /* CrowdNodeBalance.swift */; }; C9D2C7902A320AA000D15901 /* String+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B9290A962B00E030C8 /* String+DashWallet.swift */; }; C9D2C7932A320AA000D15901 /* DWBaseModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69D623143B2F001B8C90 /* DWBaseModalViewController.m */; }; - C9D2C7942A320AA000D15901 /* DWSecurityMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BCF2348A34800451078 /* DWSecurityMenuModel.m */; }; C9D2C7952A320AA000D15901 /* KeysOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615829F29C9200002D82 /* KeysOverviewCell.swift */; }; C9D2C7962A320AA000D15901 /* UIViewController+DWShareReceiveInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACCD86D2319609400A96B62 /* UIViewController+DWShareReceiveInfo.m */; }; C9D2C7972A320AA000D15901 /* OnlineAccountConfirmationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114D16B729828BCC009A124C /* OnlineAccountConfirmationController.swift */; }; @@ -1322,7 +1323,6 @@ C9D2C8052A320AA000D15901 /* IntegrationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B86290670630003E8AB /* IntegrationViewController.swift */; }; C9D2C8062A320AA000D15901 /* NSString+DWTextSize.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE7F22DC92BF00C99324 /* NSString+DWTextSize.m */; }; C9D2C8072A320AA000D15901 /* PointOfUseListFiltersCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C0428C1F74A00490F5E /* PointOfUseListFiltersCell.swift */; }; - C9D2C80A2A320AA000D15901 /* DWMainMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BB12347927700451078 /* DWMainMenuViewController.m */; }; C9D2C80C2A320AA000D15901 /* AllMerchantLocationsDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1928C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift */; }; C9D2C80D2A320AA000D15901 /* MainTabbarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451E42A0B986E00825057 /* MainTabbarController.swift */; }; C9D2C80E2A320AA000D15901 /* NumberFormatter+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B30D77290BFCA60080C326 /* NumberFormatter+DashWallet.swift */; }; @@ -1339,7 +1339,6 @@ C9D2C81E2A320AA000D15901 /* DWGlobalOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CEAA22E18F1800C99324 /* DWGlobalOptions.m */; }; C9D2C81F2A320AA000D15901 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4430E622CBB6EC009BAF7F /* AppDelegate.m */; }; C9D2C8202A320AA000D15901 /* SendReceivePageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C917023E29D44E0B008C034D /* SendReceivePageController.swift */; }; - C9D2C8212A320AA000D15901 /* DWSettingsMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD82348CB7300451078 /* DWSettingsMenuModel.m */; }; C9D2C8232A320AA000D15901 /* BaseNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478A2C6E28DC457000AD1420 /* BaseNavigationController.swift */; }; C9D2C8242A320AA000D15901 /* UIViewController+Coinbase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDEECB294A2BAD008AE06D /* UIViewController+Coinbase.swift */; }; C9D2C8262A320AA000D15901 /* CSVBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E0299E1F2F006903F1 /* CSVBuilder.swift */; }; @@ -1408,7 +1407,6 @@ C9D2C8712A320AA000D15901 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; C9D2C8722A320AA000D15901 /* DSTransaction+DashWallet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4709C31D2880247C00B4BD48 /* DSTransaction+DashWallet.m */; }; C9D2C8742A320AA000D15901 /* DWLocalCurrencyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1C234B771400451078 /* DWLocalCurrencyModel.m */; }; - C9D2C8752A320AA000D15901 /* DWMainMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BC2234797FC00451078 /* DWMainMenuModel.m */; }; C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */; }; C9D2C8792A320AA000D15901 /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FA829DC09CF001BC549 /* Style.swift */; }; C9D2C87A2A320AA000D15901 /* PayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C917024029D462C6008C034D /* PayViewController.swift */; }; @@ -1454,7 +1452,6 @@ C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9172D225233F4F0024B4C5 /* DWPhraseRepairChildViewController.m */; }; C9D2C8B12A320AA000D15901 /* SingleInputAddressSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449928F6D5480082770C /* SingleInputAddressSelector.swift */; }; C9D2C8B22A320AA000D15901 /* CoinbaseAccountAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFAC28C896BC000427E7 /* CoinbaseAccountAddress.swift */; }; - C9D2C8B32A320AA000D15901 /* DWMainMenuTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BBC2347950700451078 /* DWMainMenuTableViewCell.m */; }; C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1141E4C1291BB12200ACDA9E /* CrowdNodeTransferViewController.swift */; }; C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478483E729629C0700E05A5A /* CBAuthInterop.swift */; }; C9D2C8B82A320AA000D15901 /* CoinbaseAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4789D26F29825F5400BAFEFA /* CoinbaseAmountViewController.swift */; }; @@ -1479,7 +1476,6 @@ C9D2C8D32A320AA000D15901 /* SendAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B30D7F291123D30080C326 /* SendAmountViewController.swift */; }; C9D2C8D52A320AA000D15901 /* AccountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF46A0296540EF0067B6EE /* AccountService.swift */; }; C9D2C8D62A320AA000D15901 /* ListHandlerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6E6E6291A90B2003FEDF2 /* ListHandlerView.swift */; }; - C9D2C8D72A320AA000D15901 /* DWSecurityMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BCC2347F01B00451078 /* DWSecurityMenuViewController.m */; }; C9D2C8D82A320AA000D15901 /* CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BD738028E7356100A34022 /* CrowdNode.swift */; }; C9D2C8D92A320AA000D15901 /* SQLite+ExloreDash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8B9E28BFAD8200490F5E /* SQLite+ExloreDash.swift */; }; C9D2C8DC2A320AA000D15901 /* DWAdvancedSecurityModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F6414238FEEA900A9B505 /* DWAdvancedSecurityModel.m */; }; @@ -1562,7 +1558,6 @@ C9D2C93D2A320AA000D15901 /* QuickReceive.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A8C24B5233370A600000D43 /* QuickReceive.storyboard */; }; C9D2C93E2A320AA000D15901 /* Tx.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 47A514612848FEAD005A8E3E /* Tx.storyboard */; }; C9D2C93F2A320AA000D15901 /* DashSyncCurrentCommit in Resources */ = {isa = PBXBuildFile; fileRef = 2A8F420821BED16300858B91 /* DashSyncCurrentCommit */; }; - C9D2C9402A320AA000D15901 /* DWMainMenuTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A7A7BBD2347950700451078 /* DWMainMenuTableViewCell.xib */; }; C9D2C9412A320AA000D15901 /* VerifiedSuccessfully.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2AD1CE9E22DFBA6C00C99324 /* VerifiedSuccessfully.storyboard */; }; C9D2C9422A320AA000D15901 /* Setup.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A4430EA22CBBA82009BAF7F /* Setup.storyboard */; }; C9D2C9432A320AA000D15901 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C94F5E8729D3E7E30034FD57 /* GoogleService-Info.plist */; }; @@ -1956,23 +1951,9 @@ 2A74F0082305F1C100C475EB /* DWRecoverAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWRecoverAction.h; sourceTree = ""; }; 2A7A7BAC234770C900451078 /* DWCaptureSessionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWCaptureSessionManager.h; sourceTree = ""; }; 2A7A7BAD234770C900451078 /* DWCaptureSessionManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWCaptureSessionManager.m; sourceTree = ""; }; - 2A7A7BB02347927700451078 /* DWMainMenuViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWMainMenuViewController.h; sourceTree = ""; }; - 2A7A7BB12347927700451078 /* DWMainMenuViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWMainMenuViewController.m; sourceTree = ""; }; - 2A7A7BBB2347950700451078 /* DWMainMenuTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWMainMenuTableViewCell.h; sourceTree = ""; }; - 2A7A7BBC2347950700451078 /* DWMainMenuTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWMainMenuTableViewCell.m; sourceTree = ""; }; - 2A7A7BBD2347950700451078 /* DWMainMenuTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DWMainMenuTableViewCell.xib; sourceTree = ""; }; - 2A7A7BC1234797FC00451078 /* DWMainMenuModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWMainMenuModel.h; sourceTree = ""; }; - 2A7A7BC2234797FC00451078 /* DWMainMenuModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWMainMenuModel.m; sourceTree = ""; }; - 2A7A7BC42347982A00451078 /* DWMainMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWMainMenuItem.h; sourceTree = ""; }; 2A7A7BC72347E0D700451078 /* DWBaseFormTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWBaseFormTableViewCell.h; sourceTree = ""; }; 2A7A7BC82347E0D700451078 /* DWBaseFormTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWBaseFormTableViewCell.m; sourceTree = ""; }; - 2A7A7BCB2347F01B00451078 /* DWSecurityMenuViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWSecurityMenuViewController.h; sourceTree = ""; }; - 2A7A7BCC2347F01B00451078 /* DWSecurityMenuViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWSecurityMenuViewController.m; sourceTree = ""; }; - 2A7A7BCE2348A34800451078 /* DWSecurityMenuModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWSecurityMenuModel.h; sourceTree = ""; }; - 2A7A7BCF2348A34800451078 /* DWSecurityMenuModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWSecurityMenuModel.m; sourceTree = ""; }; - 2A7A7BD52348CB6600451078 /* SettingsMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsMenuViewController.swift; sourceTree = ""; }; - 2A7A7BD72348CB7300451078 /* DWSettingsMenuModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWSettingsMenuModel.h; sourceTree = ""; }; - 2A7A7BD82348CB7300451078 /* DWSettingsMenuModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWSettingsMenuModel.m; sourceTree = ""; }; + 2A7A7BD52348CB6600451078 /* SettingsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsScreen.swift; sourceTree = ""; }; 2A7A7C14234B763600451078 /* DWLocalCurrencyViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWLocalCurrencyViewController.h; sourceTree = ""; }; 2A7A7C15234B763600451078 /* DWLocalCurrencyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWLocalCurrencyViewController.m; sourceTree = ""; }; 2A7A7C1B234B771400451078 /* DWLocalCurrencyModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWLocalCurrencyModel.h; sourceTree = ""; }; @@ -2446,7 +2427,7 @@ 7509C10E1AF3076100D03FD5 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 7509C1121AF3720100D03FD5 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; 750C6CC01B5C8EB60038AAE9 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = ""; }; - 750CED5F2C94BFD7000FB837 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; + 750CED5F2C94BFD7000FB837 /* SettingsMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsMenuViewModel.swift; sourceTree = ""; }; 750CEFA02CCA6EA100E87A32 /* TextInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextInput.swift; sourceTree = ""; }; 750CEFA32CCA712E00E87A32 /* CreateUsernameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateUsernameViewController.swift; sourceTree = ""; }; 7511E8CB1AE5FF240025F1B3 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; lineEnding = 0; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.simpleColoring; }; @@ -2466,6 +2447,12 @@ 7527720C2AA9B2630066557E /* SupportedTopperAssets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportedTopperAssets.swift; sourceTree = ""; }; 7527720E2AA9F58E0066557E /* TopperViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopperViewModel.swift; sourceTree = ""; }; 752772112AAA1CE30066557E /* Coinbase-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Coinbase-Info.plist"; sourceTree = ""; }; + 752D03A72E2F758B00B88784 /* MainMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuViewController.swift; sourceTree = ""; }; + 752D03A82E2F758B00B88784 /* MainMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuViewModel.swift; sourceTree = ""; }; + 752D03B12E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuViewControllerDelegate.swift; sourceTree = ""; }; + 752F81962E30F55E00ADA76D /* SecurityMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityMenuScreen.swift; sourceTree = ""; }; + 752F81972E30F55E00ADA76D /* SecurityMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityMenuViewModel.swift; sourceTree = ""; }; + 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuViewModel.swift; sourceTree = ""; }; 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CrowdNode.storyboard; sourceTree = ""; }; 7531308C2B47EC910069C9B7 /* UpholdClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdClient.swift; sourceTree = ""; }; 753130902B47EE920069C9B7 /* UpholdCapability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdCapability.swift; sourceTree = ""; }; @@ -2514,7 +2501,7 @@ 755E6DFC2A99E7A000A42870 /* DWInvitationSetupState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWInvitationSetupState.m; sourceTree = ""; }; 755E6DFD2A99E7A000A42870 /* DWInvitationSetupState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWInvitationSetupState.h; sourceTree = ""; }; 756557B42CE84FF70060348D /* FeeInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeeInfo.swift; sourceTree = ""; }; - 7566F4822BB69498005238D2 /* ToolsMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuViewController.swift; sourceTree = ""; }; + 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuScreen.swift; sourceTree = ""; }; 7566F4892BB6CAF2005238D2 /* MenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItem.swift; sourceTree = ""; }; 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreViewController.swift; sourceTree = ""; }; 7569D6852DE6DB1B00768BFF /* ExploreHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreHeaderView.swift; sourceTree = ""; }; @@ -2543,7 +2530,6 @@ 758C4C4E2DFAC1C30028549B /* RadioButtonRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonRow.swift; sourceTree = ""; }; 758CE59B2BC566DE0062AF53 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 759063EC2C42687F002F2AA9 /* RootEditProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootEditProfileViewController.swift; sourceTree = ""; }; - 759063EE2C427324002F2AA9 /* DWMainMenuViewController+DashPay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DWMainMenuViewController+DashPay.swift"; sourceTree = ""; }; 7592AA7B2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportedTopperPaymentMethods.swift; sourceTree = ""; }; 759609172C4550F400F3BF04 /* DWDashPaySetupModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWDashPaySetupModel.h; sourceTree = ""; }; 759609182C4550F400F3BF04 /* DWDashPaySetupModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWDashPaySetupModel.m; sourceTree = ""; }; @@ -2611,7 +2597,6 @@ 75EBAA242BBA9DC2004488E3 /* ZenLedger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZenLedger.swift; sourceTree = ""; }; 75EBAA282BBBE385004488E3 /* ZenLedgerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZenLedgerViewModel.swift; sourceTree = ""; }; 75EDC78DE1686E55AE12233C /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; path = "Pods/Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; sourceTree = ""; }; - 75EE38D22CBE9EFC00845FFF /* MainMenuContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuContentView.swift; sourceTree = ""; }; 75EE38D72CBFE52B00845FFF /* ContactsPlaceholderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsPlaceholderViewController.swift; sourceTree = ""; }; 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendConfirmationDialog.swift; sourceTree = ""; }; 75F2E0B61BE2D5F000EAE861 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; @@ -3052,7 +3037,6 @@ C943B5882A40ED4500AF23C5 /* DWUsernameValidationRule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWUsernameValidationRule.m; sourceTree = ""; }; C943B59A2A40EE4800AF23C5 /* DWNetworkErrorViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWNetworkErrorViewController.m; sourceTree = ""; }; C943B59B2A40EE4800AF23C5 /* DWNetworkErrorViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWNetworkErrorViewController.h; sourceTree = ""; }; - C94946DF2A25EE24008A678D /* DWMainMenuViewControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWMainMenuViewControllerDelegate.h; sourceTree = ""; }; C94D98202A4CC78F00F3BEE1 /* DashInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashInputField.swift; sourceTree = ""; }; C94D98222A4CC85400F3BEE1 /* UIView+Dash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Dash.swift"; sourceTree = ""; }; C94D98242A4CC8FD00F3BEE1 /* UIControl+Dash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIControl+Dash.swift"; sourceTree = ""; }; @@ -4200,43 +4184,12 @@ path = Menu; sourceTree = ""; }; - 2A7A7BB32347928B00451078 /* Views */ = { - isa = PBXGroup; - children = ( - 2A7A7BC0234797E700451078 /* Model */, - 2A7A7BB72347948F00451078 /* Cells */, - 75EE38D22CBE9EFC00845FFF /* MainMenuContentView.swift */, - ); - path = Views; - sourceTree = ""; - }; - 2A7A7BB72347948F00451078 /* Cells */ = { - isa = PBXGroup; - children = ( - 2A7A7BBB2347950700451078 /* DWMainMenuTableViewCell.h */, - 2A7A7BBC2347950700451078 /* DWMainMenuTableViewCell.m */, - 2A7A7BBD2347950700451078 /* DWMainMenuTableViewCell.xib */, - ); - path = Cells; - sourceTree = ""; - }; - 2A7A7BC0234797E700451078 /* Model */ = { - isa = PBXGroup; - children = ( - 2A7A7BC1234797FC00451078 /* DWMainMenuModel.h */, - 2A7A7BC2234797FC00451078 /* DWMainMenuModel.m */, - 2A7A7BC42347982A00451078 /* DWMainMenuItem.h */, - ); - path = Model; - sourceTree = ""; - }; 2A7A7BC52347DF7100451078 /* Main */ = { isa = PBXGroup; children = ( - 2A7A7BB32347928B00451078 /* Views */, - 2A7A7BB02347927700451078 /* DWMainMenuViewController.h */, - 2A7A7BB12347927700451078 /* DWMainMenuViewController.m */, - C94946DF2A25EE24008A678D /* DWMainMenuViewControllerDelegate.h */, + 752D03B12E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift */, + 752D03A72E2F758B00B88784 /* MainMenuViewController.swift */, + 752D03A82E2F758B00B88784 /* MainMenuViewModel.swift */, ); path = Main; sourceTree = ""; @@ -4246,10 +4199,8 @@ children = ( 2A7F3B18238C643D00DEA3EF /* Advanced Security */, 2A10EB3F2358D29500C38B61 /* ResetWalletInfo */, - 2A7A7BCB2347F01B00451078 /* DWSecurityMenuViewController.h */, - 2A7A7BCC2347F01B00451078 /* DWSecurityMenuViewController.m */, - 2A7A7BCE2348A34800451078 /* DWSecurityMenuModel.h */, - 2A7A7BCF2348A34800451078 /* DWSecurityMenuModel.m */, + 752F81962E30F55E00ADA76D /* SecurityMenuScreen.swift */, + 752F81972E30F55E00ADA76D /* SecurityMenuViewModel.swift */, ); path = Security; sourceTree = ""; @@ -4259,10 +4210,8 @@ children = ( 2A7A7C13234B761700451078 /* LocalCurrency */, 2A8F420A21BEE69E00858B91 /* About */, - 2A7A7BD52348CB6600451078 /* SettingsMenuViewController.swift */, - 2A7A7BD72348CB7300451078 /* DWSettingsMenuModel.h */, - 2A7A7BD82348CB7300451078 /* DWSettingsMenuModel.m */, - 750CED5F2C94BFD7000FB837 /* SettingsViewModel.swift */, + 2A7A7BD52348CB6600451078 /* SettingsScreen.swift */, + 750CED5F2C94BFD7000FB837 /* SettingsMenuViewModel.swift */, ); path = Settings; sourceTree = ""; @@ -4274,7 +4223,8 @@ 2A8DBA772630A6BE009094BD /* ExtendedKeys */, 2A10EB322358994400C38B61 /* ImportWallet */, FB3FF0B0222641210059A9A5 /* Masternode Keys */, - 7566F4822BB69498005238D2 /* ToolsMenuViewController.swift */, + 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */, + 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */, ); path = Tools; sourceTree = ""; @@ -6195,14 +6145,6 @@ path = "Edit Profile"; sourceTree = ""; }; - 7596091E2C4551E100F3BF04 /* Menu */ = { - isa = PBXGroup; - children = ( - 759063EE2C427324002F2AA9 /* DWMainMenuViewController+DashPay.swift */, - ); - path = Menu; - sourceTree = ""; - }; 7596091F2C45530B00F3BF04 /* Credits */ = { isa = PBXGroup; children = ( @@ -6706,7 +6648,6 @@ C943B34F2A40A54500AF23C5 /* DashPay */ = { isa = PBXGroup; children = ( - 7596091E2C4551E100F3BF04 /* Menu */, 759609192C4550F400F3BF04 /* Setup */, C943B3502A40A54500AF23C5 /* Contacts */, 7596091F2C45530B00F3BF04 /* Credits */, @@ -7992,7 +7933,6 @@ 2A8C24B6233370A600000D43 /* QuickReceive.storyboard in Resources */, 47A514622848FEAD005A8E3E /* Tx.storyboard in Resources */, 2A8F420921BED16300858B91 /* DashSyncCurrentCommit in Resources */, - 2A7A7BBF2347950700451078 /* DWMainMenuTableViewCell.xib in Resources */, 2AD1CE9F22DFBA6C00C99324 /* VerifiedSuccessfully.storyboard in Resources */, 2A4430EB22CBBA82009BAF7F /* Setup.storyboard in Resources */, 752772122AAA1CE30066557E /* Coinbase-Info.plist in Resources */, @@ -8096,7 +8036,6 @@ C9D2C93D2A320AA000D15901 /* QuickReceive.storyboard in Resources */, C9D2C93E2A320AA000D15901 /* Tx.storyboard in Resources */, C9D2C93F2A320AA000D15901 /* DashSyncCurrentCommit in Resources */, - C9D2C9402A320AA000D15901 /* DWMainMenuTableViewCell.xib in Resources */, C9D2C9412A320AA000D15901 /* VerifiedSuccessfully.storyboard in Resources */, C9D2C9422A320AA000D15901 /* Setup.storyboard in Resources */, C9D2C9432A320AA000D15901 /* GoogleService-Info.plist in Resources */, @@ -8556,7 +8495,7 @@ 47AE8C1528C6378E00490F5E /* HairlineView.swift in Sources */, 2A913E9523A3F75F006A2A59 /* DWInitialViewController.m in Sources */, 4751136C28D9A3DB00223B77 /* BuySellPortalViewController.swift in Sources */, - 2A7A7BD62348CB6600451078 /* SettingsMenuViewController.swift in Sources */, + 2A7A7BD62348CB6600451078 /* SettingsScreen.swift in Sources */, 2A0C69DA2314727F001B8C90 /* UISpringTimingParameters+DWInit.m in Sources */, 47C661AD28F972BD00028A8D /* NumberKeyboardButton.swift in Sources */, 11AE3DD82997C599000856EE /* IsDefaultEmail.swift in Sources */, @@ -8577,14 +8516,13 @@ 75FFD6BB2BF48DF80032879E /* HomeViewController+JailbreakCheck.swift in Sources */, 477F50102950A55A003C7508 /* Coinbase+Error.swift in Sources */, 2A63003F2327B4BB00827825 /* DWPaymentOutput+DWView.m in Sources */, - 750CED602C94BFD7000FB837 /* SettingsViewModel.swift in Sources */, + 750CED602C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */, 75D5D5342CC928630049ED7B /* UIHostingController+DashWallet.swift in Sources */, 2ACD53EE234C9D8E00650AD3 /* UIView+DWRecursiveSubview.m in Sources */, 11860923297598B400279FCC /* AddressStatus.swift in Sources */, C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */, C9829CE22A562CEE007132E4 /* TappableTextView.swift in Sources */, 4751CAD5297024EA00F63AC4 /* OrderPreviewViewController.swift in Sources */, - 75EE38D32CBE9EFC00845FFF /* MainMenuContentView.swift in Sources */, 478C982F294305D800FAA0F0 /* ActivePaymentMethodView.swift in Sources */, 47CDEEC72949DC38008AE06D /* BasicInfoController.swift in Sources */, 2AD1CEA822E0C8C900C99324 /* DWPreviewSeedPhraseModel.m in Sources */, @@ -8630,6 +8568,7 @@ C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */, 47F2C6842860513900C2B774 /* TxReclassifyTransactionsWhereToChangeViewController.swift in Sources */, 2A7A7C16234B763600451078 /* DWLocalCurrencyViewController.m in Sources */, + 752D03B22E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift in Sources */, C9F451FD2A0CC4A300825057 /* BadgeView.swift in Sources */, 756557B52CE84FFA0060348D /* FeeInfo.swift in Sources */, C9F451F52A0CAC9400825057 /* HomeHeaderView.swift in Sources */, @@ -8720,6 +8659,7 @@ 114D16B629812730009A124C /* OnlineAccountDetailsController.swift in Sources */, C9F451E92A0BDAE700825057 /* UIApplication+DashWallet.swift in Sources */, 110D1784298E68A8005BEB30 /* OnlineAccountInfoController.swift in Sources */, + 752F81AA2E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */, 470AE1882926600A001A0514 /* PaymentController.swift in Sources */, 751C05DE2D3E39A800475E52 /* TransactionListDataItem.swift in Sources */, 2ADB396C242615C200A6F898 /* CALayer+MBAnimationPersistence.m in Sources */, @@ -8780,7 +8720,6 @@ 2A0C69D723143B2F001B8C90 /* DWBaseModalViewController.m in Sources */, C956AF2D2A5CEA1F002FAB75 /* SheetViewController.swift in Sources */, C9C1335A2A561FFA00B66651 /* PasteboardContentView.swift in Sources */, - 2A7A7BD02348A34800451078 /* DWSecurityMenuModel.m in Sources */, 75050CCF2DF2CB0F00F586D6 /* GiftCardMetadataProvider.swift in Sources */, C909615929F29C9200002D82 /* KeysOverviewCell.swift in Sources */, 2ACCD86E2319609400A96B62 /* UIViewController+DWShareReceiveInfo.m in Sources */, @@ -8881,7 +8820,6 @@ 758A8F172C4D35A80012FA41 /* NSLayoutConstraint+DashWallet.swift in Sources */, 2AD1CE8022DC92BF00C99324 /* NSString+DWTextSize.m in Sources */, 47AE8C0528C1F74A00490F5E /* PointOfUseListFiltersCell.swift in Sources */, - 2A7A7BB22347927700451078 /* DWMainMenuViewController.m in Sources */, 47AE8C1A28C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift in Sources */, 754565CC2DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, 754565CE2DAA52A000DA4E8E /* CTXSpendService.swift in Sources */, @@ -8908,8 +8846,9 @@ 75D2B4A12D9D28AC00228DB0 /* BlockExplorerSelectionView.swift in Sources */, C917023F29D44E0B008C034D /* SendReceivePageController.swift in Sources */, 753FD7E22CA44BDD00B7751F /* CoinJoinProgress.swift in Sources */, - 2A7A7BD92348CB7300451078 /* DWSettingsMenuModel.m in Sources */, 753E46E82DE1E24300A3FF2A /* CTXSpendModels.swift in Sources */, + 752D03AD2E2F758B00B88784 /* MainMenuViewModel.swift in Sources */, + 752D03B02E2F758B00B88784 /* MainMenuViewController.swift in Sources */, 478A2C7228DC909C00AD1420 /* BaseNavigationController.swift in Sources */, 47CDEECC294A2BAD008AE06D /* UIViewController+Coinbase.swift in Sources */, 472D13E1299E1F2F006903F1 /* CSVBuilder.swift in Sources */, @@ -8931,6 +8870,8 @@ 2A74EFF52305333000C475EB /* DWSeedUIConstants.m in Sources */, 2A0C69B32312E8A0001B8C90 /* DWWindow.m in Sources */, 472D13E3299E23B7006903F1 /* BalanceNotifier.swift in Sources */, + 752F819A2E30F55E00ADA76D /* SecurityMenuScreen.swift in Sources */, + 752F819B2E30F55E00ADA76D /* SecurityMenuViewModel.swift in Sources */, 2AD1CE6422D9127600C99324 /* DWSeedWordModel.m in Sources */, 7592AA7C2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift in Sources */, 7503643E2C89D49A0029EC0D /* CoinJoinService.swift in Sources */, @@ -8993,7 +8934,6 @@ 75D6D8E42D96A6DB00E40A6D /* StubTransactionSource.swift in Sources */, 75CDD7802C0898E400F433D2 /* Shape.swift in Sources */, 2A7A7C1D234B771400451078 /* DWLocalCurrencyModel.m in Sources */, - 2A7A7BC3234797FC00451078 /* DWMainMenuModel.m in Sources */, FB8ACEB622E0502200EE5035 /* DWUpholdMainnetConstants.m in Sources */, C9F42FA929DC09CF001BC549 /* Style.swift in Sources */, C917024129D462C6008C034D /* PayViewController.swift in Sources */, @@ -9048,7 +8988,6 @@ 11B8449A28F6D5480082770C /* SingleInputAddressSelector.swift in Sources */, 0F6EDFCF28C896BD000427E7 /* CoinbaseAccountAddress.swift in Sources */, 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */, - 2A7A7BBE2347950700451078 /* DWMainMenuTableViewCell.m in Sources */, 75EBAA092BB9791B004488E3 /* Icon.swift in Sources */, 1141E4C2291BB12200ACDA9E /* CrowdNodeTransferViewController.swift in Sources */, 478483E829629C0700E05A5A /* CBAuthInterop.swift in Sources */, @@ -9081,9 +9020,8 @@ 47B30D80291123D30080C326 /* SendAmountViewController.swift in Sources */, 47CF46A1296540EF0067B6EE /* AccountService.swift in Sources */, 47C6E6E7291A90B3003FEDF2 /* ListHandlerView.swift in Sources */, - 7566F4832BB6949E005238D2 /* ToolsMenuViewController.swift in Sources */, + 7566F4832BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */, 754D020E2D1558EB005CA466 /* GroupedTransactions.swift in Sources */, - 2A7A7BCD2347F01B00451078 /* DWSecurityMenuViewController.m in Sources */, 11BD738128E7356100A34022 /* CrowdNode.swift in Sources */, 47AE8B9F28BFAD8200490F5E /* SQLite+ExloreDash.swift in Sources */, 2A1F6415238FEEA900A9B505 /* DWAdvancedSecurityModel.m in Sources */, @@ -9179,7 +9117,6 @@ C9D2C69E2A320AA000D15901 /* AtmDetailsView.swift in Sources */, C9D2C69F2A320AA000D15901 /* DWPlaceholderFormTableViewCell.m in Sources */, C9D2C6A02A320AA000D15901 /* DWTitleDetailCellView.m in Sources */, - 75EE38D42CBE9EFC00845FFF /* MainMenuContentView.swift in Sources */, C9D2C6A12A320AA000D15901 /* AmountInputControl.swift in Sources */, C9D2C6A22A320AA000D15901 /* DWSegmentSliderFormTableViewCell.m in Sources */, 759609212C4553A400F3BF04 /* BuyCreditsViewController.swift in Sources */, @@ -9202,7 +9139,7 @@ C9D2C6AE2A320AA000D15901 /* DWInitialViewController.m in Sources */, C943B52D2A40A54600AF23C5 /* DWDashPayContactsUpdater.m in Sources */, C9D2C6AF2A320AA000D15901 /* BuySellPortalViewController.swift in Sources */, - C9D2C6B02A320AA000D15901 /* SettingsMenuViewController.swift in Sources */, + C9D2C6B02A320AA000D15901 /* SettingsScreen.swift in Sources */, 751B61C52ADFFD0700D1C2EF /* IntegrationViewController+Uphold.swift in Sources */, C943B5022A40A54600AF23C5 /* DWDPGenericStatusItemView.m in Sources */, C9D2C6B22A320AA000D15901 /* UISpringTimingParameters+DWInit.m in Sources */, @@ -9297,6 +9234,8 @@ C9D2C6F22A320AA000D15901 /* DWSetupViewController.m in Sources */, C9D2C6F32A320AA000D15901 /* ExploreDatabaseConnection.swift in Sources */, C9D2C6F42A320AA000D15901 /* WithdrawalLimitsController.swift in Sources */, + 752D03A92E2F758B00B88784 /* MainMenuViewModel.swift in Sources */, + 752D03AC2E2F758B00B88784 /* MainMenuViewController.swift in Sources */, C943B31B2A408CED00AF23C5 /* DWUpdatingUserProfileView.m in Sources */, C9D2C6F52A320AA000D15901 /* CoinbaseTransactionResponse.swift in Sources */, C943B52F2A40A54600AF23C5 /* DWNotificationsData.m in Sources */, @@ -9352,7 +9291,7 @@ C9D2C7152A320AA000D15901 /* DWBasePayViewController.m in Sources */, C943B4AC2A40A54600AF23C5 /* DWContactsViewController.m in Sources */, C9D2C7162A320AA000D15901 /* CrowdNodeTransferModel.swift in Sources */, - 750CED612C94BFD7000FB837 /* SettingsViewModel.swift in Sources */, + 750CED612C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */, C9D2C7172A320AA000D15901 /* DWSetPinViewController.m in Sources */, C943B3322A408CED00AF23C5 /* DWProfileDisplayNameCellModel.m in Sources */, C9D2C7182A320AA000D15901 /* ConfirmOrderController.swift in Sources */, @@ -9537,7 +9476,6 @@ C9D2C78F2A320AA000D15901 /* CrowdNodeBalance.swift in Sources */, C9D2C7902A320AA000D15901 /* String+DashWallet.swift in Sources */, C9D2C7932A320AA000D15901 /* DWBaseModalViewController.m in Sources */, - C9D2C7942A320AA000D15901 /* DWSecurityMenuModel.m in Sources */, C943B32C2A408CED00AF23C5 /* DWAvatarExternalSourceConfig.m in Sources */, C9D2C7952A320AA000D15901 /* KeysOverviewCell.swift in Sources */, C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */, @@ -9572,7 +9510,7 @@ C9D2C7AB2A320AA000D15901 /* DWBaseFormTableViewCell.m in Sources */, C9D2C7AC2A320AA000D15901 /* AccountCell.swift in Sources */, C9D2C7AD2A320AA000D15901 /* DWTransactionListDataProviderStub.m in Sources */, - 7566F4842BB6949E005238D2 /* ToolsMenuViewController.swift in Sources */, + 7566F4842BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */, C943B33A2A408CED00AF23C5 /* DWUploadAvatarModel.m in Sources */, C943B3392A408CED00AF23C5 /* DWUploadAvatarViewController.m in Sources */, 759609242C455B2000F3BF04 /* SendIntro.swift in Sources */, @@ -9601,6 +9539,8 @@ C9D2C7C22A320AA000D15901 /* (null) in Sources */, C9D2C7C32A320AA000D15901 /* DWDPRegistrationStatus.m in Sources */, C9D2C7C42A320AA000D15901 /* CurrencyExchanger_Objc.m in Sources */, + 752F81982E30F55E00ADA76D /* SecurityMenuScreen.swift in Sources */, + 752F81992E30F55E00ADA76D /* SecurityMenuViewModel.swift in Sources */, 7573C2E12B01103900F4C347 /* VotingFilterItemSelectableCell.swift in Sources */, C943B32B2A408CED00AF23C5 /* DWAvatarExternalLoadingView.m in Sources */, C943B5972A40EDDA00AF23C5 /* DWConfirmUsernameViewController.m in Sources */, @@ -9680,7 +9620,6 @@ C9D2C8052A320AA000D15901 /* IntegrationViewController.swift in Sources */, C9D2C8062A320AA000D15901 /* NSString+DWTextSize.m in Sources */, C9D2C8072A320AA000D15901 /* PointOfUseListFiltersCell.swift in Sources */, - C9D2C80A2A320AA000D15901 /* DWMainMenuViewController.m in Sources */, 7545ED5E2DA91F590075F45C /* CTXSpendTermsScreen.swift in Sources */, 75AA33D02BF9D44A00F12465 /* ButtonsGroup.swift in Sources */, C9D2C80C2A320AA000D15901 /* AllMerchantLocationsDataProvider.swift in Sources */, @@ -9717,7 +9656,6 @@ C9D2C81E2A320AA000D15901 /* DWGlobalOptions.m in Sources */, C9D2C81F2A320AA000D15901 /* AppDelegate.m in Sources */, C9D2C8202A320AA000D15901 /* SendReceivePageController.swift in Sources */, - C9D2C8212A320AA000D15901 /* DWSettingsMenuModel.m in Sources */, C943B5242A40A54600AF23C5 /* UIColor+DWDashPay.m in Sources */, C943B4E82A40A54600AF23C5 /* DWProfileTxsFetchedDataSource.m in Sources */, C9D2C8232A320AA000D15901 /* BaseNavigationController.swift in Sources */, @@ -9824,7 +9762,6 @@ C943B58D2A40ED6F00AF23C5 /* DWCreateUsernameViewController.m in Sources */, C943B58E2A40ED6F00AF23C5 /* DWAllowedCharactersUsernameValidationRule.m in Sources */, C9D2C8742A320AA000D15901 /* DWLocalCurrencyModel.m in Sources */, - C9D2C8752A320AA000D15901 /* DWMainMenuModel.m in Sources */, C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */, C9D2C8792A320AA000D15901 /* Style.swift in Sources */, C9D2C87A2A320AA000D15901 /* PayViewController.swift in Sources */, @@ -9892,7 +9829,6 @@ C9D2C8AD2A320AA000D15901 /* PointOfUseDetailsView.swift in Sources */, C9D2C8AE2A320AA000D15901 /* DSChain+DashWallet.m in Sources */, C9D2C8AF2A320AA000D15901 /* FromLabel.swift in Sources */, - 759063EF2C427324002F2AA9 /* DWMainMenuViewController+DashPay.swift in Sources */, C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */, C9D2C8B12A320AA000D15901 /* SingleInputAddressSelector.swift in Sources */, 757422212DF87B5200CB0175 /* TerritoryPickerView.swift in Sources */, @@ -9902,7 +9838,6 @@ 754565C82DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, 754565CA2DAA52A000DA4E8E /* CTXSpendService.swift in Sources */, 754565CB2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */, - C9D2C8B32A320AA000D15901 /* DWMainMenuTableViewCell.m in Sources */, C930784E2A6AD59E00906E4B /* ConfirmPaymentModel.swift in Sources */, C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */, C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */, @@ -9934,15 +9869,16 @@ C9D2C8CF2A320AA000D15901 /* TwoFactorAuthViewController.swift in Sources */, C9D2C8D02A320AA000D15901 /* Taxes.swift in Sources */, C9D2C8D12A320AA000D15901 /* DWSeedWordModel+DWLayoutSupport.m in Sources */, + 752D03B32E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift in Sources */, C9D2C8D22A320AA000D15901 /* CoinbaseAPIClient.swift in Sources */, C943B4ED2A40A54600AF23C5 /* DWPendingContactInfoView.m in Sources */, C9D2C8D32A320AA000D15901 /* SendAmountViewController.swift in Sources */, 757514E02B15D8DE0026AD8E /* VotingConstants.swift in Sources */, C943B51E2A40A54600AF23C5 /* InvitationTopView.swift in Sources */, C9D2C8D52A320AA000D15901 /* AccountService.swift in Sources */, + 752F81A92E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */, C9D2C8D62A320AA000D15901 /* ListHandlerView.swift in Sources */, C943B5152A40A54600AF23C5 /* DWInvitationTableViewCell.m in Sources */, - C9D2C8D72A320AA000D15901 /* DWSecurityMenuViewController.m in Sources */, C9D2C8D82A320AA000D15901 /* CrowdNode.swift in Sources */, 755B4B232B0C903500B844F0 /* DWDateFormatter.swift in Sources */, C9D2C8D92A320AA000D15901 /* SQLite+ExloreDash.swift in Sources */, @@ -10731,7 +10667,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10753,7 +10689,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10778,7 +10714,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -10805,7 +10741,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -11714,7 +11650,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -11739,7 +11675,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -12023,7 +11959,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -12048,7 +11984,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.4.0; + MARKETING_VERSION = 8.4.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; diff --git a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu.png b/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu.png deleted file mode 100644 index f65f5980d..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@2x.png b/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@2x.png deleted file mode 100644 index d13f537c3..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@2x.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@3x.png b/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@3x.png deleted file mode 100644 index 1949a1f54..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/image.coinjoin.menu@3x.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Contents.json similarity index 65% rename from DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/Contents.json rename to DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Contents.json index f381203f8..dfd25a450 100644 --- a/DashWallet/Resources/AppAssets.xcassets/CoinJoin/image.coinjoin.menu.imageset/Contents.json +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "image.coinjoin.menu.png", + "filename" : "Layer 1.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "image.coinjoin.menu@2x.png", + "filename" : "Layer 1@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "image.coinjoin.menu@3x.png", + "filename" : "Layer 1@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1.png new file mode 100644 index 000000000..bbba7888b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@2x.png new file mode 100644 index 000000000..9aeac7b2b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@3x.png new file mode 100644 index 000000000..719775c2d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/Contents.json similarity index 60% rename from DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/Contents.json rename to DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/Contents.json index bd44fe04b..aed16563f 100644 --- a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/Contents.json +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "filters.png", + "filename" : "dash.logo.circle.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "filters@2x.png", + "filename" : "dash.logo.circle@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "filters@3x.png", + "filename" : "dash.logo.circle@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -19,8 +19,5 @@ "info" : { "author" : "xcode", "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" } } diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle.png new file mode 100644 index 000000000..8bc64879f Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@2x.png new file mode 100644 index 000000000..8b5328a24 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@3x.png new file mode 100644 index 000000000..4e9b32000 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.about.imageset/dash.logo.circle@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/Contents.json new file mode 100644 index 000000000..d89ed0979 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "advanced security.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "advanced security@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "advanced security@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security.png new file mode 100644 index 000000000..ac079b049 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@2x.png new file mode 100644 index 000000000..1bc3ca9dc Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@3x.png new file mode 100644 index 000000000..ce9772a01 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/Contents.json new file mode 100644 index 000000000..f7e769e9b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "eye.closed.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "eye.closed@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "eye.closed@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed.png new file mode 100644 index 000000000..d1382dc7d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@2x.png new file mode 100644 index 000000000..5aef3b052 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@3x.png new file mode 100644 index 000000000..9d3cf765c Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/Contents.json new file mode 100644 index 000000000..966e26ccc --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "buy.sell.dash.2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "buy.sell.dash.2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "buy.sell.dash.2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2.png new file mode 100644 index 000000000..48cfe3d6e Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@2x.png new file mode 100644 index 000000000..ae4b87335 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@3x.png new file mode 100644 index 000000000..bb9b3dd30 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.buy.and.sell.imageset/buy.sell.dash.2@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json new file mode 100644 index 000000000..596ac5b1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer_1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1.png new file mode 100644 index 000000000..f385ea45d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@2x.png new file mode 100644 index 000000000..68d75889c Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@3x.png new file mode 100644 index 000000000..e0cd966d4 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Contents.json new file mode 100644 index 000000000..596ac5b1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer_1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1.png new file mode 100644 index 000000000..cad79f992 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@2x.png new file mode 100644 index 000000000..f02f4103d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@3x.png new file mode 100644 index 000000000..31cddc432 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/Contents.json new file mode 100644 index 000000000..a01df51ed --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "csv.export.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "csv.export@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "csv.export@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export.png new file mode 100644 index 000000000..e35439f22 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@2x.png new file mode 100644 index 000000000..7c1c6807e Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@3x.png new file mode 100644 index 000000000..55ab489a9 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/Contents.json new file mode 100644 index 000000000..d6ea849c9 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "cash.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "cash@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cash@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash.png new file mode 100644 index 000000000..72540cf43 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@2x.png new file mode 100644 index 000000000..7acbaa3c2 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@3x.png new file mode 100644 index 000000000..069368f62 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Contents.json new file mode 100644 index 000000000..edd4331fe --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Explore-Blue.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Explore-Blue@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Explore-Blue@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue.png new file mode 100644 index 000000000..2654567d2 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@2x.png new file mode 100644 index 000000000..2ed46301d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@3x.png new file mode 100644 index 000000000..2c63b1f17 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/Contents.json new file mode 100644 index 000000000..0d62cd039 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "public.key.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "public.key@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "public.key@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key.png new file mode 100644 index 000000000..8f5fb89d8 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@2x.png new file mode 100644 index 000000000..8368cb596 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@3x.png new file mode 100644 index 000000000..b1ee882cf Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/Contents.json new file mode 100644 index 000000000..96215738b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "import.private.key.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "import.private.key@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "import.private.key@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key.png new file mode 100644 index 000000000..88225c719 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@2x.png new file mode 100644 index 000000000..38350b43b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@3x.png new file mode 100644 index 000000000..76eb0b373 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Contents.json new file mode 100644 index 000000000..596ac5b1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer_1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1.png new file mode 100644 index 000000000..b1ce3ee5e Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@2x.png new file mode 100644 index 000000000..a806c426d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@3x.png new file mode 100644 index 000000000..85d3376b9 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Contents.json new file mode 100644 index 000000000..596ac5b1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer_1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1.png new file mode 100644 index 000000000..19e194cca Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@2x.png new file mode 100644 index 000000000..fb96a6968 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@3x.png new file mode 100644 index 000000000..aa571d8d3 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Contents.json new file mode 100644 index 000000000..dfd25a450 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer 1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer 1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer 1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1.png new file mode 100644 index 000000000..923a09d50 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@2x.png new file mode 100644 index 000000000..c1ae793d8 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@3x.png new file mode 100644 index 000000000..694c71127 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Contents.json new file mode 100644 index 000000000..596ac5b1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Layer_1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Layer_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Layer_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1.png new file mode 100644 index 000000000..dc3dab333 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@2x.png new file mode 100644 index 000000000..36809d7fb Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@3x.png new file mode 100644 index 000000000..8f34f844b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/Contents.json new file mode 100644 index 000000000..eda6f37a7 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "rescan.blockchain.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "rescan.blockchain@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "rescan.blockchain@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain.png new file mode 100644 index 000000000..b449425e1 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@2x.png new file mode 100644 index 000000000..d236d7eda Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@3x.png new file mode 100644 index 000000000..d6576fe48 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.rescan.imageset/rescan.blockchain@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/Contents.json new file mode 100644 index 000000000..b63786d1b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "reset wallet.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "reset wallet@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "reset wallet@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet.png new file mode 100644 index 000000000..fc935680f Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@2x.png new file mode 100644 index 000000000..d12e77ef7 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@3x.png new file mode 100644 index 000000000..2cfde1789 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Contents.json new file mode 100644 index 000000000..df240cf11 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector.png new file mode 100644 index 000000000..af7266bf9 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@2x.png new file mode 100644 index 000000000..77258c096 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@3x.png new file mode 100644 index 000000000..e07b49473 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Contents.json new file mode 100644 index 000000000..35aa54dae --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Iconly_x2F_Bold_x2F_Setting.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Iconly_x2F_Bold_x2F_Setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Iconly_x2F_Bold_x2F_Setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting.png new file mode 100644 index 000000000..355bbe4fb Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@2x.png new file mode 100644 index 000000000..50e98d27a Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@3x.png new file mode 100644 index 000000000..2f87971a8 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Contents.json new file mode 100644 index 000000000..c599cc6a9 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group.png new file mode 100644 index 000000000..2446f6ca0 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@2x.png new file mode 100644 index 000000000..0d9a3941f Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@3x.png new file mode 100644 index 000000000..d4f796c37 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Contents.json new file mode 100644 index 000000000..c599cc6a9 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group.png new file mode 100644 index 000000000..66f02d2be Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@2x.png new file mode 100644 index 000000000..f7698c5b4 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@3x.png new file mode 100644 index 000000000..d62517898 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/Contents.json new file mode 100644 index 000000000..9850c6588 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fingerprint.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fingerprint@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fingerprint@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint.png new file mode 100644 index 000000000..7af4d044a Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@2x.png new file mode 100644 index 000000000..0cb3b7cd0 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@3x.png new file mode 100644 index 000000000..fcb2ac93b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters.png b/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters.png deleted file mode 100644 index d4b1b7892..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@2x.png b/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@2x.png deleted file mode 100644 index d54b9ef57..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@2x.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@3x.png b/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@3x.png deleted file mode 100644 index bc3036f4f..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_filter_horizontal.imageset/filters@3x.png and /dev/null differ diff --git a/DashWallet/Sources/Models/Voting/VotingPrefs.swift b/DashWallet/Sources/Models/Voting/VotingPrefs.swift index d12586c5d..dce59b73c 100644 --- a/DashWallet/Sources/Models/Voting/VotingPrefs.swift +++ b/DashWallet/Sources/Models/Voting/VotingPrefs.swift @@ -21,21 +21,6 @@ private let kVotingEnabled = "votingEnabledKey" private let kIsVotingInfoShown = "votingInfoShownKey" private let kVotingPanelClosed = "votingPanelWasClosedKey" -// MARK: - ObjcWrapper - -@objc -class VotingPrefsWrapper: NSObject { - @objc - class func getIsEnabled() -> Bool { - VotingPrefs.shared.votingEnabled - } - - @objc - class func setIsEnabled(value: Bool) { - VotingPrefs.shared.votingEnabled = value - } -} - // MARK: - VotingPrefs class VotingPrefs { diff --git a/DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift b/DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift index d800b8070..3932a8425 100644 --- a/DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift +++ b/DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift @@ -105,6 +105,7 @@ struct GroupedTransactionsScreen: View { self.currentTag = txItem.txHashHexString onShowBackButton(true) } + .frame(minHeight: 66) } } } diff --git a/DashWallet/Sources/UI/DashPay/Menu/DWMainMenuViewController+DashPay.swift b/DashWallet/Sources/UI/DashPay/Menu/DWMainMenuViewController+DashPay.swift deleted file mode 100644 index f0faadb69..000000000 --- a/DashWallet/Sources/UI/DashPay/Menu/DWMainMenuViewController+DashPay.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// Created by PT -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -extension DWMainMenuViewController: RootEditProfileViewControllerDelegate { - func editProfileViewController(_ controller: RootEditProfileViewController, updateDisplayName rawDisplayName: String, aboutMe rawAboutMe: String, avatarURLString: String?) { - guard let view = self.view as? MainMenuContentView else { return } - view.userModel?.updateModel.update(withDisplayName: rawDisplayName, aboutMe: rawAboutMe, avatarURLString: avatarURLString) - controller.dismiss(animated: true, completion: nil) - - if MOCK_DASHPAY.boolValue { - BuyCreditsModel.currentCredits -= 0.25 - let heading: String - let message: String - - if BuyCreditsModel.currentCredits <= 0 { - heading = NSLocalizedString("Your credit balance has been fully depleted", comment: "") - message = NSLocalizedString("You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance", comment: "") - } else if BuyCreditsModel.currentCredits <= 0.25 { - heading = NSLocalizedString("Your credit balance is low", comment: "") - message = NSLocalizedString("Top-up your credits to continue making changes to your profile and adding contacts", comment: "") - } else { - return - } - - showModalDialog(style: .warning, icon: .system("exclamationmark.triangle.fill"), heading: heading, textBlock1: message, positiveButtonText: NSLocalizedString("Buy credits", comment: ""), positiveButtonAction: { - - let vc = BuyCreditsViewController { - self.showToast(text: "Successful purchase", icon: .system("checkmark.circle.fill"), duration: 2) - } - let navigationController = BaseNavigationController(rootViewController: vc) - self.present(navigationController, animated: true) - }, negativeButtonText: NSLocalizedString("Maybe later", comment: "")) - } - } - - func editProfileViewControllerDidCancel(_ controller: RootEditProfileViewController) { - controller.dismiss(animated: true, completion: nil) - } -} diff --git a/DashWallet/Sources/UI/DashPay/Profile/Edit Profile/RootEditProfileViewController.swift b/DashWallet/Sources/UI/DashPay/Profile/Edit Profile/RootEditProfileViewController.swift index 5e00e3c11..d7fbed3cb 100644 --- a/DashWallet/Sources/UI/DashPay/Profile/Edit Profile/RootEditProfileViewController.swift +++ b/DashWallet/Sources/UI/DashPay/Profile/Edit Profile/RootEditProfileViewController.swift @@ -18,18 +18,14 @@ import UIKit #if DASHPAY -@objc(DWRootEditProfileViewControllerDelegate) protocol RootEditProfileViewControllerDelegate: AnyObject { func editProfileViewController(_ controller: RootEditProfileViewController, updateDisplayName rawDisplayName: String, aboutMe rawAboutMe: String, avatarURLString: String?) func editProfileViewControllerDidCancel(_ controller: RootEditProfileViewController) } -@objc(DWRootEditProfileViewController) class RootEditProfileViewController: ActionButtonViewController, DWEditProfileViewControllerDelegate, DWSaveAlertViewControllerDelegate, NavigationBarDisplayable { var isBackButtonHidden: Bool = false - - @objc weak var delegate: RootEditProfileViewControllerDelegate? private var editController: DWEditProfileViewController! var blockchainIdentity: DSBlockchainIdentity? { @@ -110,6 +106,5 @@ class RootEditProfileViewController: ActionButtonViewController, DWEditProfileVi } } #else -@objc(DWRootEditProfileViewControllerDelegate) protocol RootEditProfileViewControllerDelegate: AnyObject { } #endif diff --git a/DashWallet/Sources/UI/DashPay/Voting/UsernameVoting.storyboard b/DashWallet/Sources/UI/DashPay/Voting/UsernameVoting.storyboard index 8bd5ca9c6..eb63badad 100644 --- a/DashWallet/Sources/UI/DashPay/Voting/UsernameVoting.storyboard +++ b/DashWallet/Sources/UI/DashPay/Voting/UsernameVoting.storyboard @@ -37,7 +37,7 @@ - + @@ -620,7 +620,7 @@ - + @@ -646,7 +646,7 @@ - + diff --git a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift index 244caf2d1..a0b40223d 100644 --- a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift +++ b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift @@ -28,8 +28,6 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate, ExploreView delegate?.showPaymentsController(withActivePage: PaymentsViewControllerState.enterAddress.rawValue) case .buySellDash: buySellDashAction() - case .syncNow: - DWSettingsMenuModel.rescanBlockchainAction(from: self, sourceView: sender!, sourceRect: sender!.bounds, completion: nil) case .payWithNFC: performNFCReadingAction() case .localCurrency: @@ -37,12 +35,12 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate, ExploreView case .importPrivateKey: showImportPrivateKey() case .switchToTestnet: - DWSettingsMenuModel.switchToTestnet { success in - // NOP + Task { + await DWEnvironment.sharedInstance().switchToTestnet() } case .switchToMainnet: - DWSettingsMenuModel.switchToMainnet { success in - // NOP + Task { + await DWEnvironment.sharedInstance().switchToMainnet() } case .reportAnIssue: break diff --git a/DashWallet/Sources/UI/Home/Views/Home Balance View/BalanceModel.swift b/DashWallet/Sources/UI/Home/Views/Home Balance View/BalanceModel.swift index 4c4da0a70..d4bb0d47d 100644 --- a/DashWallet/Sources/UI/Home/Views/Home Balance View/BalanceModel.swift +++ b/DashWallet/Sources/UI/Home/Views/Home Balance View/BalanceModel.swift @@ -72,6 +72,7 @@ final class BalanceModel: ObservableObject { } options.userHasBalance = balanceValue > 0 + isBalanceHidden = DWGlobalOptions.sharedInstance().balanceHidden } func toggleBalanceVisibility() { diff --git a/DashWallet/Sources/UI/Home/Views/HomeView.swift b/DashWallet/Sources/UI/Home/Views/HomeView.swift index 71ce594a3..89edbed85 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeView.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeView.swift @@ -442,6 +442,7 @@ struct HomeViewContent: View { self.selectedTxDataItem = txDataItem } } + .frame(minHeight: 66) } } diff --git a/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift b/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift index bb146356d..048e52e03 100644 --- a/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift +++ b/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift @@ -25,7 +25,6 @@ enum ShortcutActionType: Int { case scanToPay case payToAddress case buySellDash - case syncNow case payWithNFC case localCurrency case importPrivateKey @@ -60,11 +59,6 @@ extension ShortcutActionType { fatalError("Image not found for shortcut type: \(self)") } return image - case .syncNow: - guard let image = UIImage(named: "shortcut_syncNow") else { - fatalError("Image not found for shortcut type: \(self)") - } - return image case .payWithNFC: guard let image = UIImage(named: "shortcut_payWithNFC") else { fatalError("Image not found for shortcut type: \(self)") @@ -121,9 +115,6 @@ extension ShortcutActionType { case .buySellDash: return NSLocalizedString("Buy & Sell", comment: "Translate it as short as possible! (24 symbols max)") - case .syncNow: - return NSLocalizedString("Sync Now", - comment: "Translate it as short as possible! (24 symbols max)") case .payWithNFC: return NSLocalizedString("Send with NFC", comment: "Translate it as short as possible! (24 symbols max)") diff --git a/DashWallet/Sources/UI/Main/MainTabbarController.swift b/DashWallet/Sources/UI/Main/MainTabbarController.swift index 8020bdc48..07c160bb6 100644 --- a/DashWallet/Sources/UI/Main/MainTabbarController.swift +++ b/DashWallet/Sources/UI/Main/MainTabbarController.swift @@ -83,7 +83,7 @@ class MainTabbarController: UITabBarController { private var ratesVolatileWarningShown = false weak var homeController: HomeViewController? - weak var menuNavigationController: DWMainMenuViewController? + weak var menuNavigationController: MainMenuViewController? #if DASHPAY weak var contactsNavigationController: DWRootContactsViewController? @@ -239,11 +239,11 @@ extension MainTabbarController { item = UITabBarItem(title: nil, image: MainTabbarTabs.more.icon, selectedImage: MainTabbarTabs.more.selectedIcon) item.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0) - let menuVC: DWMainMenuViewController + let menuVC: MainMenuViewController #if DASHPAY - menuVC = DWMainMenuViewController(dashPayModel: homeModel.dashPayModel, receiveModel: homeModel.receiveModel, dashPayReady: homeModel, userProfileModel: homeModel.dashPayModel.userProfile) + menuVC = MainMenuViewController(dashPayModel: homeModel.dashPayModel, receiveModel: homeModel.receiveModel, dashPayReady: homeModel, userProfileModel: homeModel.dashPayModel.userProfile) #else - menuVC = DWMainMenuViewController() + menuVC = MainMenuViewController() #endif menuVC.delegate = self @@ -334,18 +334,18 @@ extension MainTabbarController { #endif } -// MARK: DWMainMenuViewControllerDelegate +// MARK: MainMenuViewControllerDelegate -extension MainTabbarController: DWMainMenuViewControllerDelegate { - func mainMenuViewControllerImportPrivateKey(_ controller: DWMainMenuViewController) { +extension MainTabbarController: MainMenuViewControllerDelegate { + func mainMenuViewControllerImportPrivateKey() { performScanQRCodeAction() } - - func mainMenuViewControllerOpenHomeScreen(_ controller: DWMainMenuViewController) { + + func mainMenuViewControllerOpenHomeScreen() { selectedIndex = MainTabbarTabs.home.rawValue } - func showGiftCard(_ txId: Data!) { + func showGiftCard(_ txId: Data) { selectedIndex = MainTabbarTabs.home.rawValue homeController?.showGiftCardDetails(txId: txId) } diff --git a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.h b/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.h deleted file mode 100644 index 33ad6476d..000000000 --- a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -#import "DWWipeDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - -@class DWMainMenuViewController; -@protocol DWMainMenuViewControllerDelegate; -@protocol DWReceiveModelProtocol; -@class DWCurrentUserProfileModel; -@protocol DWDashPayReadyProtocol; -@protocol DWDashPayProtocol; - -@interface DWMainMenuViewController : UIViewController - -@property (nullable, nonatomic, weak) id delegate; - -#if DASHPAY -- (instancetype)initWithDashPayModel:(id)dashPayModel - receiveModel:(id)receiveModel - dashPayReady:(id)dashPayReady - userProfileModel:(DWCurrentUserProfileModel *)userProfileModel; -#endif - -- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE; -- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.m b/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.m deleted file mode 100644 index a3f707f4a..000000000 --- a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewController.m +++ /dev/null @@ -1,287 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWMainMenuViewController.h" - -#import -#import - -#import "DWAboutModel.h" -#import "DWGlobalOptions.h" -#import "DWMainMenuModel.h" -#import "DWSecurityMenuViewController.h" -#import "SFSafariViewController+DashWallet.h" -#import "dashwallet-Swift.h" - -#ifdef DASHPAY -#import "DWInvitationHistoryViewController.h" -#import "DWUserProfileModalQRViewController.h" -#endif - -NS_ASSUME_NONNULL_BEGIN - -@interface DWMainMenuViewController () - -@property (nonatomic, strong) DWMainMenuContentView *view; -@property (nonatomic, strong) id receiveModel; -#if DASHPAY -@property (nonatomic, strong) id dashPayReady; -@property (nonatomic, strong) id dashPayModel; -@property (nonatomic, strong) DWCurrentUserProfileModel *userProfileModel; -#endif - -@end - -@implementation DWMainMenuViewController - -@dynamic view; - -- (instancetype)init { - self = [super initWithNibName:nil bundle:nil]; - if (self) { - self.title = NSLocalizedString(@"More", nil); - } - return self; -} - -#if DASHPAY -- (instancetype)initWithDashPayModel:(id)dashPayModel - receiveModel:(id)receiveModel - dashPayReady:(id)dashPayReady - userProfileModel:(DWCurrentUserProfileModel *)userProfileModel { - self = [super initWithNibName:nil bundle:nil]; - if (self) { - _receiveModel = receiveModel; - _dashPayReady = dashPayReady; - _dashPayModel = dashPayModel; - _userProfileModel = userProfileModel; - - self.title = NSLocalizedString(@"More", nil); - } - return self; -} -#endif - -- (void)loadView { - const CGRect frame = [UIScreen mainScreen].bounds; - self.view = [[DWMainMenuContentView alloc] initWithFrame:frame]; - self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - self.view.delegate = self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - -#if DASHPAY - self.view.userModel = self.userProfileModel; -#endif -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever; - -#ifdef DASHPAY - BOOL invitationsEnabled = ([DWGlobalOptions sharedInstance].dpInvitationFlowEnabled && (self.userProfileModel.blockchainIdentity != nil)); - - NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; - BOOL isVotingEnabled = [VotingPrefsWrapper getIsEnabled]; - self.view.model = [[DWMainMenuModel alloc] initWithInvitesEnabled:invitationsEnabled votingEnabled:isVotingEnabled]; - [self.view updateUserHeader]; -#else - self.view.model = [[DWMainMenuModel alloc] initWithInvitesEnabled:NO votingEnabled:NO]; -#endif -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return UIStatusBarStyleLightContent; -} - -#pragma mark - DWMainMenuContentViewDelegate - -- (void)mainMenuContentView:(DWMainMenuContentView *)view didSelectMenuItem:(id)item { - switch (item.type) { - case DWMainMenuItemType_BuySellDash: { - [[DSAuthenticationManager sharedInstance] - authenticateWithPrompt:nil - usingBiometricAuthentication:[DWGlobalOptions sharedInstance].biometricAuthEnabled - alertIfLockout:YES - completion:^(BOOL authenticated, BOOL usedBiometrics, BOOL cancelled) { - if (authenticated) { - BuySellPortalViewController *controller = [BuySellPortalViewController controller]; - controller.hidesBottomBarWhenPushed = true; - [self.navigationController pushViewController:controller animated:YES]; - } - }]; - - break; - } - case DWMainMenuItemType_Explore: { - DWExploreViewController *controller = [[DWExploreViewController alloc] init]; - controller.delegate = self; - DWNavigationController *nvc = [[DWNavigationController alloc] initWithRootViewController:controller]; - [self presentViewController:nvc animated:YES completion:nil]; - - break; - } - case DWMainMenuItemType_Security: { - DWSecurityMenuViewController *controller = [[DWSecurityMenuViewController alloc] init]; - controller.delegate = self.delegate; - [self.navigationController pushViewController:controller animated:YES]; - - break; - } - case DWMainMenuItemType_Settings: { - DWSettingsMenuViewController *controller = [[DWSettingsMenuViewController alloc] init]; - controller.delegate = self; - [self.navigationController pushViewController:controller animated:YES]; - - break; - } - case DWMainMenuItemType_Tools: { - DWToolsMenuViewController *controller = [[DWToolsMenuViewController alloc] init]; - controller.delegate = self; - [self.navigationController pushViewController:controller animated:YES]; - - break; - } - case DWMainMenuItemType_Support: { - [self presentSupportEmailController]; - break; - } -#if DASHPAY - case DWMainMenuItemType_Invite: { - DWInvitationHistoryViewController *controller = [[DWInvitationHistoryViewController alloc] init]; - controller.hidesBottomBarWhenPushed = YES; - [self.navigationController pushViewController:controller animated:YES]; - break; - } - case DWMainMenuItemType_Voting: { - UsernameVotingViewController *controller = [UsernameVotingViewController controller]; - controller.hidesBottomBarWhenPushed = YES; - [self.navigationController pushViewController:controller animated:YES]; - break; - } -#endif - } -} - - -#if DASHPAY -- (void)mainMenuContentViewWithShowQRAction:(DWMainMenuContentView *_Nonnull)view { - DWUserProfileModalQRViewController *controller = [[DWUserProfileModalQRViewController alloc] initWithModel:self.receiveModel]; - [self presentViewController:controller animated:YES completion:nil]; -} - -- (void)mainMenuContentViewWithEditProfileAction:(DWMainMenuContentView *_Nonnull)view { - DWRootEditProfileViewController *controller = [[DWRootEditProfileViewController alloc] init]; - controller.delegate = self; - DWNavigationController *navigation = [[DWNavigationController alloc] initWithRootViewController:controller]; - navigation.modalPresentationStyle = UIModalPresentationFullScreen; - [self presentViewController:navigation animated:YES completion:nil]; -} - -- (void)mainMenuContentViewWithJoinDashPayAction:(DWMainMenuContentView *_Nonnull)view { - CreateUsernameViewController *controller = - [[CreateUsernameViewController alloc] - initWithDashPayModel:self.dashPayModel - invitationURL:nil - definedUsername:nil]; - controller.hidesBottomBarWhenPushed = YES; - controller.completionHandler = ^(BOOL result) { - if (result) { - [self.view dw_showInfoHUDWithText:NSLocalizedString(@"Username was successfully requested", @"Usernames") offsetForNavBar:YES]; - } - else { - [self.view dw_showInfoHUDWithText:NSLocalizedString(@"Your request was cancelled", @"Usernames") offsetForNavBar:YES]; - } - }; - [self.navigationController pushViewController:controller animated:YES]; -} - -- (void)mainMenuContentViewWithShowCoinJoin:(DWMainMenuContentView *_Nonnull)view { - CoinJoinLevelsViewController *controller = [CoinJoinLevelsViewController controllerWithIsFullScreen:NO]; - controller.hidesBottomBarWhenPushed = YES; - [self.navigationController pushViewController:controller animated:YES]; -} - -- (void)mainMenuContentViewWithShowRequestDetails:(DWMainMenuContentView *)view { - RequestDetailsViewController *controller = [RequestDetailsViewController controller]; - controller.hidesBottomBarWhenPushed = YES; - [self.navigationController pushViewController:controller animated:YES]; -} - -#endif - -#pragma mark - DWToolsMenuViewControllerDelegate - -- (void)toolsMenuViewControllerImportPrivateKey:(DWToolsMenuViewController *)controller { - [self.navigationController popToRootViewControllerAnimated:NO]; - [self.delegate mainMenuViewControllerImportPrivateKey:self]; -} - -#pragma mark - DWSettingsMenuViewControllerDelegate - -- (void)settingsMenuViewControllerDidRescanBlockchain:(DWSettingsMenuViewController *)controller { - [self.navigationController popToRootViewControllerAnimated:NO]; - [self.delegate mainMenuViewControllerOpenHomeScreen:self]; -} - -#pragma mark - DWExploreTestnetViewControllerDelegate -- (void)exploreViewControllerShowSendPayment:(DWExploreViewController *)controller { - [self.delegate showPaymentsControllerWithActivePage:DWPaymentsViewControllerIndex_Pay]; -} - -- (void)exploreViewControllerShowReceivePayment:(DWExploreViewController *)controller { - [self.delegate showPaymentsControllerWithActivePage:DWPaymentsViewControllerIndex_Receive]; -} - -- (void)exploreViewControllerShowGiftCard:(DWExploreViewController *)controller txId:(NSData *)txId { - [self.delegate showGiftCard:txId]; -} - -#pragma mark - DWRootEditProfileViewControllerDelegate - -#if DASHPAY -- (void)editProfileViewController:(DWRootEditProfileViewController *)controller - updateDisplayName:(NSString *)rawDisplayName - aboutMe:(NSString *)rawAboutMe - avatarURLString:(nullable NSString *)avatarURLString { - [self.view.userModel.updateModel updateWithDisplayName:rawDisplayName aboutMe:rawAboutMe avatarURLString:avatarURLString]; - [controller dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)editProfileViewControllerDidCancel:(DWRootEditProfileViewController *)controller { - [controller dismissViewControllerAnimated:YES completion:nil]; -} -#endif - -#pragma mark - MFMailComposeViewControllerDelegate - -- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error { - [controller dismissViewControllerAnimated:YES completion:nil]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewControllerDelegate.h b/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewControllerDelegate.h deleted file mode 100644 index bb11c35ae..000000000 --- a/DashWallet/Sources/UI/Menu/Main/DWMainMenuViewControllerDelegate.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by PT -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -#ifndef DWMainMenuViewControllerDelegate_h -#define DWMainMenuViewControllerDelegate_h - -@protocol DWMainMenuViewControllerDelegate - -- (void)mainMenuViewControllerImportPrivateKey:(DWMainMenuViewController *)controller; -- (void)mainMenuViewControllerOpenHomeScreen:(DWMainMenuViewController *)controller; -- (void)showPaymentsControllerWithActivePage:(NSInteger)pageIndex; -- (void)showGiftCard:(NSData *)txId; - -@end - -#endif /* DWMainMenuViewControllerDelegate_h */ diff --git a/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift b/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift new file mode 100644 index 000000000..6e397e303 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift @@ -0,0 +1,598 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2024 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import SwiftUI +import MessageUI + +class MainMenuViewController: UIViewController { + + // MARK: - Properties + + weak var delegate: DWWipeDelegate? + + private var hostingController: UIHostingController! + + #if DASHPAY + private let receiveModel: DWReceiveModelProtocol? + private let dashPayReady: DWDashPayReadyProtocol? + private let dashPayModel: DWDashPayProtocol? + private let userProfileModel: CurrentUserProfileModel? + #endif + + // MARK: - Initialization + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + #if DASHPAY + self.receiveModel = nil + self.dashPayReady = nil + self.dashPayModel = nil + self.userProfileModel = nil + #endif + + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + } + + #if DASHPAY + init(dashPayModel: DWDashPayProtocol, + receiveModel: DWReceiveModelProtocol, + dashPayReady: DWDashPayReadyProtocol, + userProfileModel: CurrentUserProfileModel) { + self.receiveModel = receiveModel + self.dashPayReady = dashPayReady + self.dashPayModel = dashPayModel + self.userProfileModel = userProfileModel + + super.init(nibName: nil, bundle: nil) + } + #endif + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - View Lifecycle + + override func loadView() { + super.loadView() + setupSwiftUIView() + } + + override func viewDidLoad() { + super.viewDidLoad() + // Navigation is now handled in SwiftUI + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + + // MARK: - SwiftUI Setup + + private func setupSwiftUIView() { + #if DASHPAY + let swiftUIView = MainMenuScreen( + vc: navigationController!, + delegate: delegate as? MainMenuViewControllerDelegate, + wipeDelegate: delegate, + dashPayModel: dashPayModel, + dashPayReady: dashPayReady, + userProfileModel: userProfileModel + ) { + self.presentSupportEmailController() + } + #else + let swiftUIView = MainMenuScreen( + vc: navigationController!, + delegate: delegate as? MainMenuViewControllerDelegate, + wipeDelegate: delegate + ) { + self.presentSupportEmailController() + } + #endif + + hostingController = UIHostingController(rootView: swiftUIView) + + addChild(hostingController) + view.addSubview(hostingController.view) + hostingController.didMove(toParent: self) + + hostingController.view.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + hostingController.view.topAnchor.constraint(equalTo: view.topAnchor), + hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), + hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), + hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ]) + } +} + + +// MARK: - MFMailComposeViewControllerDelegate + +extension MainMenuViewController: MFMailComposeViewControllerDelegate { + func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { + controller.dismiss(animated: true) + } +} + +struct MainMenuScreen: View { + private let vc: UINavigationController + private let delegateInternal: DelegateInternal + private let onContactSupport: () -> () + + @ObservedObject private var viewModel: MainMenuViewModel + @State private var openSettings: Bool = false + @State private var showTools: Bool = false + @State private var showSecurity: Bool = false + @State private var showMixDialog: Bool = false + @State private var showDashPayInfo: Bool = false + @State private var showCreditsPurchasedToast: Bool = false + + #if DASHPAY + private let joinDPViewModel = JoinDashPayViewModel(initialState: .none) + + init( + vc: UINavigationController, + delegate: MainMenuViewControllerDelegate? = nil, + wipeDelegate: DWWipeDelegate? = nil, + dashPayModel: DWDashPayProtocol? = nil, + dashPayReady: DWDashPayReadyProtocol? = nil, + userProfileModel: CurrentUserProfileModel? = nil, + onContactSupport: @escaping () -> () + ) { + self.vc = vc + self.onContactSupport = onContactSupport + let viewModel = MainMenuViewModel( + dashPayModel: dashPayModel, + dashPayReady: dashPayReady, + userProfileModel: userProfileModel + ) + self.delegateInternal = DelegateInternal( + delegate: delegate, + wipeDelegate: wipeDelegate, + viewModel: viewModel, + showCreditsWarning: { [weak viewModel] heading, message in + viewModel?.showCreditsWarning(heading: heading, message: message) + } + ) + self.viewModel = viewModel + } + #else + + init( + vc: UINavigationController, + delegate: MainMenuViewControllerDelegate? = nil, + wipeDelegate: DWWipeDelegate? = nil, + onContactSupport: @escaping () -> () + ) { + self.vc = vc + self.onContactSupport = onContactSupport + let viewModel = MainMenuViewModel() + self.delegateInternal = DelegateInternal( + delegate: delegate, + wipeDelegate: wipeDelegate, + viewModel: viewModel, + showCreditsWarning: { _, _ in } + ) + self.viewModel = viewModel + } + #endif + + + var body: some View { + ScrollView { + LazyVStack(alignment: .leading, spacing: 20) { + // Header + HStack { + Text(NSLocalizedString("More", comment: "")) + .font(.title) + .fontWeight(.bold) + .foregroundColor(.primaryText) + Spacer() + } + .padding(.horizontal, 20) + .padding(.top, 5) + + #if DASHPAY + if viewModel.userProfileModel?.showJoinDashpay == true { + JoinDashPayView( + viewModel: joinDPViewModel, + onTap: { state in + handleJoinDashPayTap(state: state) + }, + onActionButton: { state in + handleJoinDashPayAction(state: state) + }, + onDismissButton: { state in + joinDPViewModel.markAsDismissed() + } + ) + .padding(.horizontal, 18) + } + #endif + + // Menu items grouped in sections + VStack(spacing: 16) { + // First group - main services (first 2 items) + if viewModel.items.count >= 2 { + VStack(spacing: 0) { + ForEach(viewModel.items.prefix(2)) { item in + MenuItem( + title: item.title, + subtitle: item.subtitle, + icon: item.icon, + showChevron: false, + action: item.action + ) + .frame(minHeight: 60) + } + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + } + + // Second group - settings items (remaining items) + if viewModel.items.count > 2 { + VStack(spacing: 0) { + ForEach(viewModel.items.dropFirst(2)) { item in + MenuItem( + title: item.title, + subtitle: item.subtitle, + icon: item.icon, + showChevron: false, + action: item.action + ) + .frame(minHeight: 60) + } + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + } + } + .padding(.horizontal, 20) + + Spacer(minLength: 60) + } + + if showCreditsPurchasedToast { + ToastView( + text: NSLocalizedString("Successful purchase", comment: ""), + icon: .system("checkmark.circle.fill") + ) + .frame(height: 20) + .padding(.bottom, 30) + } + + #if DASHPAY + if viewModel.showCreditsWarning { + ModalDialog( + style: .warning, + icon: .system("exclamationmark.triangle.fill"), + heading: viewModel.creditsWarningHeading, + textBlock1: viewModel.creditsWarningMessage, + positiveButtonText: NSLocalizedString("Buy credits", comment: ""), + positiveButtonAction: { + let viewController = BuyCreditsViewController { + self.showCreditsPurchasedToast = true + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + self.showCreditsPurchasedToast = false + } + } + let navigationController = BaseNavigationController(rootViewController: viewController) + vc.present(navigationController, animated: true) + }, + negativeButtonText: NSLocalizedString("Maybe later", comment: "") + ) + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(Color.black.opacity(0.7)) + .edgesIgnoringSafeArea(.all) + } + #endif + + NavigationLink( + destination: SettingsScreen(vc: vc, onDidRescan: { + self.vc.popToRootViewController(animated: false) + self.delegateInternal.mainMenuViewControllerOpenHomeScreen() + }), + isActive: $openSettings + ) { + EmptyView() + } + + NavigationLink( + destination: ToolsMenuScreen(vc: vc, onImportPrivateKey: { + self.vc.popToRootViewController(animated: false) + self.delegateInternal.mainMenuViewControllerImportPrivateKey() + }), + isActive: $showTools + ) { + EmptyView() + } + + NavigationLink( + destination: SecurityMenuScreen(vc: vc), + isActive: $showSecurity + ) { + EmptyView() + } + } + .background(Color.primaryBackground) + .onAppear { + viewModel.buildMenuSections() + } + .onReceive(viewModel.$navigationDestination) { destination in + handleNavigation(destination) + } + #if DASHPAY + .sheet(isPresented: $showMixDialog) { + let dialog = MixDashDialog( + positiveAction: { + let controller = CoinJoinLevelsViewController.controller(isFullScreen: false) + controller.hidesBottomBarWhenPushed = true + self.vc.pushViewController(controller, animated: true) + }, + negativeAction: { + if UsernamePrefs.shared.joinDashPayInfoShown { + self.joinDashPay() + } else { + UsernamePrefs.shared.joinDashPayInfoShown = true + showDashPayInfo = true + } + } + ) + + if #available(iOS 16.0, *) { + dialog.presentationDetents([.height(250)]) + } else { + dialog + } + } + .sheet(isPresented: $showDashPayInfo) { + let dialog = JoinDashPayInfoDialog { + self.joinDashPay() + } + + if #available(iOS 16.0, *) { + dialog.presentationDetents([.height(600)]) + } else { + dialog + } + } + #endif + } + + #if DASHPAY + private func handleJoinDashPayTap(state: JoinDashPayState) { + switch state { + case .registered: + editProfile() + case .voting: + showRequestDetails() + case .none: + handleJoinButtonAction() + default: + break + } + } + + private func handleJoinDashPayAction(state: JoinDashPayState) { + switch state { + case .blocked, .failed, .contested: + handleJoinButtonAction() + default: + editProfile() + joinDPViewModel.markAsDismissed() + } + } + + private func handleJoinButtonAction() { + let shouldShowMixDashDialog = CoinJoinService.shared.mode == .none || !UsernamePrefs.shared.mixDashShown + let shouldShowDashPayInfo = !UsernamePrefs.shared.joinDashPayInfoShown + + if shouldShowMixDashDialog { + showMixDialog = true + } else if shouldShowDashPayInfo { + showDashPayInfo = true + } else { + joinDashPay() + } + } + #endif + + private func handleNavigation(_ destination: MainMenuNavigationDestination?) { + switch destination { + case .buySellPortal: + showBuySellPortal() + case .explore: + showExplore() + case .security: + showSecurity = true + case .settings: + openSettings = true + case .tools: + showTools = true + case .support: + onContactSupport() + #if DASHPAY + case .invite: + showInvite() + case .voting: + showVoting() + #endif + case .none: + return + } + + // Reset navigation destination after handling + if destination != nil { + viewModel.resetNavigation() + } + } + + // MARK: - Navigation Methods + + private func showBuySellPortal() { + let controller = BuySellPortalViewController.controller() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func showExplore() { + let controller = ExploreViewController() + controller.delegate = delegateInternal + let navigationController = BaseNavigationController(rootViewController: controller) + vc.present(navigationController, animated: true) + } + + #if DASHPAY + private func showInvite() { + let controller = DWInvitationHistoryViewController() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func showVoting() { + let controller = UsernameVotingViewController.controller() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func editProfile() { + let controller = RootEditProfileViewController() + controller.delegate = delegateInternal + let navigation = BaseNavigationController(rootViewController: controller) + navigation.modalPresentationStyle = .fullScreen + vc.present(navigation, animated: true) + } + + private func showRequestDetails() { + let controller = RequestDetailsViewController.controller() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func joinDashPay() { + guard let dashPayModel = viewModel.dashPayModel else { return } + + let controller = CreateUsernameViewController( + dashPayModel: dashPayModel, + invitationURL: nil, + definedUsername: nil + ) + controller.hidesBottomBarWhenPushed = true + controller.completionHandler = { result in + let message = result + ? NSLocalizedString("Username was successfully requested", comment: "Usernames") + : NSLocalizedString("Your request was cancelled", comment: "Usernames") + + // Find the root view controller to show HUD + if let rootVC = self.vc.viewControllers.first { + rootVC.view.dw_showInfoHUD(withText: message, offsetForNavBar: true) + } + } + vc.pushViewController(controller, animated: true) + } + #endif +} + + +extension MainMenuScreen { + class DelegateInternal: NSObject, RootEditProfileViewControllerDelegate, ExploreViewControllerDelegate { + private weak var delegate: MainMenuViewControllerDelegate? + private weak var wipeDelegate: DWWipeDelegate? + private let viewModel: MainMenuViewModel + private let showCreditsWarning: (String, String) -> Void + + init(delegate: MainMenuViewControllerDelegate?, wipeDelegate: DWWipeDelegate?, viewModel: MainMenuViewModel, showCreditsWarning: @escaping (String, String) -> Void) { + self.delegate = delegate + self.wipeDelegate = wipeDelegate + self.viewModel = viewModel + self.showCreditsWarning = showCreditsWarning + } + + func mainMenuViewControllerOpenHomeScreen() { + if let delegate = delegate { + delegate.mainMenuViewControllerOpenHomeScreen() + } + } + + func mainMenuViewControllerImportPrivateKey() { + if let delegate = delegate { + delegate.mainMenuViewControllerImportPrivateKey() + } + } + + func showPaymentsController(withActivePage pageIndex: Int) { + delegate?.showPaymentsController(withActivePage: pageIndex) + } + + func showGiftCard(_ txId: Data) { + delegate?.showGiftCard(txId) + } + + func exploreViewControllerShowSendPayment(_ controller: ExploreViewController) { + showPaymentsController(withActivePage: PaymentsViewControllerState.pay.rawValue) + } + + func exploreViewControllerShowReceivePayment(_ controller: ExploreViewController) { + showPaymentsController(withActivePage: PaymentsViewControllerState.receive.rawValue) + } + + func exploreViewControllerShowGiftCard(_ controller: ExploreViewController, txId: Data) { + showGiftCard(txId) + } + + #if DASHPAY + func editProfileViewController(_ controller: RootEditProfileViewController, + updateDisplayName rawDisplayName: String, + aboutMe rawAboutMe: String, + avatarURLString: String?) { + #if DASHPAY + viewModel.userProfileModel?.updateModel.update(withDisplayName: rawDisplayName, aboutMe: rawAboutMe, avatarURLString: avatarURLString) + + if MOCK_DASHPAY.boolValue { + BuyCreditsModel.currentCredits -= 0.25 + let heading: String + let message: String + + if BuyCreditsModel.currentCredits <= 0 { + heading = NSLocalizedString("Your credit balance has been fully depleted", comment: "") + message = NSLocalizedString("You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance", comment: "") + } else if BuyCreditsModel.currentCredits <= 0.25 { + heading = NSLocalizedString("Your credit balance is low", comment: "") + message = NSLocalizedString("Top-up your credits to continue making changes to your profile and adding contacts", comment: "") + } else { + return + } + + showCreditsWarning(heading, message) + } + #endif + controller.dismiss(animated: true) + } + + func editProfileViewControllerDidCancel(_ controller: RootEditProfileViewController) { + controller.dismiss(animated: true) + } + #endif + } +} diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.h b/DashWallet/Sources/UI/Menu/Main/MainMenuViewControllerDelegate.swift similarity index 61% rename from DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.h rename to DashWallet/Sources/UI/Menu/Main/MainMenuViewControllerDelegate.swift index d476f0034..9ee0e4624 100644 --- a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.h +++ b/DashWallet/Sources/UI/Menu/Main/MainMenuViewControllerDelegate.swift @@ -1,6 +1,6 @@ // -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. +// Created by PT +// Copyright © 2023 Dash Core Group. All rights reserved. // // Licensed under the MIT License (the "License"); // you may not use this file except in compliance with the License. @@ -15,16 +15,11 @@ // limitations under the License. // -#import +import Foundation -#import "DWMainMenuItem.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface DWMainMenuTableViewCell : UITableViewCell - -@property (nullable, nonatomic, strong) id model; - -@end - -NS_ASSUME_NONNULL_END +protocol MainMenuViewControllerDelegate: AnyObject { + func mainMenuViewControllerImportPrivateKey() + func mainMenuViewControllerOpenHomeScreen() + func showPaymentsController(withActivePage pageIndex: Int) + func showGiftCard(_ txId: Data) +} diff --git a/DashWallet/Sources/UI/Menu/Main/MainMenuViewModel.swift b/DashWallet/Sources/UI/Menu/Main/MainMenuViewModel.swift new file mode 100644 index 000000000..dccbe33a4 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Main/MainMenuViewModel.swift @@ -0,0 +1,171 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2025 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import Combine + +enum MainMenuNavigationDestination { + case buySellPortal + case explore + case security + case settings + case tools + case support + #if DASHPAY + case invite + case voting + #endif +} + +protocol MainMenuViewModelDelegate: AnyObject { + func mainMenuViewModelImportPrivateKey() + func mainMenuViewModelOpenHomeScreen() + func showPaymentsController(with pageIndex: Int) + func showGiftCard(_ txId: Data) +} + +@MainActor +class MainMenuViewModel: ObservableObject { + + @Published var items: [MenuItemModel] = [] + @Published var navigationDestination: MainMenuNavigationDestination? + @Published var showCreditsWarning: Bool = false + @Published var creditsWarningHeading: String = "" + @Published var creditsWarningMessage: String = "" + + #if DASHPAY + let dashPayReady: DWDashPayReadyProtocol? + let dashPayModel: DWDashPayProtocol? + let userProfileModel: CurrentUserProfileModel? + #endif + + weak var delegate: MainMenuViewModelDelegate? + + #if DASHPAY + init(dashPayModel: DWDashPayProtocol? = nil, + dashPayReady: DWDashPayReadyProtocol? = nil, + userProfileModel: CurrentUserProfileModel? = nil) { + self.dashPayModel = dashPayModel + self.dashPayReady = dashPayReady + self.userProfileModel = userProfileModel + buildMenuSections() + } + #else + init() { + buildMenuSections() + } + #endif + + // MARK: - Menu Building + + func buildMenuSections() { + var allItems: [MenuItemModel] = [] + + // Buy & Sell Dash + allItems.append(MenuItemModel( + title: NSLocalizedString("Buy & Sell Dash", comment: ""), + icon: .custom("image.buy.and.sell", maxHeight: 22), + action: { [weak self] in + self?.handleBuySellDash() + } + )) + + // Explore + allItems.append(MenuItemModel( + title: NSLocalizedString("Explore", comment: ""), + icon: .custom("image.explore", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .explore + } + )) + + // Security + allItems.append(MenuItemModel( + title: NSLocalizedString("Security", comment: ""), + icon: .custom("image.security", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .security + } + )) + + // Settings + allItems.append(MenuItemModel( + title: NSLocalizedString("Settings", comment: ""), + icon: .custom("image.settings", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .settings + } + )) + + // Tools + allItems.append(MenuItemModel( + title: NSLocalizedString("Tools", comment: ""), + icon: .custom("image.tools", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .tools + } + )) + + // Support + allItems.append(MenuItemModel( + title: NSLocalizedString("Support", comment: ""), + icon: .custom("image.support", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .support + } + )) + + #if DASHPAY + // Voting + if VotingPrefs.shared.votingEnabled { + allItems.append(MenuItemModel( + title: NSLocalizedString("Voting", comment: ""), + icon: .custom("menu_voting", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .voting + } + )) + } + #endif + + self.items = allItems + } + + // MARK: - Actions + + private func handleBuySellDash() { + DSAuthenticationManager.sharedInstance().authenticate( + withPrompt: nil, + usingBiometricAuthentication: DWGlobalOptions.sharedInstance().biometricAuthEnabled, + alertIfLockout: true + ) { [weak self] authenticated, usedBiometrics, cancelled in + if authenticated { + self?.navigationDestination = .buySellPortal + } + } + } + + func resetNavigation() { + navigationDestination = nil + } + + func showCreditsWarning(heading: String, message: String) { + creditsWarningHeading = heading + creditsWarningMessage = message + showCreditsWarning = true + } +} diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.m b/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.m deleted file mode 100644 index 04e813729..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.m +++ /dev/null @@ -1,122 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWMainMenuTableViewCell.h" - -#import "DWUIKit.h" - -NS_ASSUME_NONNULL_BEGIN - -static UIImage *ImageByType(DWMainMenuItemType type) { - switch (type) { - case DWMainMenuItemType_BuySellDash: - return [UIImage imageNamed:@"menu_buySellDash"]; - case DWMainMenuItemType_Explore: - return [UIImage imageNamed:@"shortcut_explore"]; - case DWMainMenuItemType_Security: - return [UIImage imageNamed:@"menu_security"]; - case DWMainMenuItemType_Settings: - return [UIImage imageNamed:@"menu_settings"]; - case DWMainMenuItemType_Tools: - return [UIImage imageNamed:@"menu_tools"]; - case DWMainMenuItemType_Support: - return [UIImage imageNamed:@"menu_support"]; - case DWMainMenuItemType_Invite: - return [UIImage imageNamed:@"menu_invite"]; - case DWMainMenuItemType_Voting: - return [UIImage imageNamed:@"menu_voting"]; - } -} - -static NSString *TitleByType(DWMainMenuItemType type) { - switch (type) { - case DWMainMenuItemType_BuySellDash: - return NSLocalizedString(@"Buy & Sell Dash", nil); - case DWMainMenuItemType_Explore: - return NSLocalizedString(@"Explore", nil); - case DWMainMenuItemType_Security: - return NSLocalizedString(@"Security", nil); - case DWMainMenuItemType_Settings: - return NSLocalizedString(@"Settings", nil); - case DWMainMenuItemType_Tools: - return NSLocalizedString(@"Tools", nil); - case DWMainMenuItemType_Support: - return NSLocalizedString(@"Contact Support", nil); - case DWMainMenuItemType_Invite: - return NSLocalizedString(@"Invite", nil); - case DWMainMenuItemType_Voting: - return NSLocalizedString(@"Username voting", nil); - } -} - -static NSString *DescriptionByType(DWMainMenuItemType type) { - switch (type) { - case DWMainMenuItemType_BuySellDash: - return NSLocalizedString(@"Connect with third party exchanges", nil); - case DWMainMenuItemType_Explore: - return NSLocalizedString(@"Find merchants that accept DASH", nil); - case DWMainMenuItemType_Security: - return NSLocalizedString(@"View passphrase, backup wallet…", nil); - case DWMainMenuItemType_Settings: - return NSLocalizedString(@"Default currency, shortcuts, about…", nil); - case DWMainMenuItemType_Tools: - return NSLocalizedString(@"Import private key, Export CSV…", nil); - case DWMainMenuItemType_Support: - return NSLocalizedString(@"Report an Issue", nil); - case DWMainMenuItemType_Invite: - return NSLocalizedString(@"Let your friends and family to join Dash", nil); - case DWMainMenuItemType_Voting: - return nil; - } -} - -@interface DWMainMenuTableViewCell () - -@property (strong, nonatomic) IBOutlet UIImageView *iconImageView; -@property (strong, nonatomic) IBOutlet UILabel *titleLabel; -@property (strong, nonatomic) IBOutlet UILabel *descriptionLabel; - -@end - -@implementation DWMainMenuTableViewCell - -- (void)awakeFromNib { - [super awakeFromNib]; - - self.titleLabel.font = [UIFont dw_fontForTextStyle:UIFontTextStyleSubheadline]; - self.descriptionLabel.font = [UIFont dw_fontForTextStyle:UIFontTextStyleCaption1]; -} - -- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { - [super setHighlighted:highlighted animated:animated]; - - [self dw_pressedAnimation:DWPressedAnimationStrength_Light pressed:highlighted]; -} - -- (void)setModel:(nullable id)model { - _model = model; - - const DWMainMenuItemType type = model.type; - - self.iconImageView.image = ImageByType(type); - self.titleLabel.text = TitleByType(type); - self.descriptionLabel.text = DescriptionByType(type); -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.xib b/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.xib deleted file mode 100644 index c464c77e8..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/Cells/DWMainMenuTableViewCell.xib +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DashWallet/Sources/UI/Menu/Main/Views/MainMenuContentView.swift b/DashWallet/Sources/UI/Menu/Main/Views/MainMenuContentView.swift deleted file mode 100644 index a4b1ade02..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/MainMenuContentView.swift +++ /dev/null @@ -1,261 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import SwiftUI - -@objc(DWMainMenuContentViewDelegate) -protocol MainMenuContentViewDelegate: AnyObject { - func mainMenuContentView(_ view: MainMenuContentView, didSelectMenuItem item: DWMainMenuItem) - - #if DASHPAY - func mainMenuContentView(joinDashPayAction view: MainMenuContentView) - func mainMenuContentView(showQRAction view: MainMenuContentView) - func mainMenuContentView(editProfileAction view: MainMenuContentView) - func mainMenuContentView(showCoinJoin view: MainMenuContentView) - func mainMenuContentView(showRequestDetails view: MainMenuContentView) - #endif -} - -@objc(DWMainMenuContentView) -class MainMenuContentView: UIView { - - // MARK: - Properties - - @objc var model: DWMainMenuModel { - didSet { - tableView.reloadData() - } - } - @objc weak var delegate: MainMenuContentViewDelegate? - - private let tableView: UITableView - - #if DASHPAY - @objc var userModel: CurrentUserProfileModel? = nil - let joinDPViewModel = JoinDashPayViewModel(initialState: .none) - private let headerView: DWUserProfileContainerView - private var welcomeView: JoinDashPayView! - - var shouldShowMixDashDialog: Bool { - get { CoinJoinService.shared.mode == .none || !UsernamePrefs.shared.mixDashShown } - set(value) { UsernamePrefs.shared.mixDashShown = !value } - } - - var shouldShowDashPayInfo: Bool { - get { !UsernamePrefs.shared.joinDashPayInfoShown } - set(value) { UsernamePrefs.shared.joinDashPayInfoShown = !value } - } - #endif - - // MARK: - Initialization - - override init(frame: CGRect) { - self.model = DWMainMenuModel() - self.tableView = UITableView(frame: .zero, style: .plain) - - #if DASHPAY - self.headerView = DWUserProfileContainerView(frame: .zero) - #endif - - super.init(frame: frame) - - setupViews() - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK: - Setup - private var height = 0.0 - - private func setupViews() { - #if DASHPAY - welcomeView = JoinDashPayView( - viewModel: self.joinDPViewModel, - onTap: { state in - if state == .registered { - self.delegate?.mainMenuContentView(editProfileAction: self) - } else if state == .voting { - self.delegate?.mainMenuContentView(showRequestDetails: self) - } else if state == .none { - self.joinButtonAction() - } - }, onActionButton: { state in - if state == .blocked || state == .failed || state == .contested { - self.joinButtonAction() - } else { - self.delegate?.mainMenuContentView(editProfileAction: self) - self.joinDPViewModel.markAsDismissed() - } - }, onDismissButton: { state in - self.joinDPViewModel.markAsDismissed() - }, onSizeChange: { size in - self.height = size.height - if let header = self.tableView.tableHeaderView { - header.frame = CGRect(x: 0, y: 0, width: self.tableView.bounds.width, height: self.height) - self.tableView.tableHeaderView = header - } - } - ) - #endif - - backgroundColor = UIColor.dw_secondaryBackground() - - tableView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - tableView.backgroundColor = backgroundColor - tableView.dataSource = self - tableView.delegate = self - tableView.rowHeight = UITableView.automaticDimension - tableView.estimatedRowHeight = 74.0 - tableView.separatorStyle = .none - tableView.contentInset = UIEdgeInsets(top: DWDefaultMargin(), left: 0, bottom: DW_TABBAR_NOTCH, right: 0) - addSubview(tableView) - - let cellId = DWMainMenuTableViewCell.dw_reuseIdentifier - let nib = UINib(nibName: cellId, bundle: nil) - tableView.register(nib, forCellReuseIdentifier: cellId) - - #if DASHPAY - headerView.delegate = self - #endif - } - - // MARK: - Layout - - override func layoutSubviews() { - super.layoutSubviews() - - tableView.frame = self.bounds - } - - // MARK: - Public Methods - - #if DASHPAY - @objc func updateUserHeader() { - if userModel?.showJoinDashpay == true { - let hostingController = UIHostingController( - rootView: welcomeView - .padding(.bottom, 20) - .padding(.horizontal, 18) - ) - hostingController.view.backgroundColor = .clear - let header = hostingController.view - tableView.tableHeaderView = header - } else { - tableView.tableHeaderView = nil - } - - setNeedsLayout() - } - - private func joinButtonAction() { - if shouldShowMixDashDialog { - self.showMixDashDialog() - } else if shouldShowDashPayInfo { - self.showDashPayInfo() - } else { - self.delegate?.mainMenuContentView(joinDashPayAction: self) - } - } - - private func showMixDashDialog() { - let swiftUIView = MixDashDialog( - positiveAction: { - self.delegate?.mainMenuContentView(showCoinJoin: self) - }, negativeAction: { - if UsernamePrefs.shared.joinDashPayInfoShown { - self.delegate?.mainMenuContentView(joinDashPayAction: self) - } else { - UsernamePrefs.shared.joinDashPayInfoShown = true - self.showDashPayInfo() - } - } - ) - let hostingController = UIHostingController(rootView: swiftUIView) - hostingController.setDetent(260) - - if let parentVC = self.parentViewController() { - parentVC.present(hostingController, animated: true, completion: nil) - } else { - delegate?.mainMenuContentView(joinDashPayAction: self) - } - } - - private func showDashPayInfo() { - let swiftUIView = JoinDashPayInfoDialog { - self.delegate?.mainMenuContentView(joinDashPayAction: self) - } - let hostingController = UIHostingController(rootView: swiftUIView) - hostingController.setDetent(600) - - if let parentVC = self.parentViewController() { - parentVC.present(hostingController, animated: true, completion: nil) - } - } - #endif -} - -// MARK: - UITableViewDataSource - -extension MainMenuContentView: UITableViewDataSource { - public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return model.items.count - } - - public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cellId = DWMainMenuTableViewCell.dw_reuseIdentifier - let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! DWMainMenuTableViewCell - - let menuItem = model.items[indexPath.row] - cell.model = menuItem - - #if SNAPSHOT - if menuItem.type == .security { - cell.accessibilityIdentifier = "menu_security_item" - } - #endif - - return cell - } -} - -// MARK: - UITableViewDelegate - -extension MainMenuContentView: UITableViewDelegate { - public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - - let menuItem = model.items[indexPath.row] - delegate?.mainMenuContentView(self, didSelectMenuItem: menuItem) - } -} - -#if DASHPAY -// MARK: - DWCurrentUserProfileViewDelegate - -extension MainMenuContentView: DWCurrentUserProfileViewDelegate { - public func currentUserProfileView(_ view: DWCurrentUserProfileView, showQRAction sender: UIButton) { - delegate?.mainMenuContentView(showQRAction: self) - } - - public func currentUserProfileView(_ view: DWCurrentUserProfileView, editProfileAction sender: UIButton) { - delegate?.mainMenuContentView(editProfileAction: self) - } -} -#endif diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuItem.h b/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuItem.h deleted file mode 100644 index 71565903d..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuItem.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, DWMainMenuItemType) { - DWMainMenuItemType_BuySellDash, - DWMainMenuItemType_Explore, - DWMainMenuItemType_Security, - DWMainMenuItemType_Settings, - DWMainMenuItemType_Tools, - DWMainMenuItemType_Support, - DWMainMenuItemType_Invite, - DWMainMenuItemType_Voting -}; - -@protocol DWMainMenuItem - -@property (readonly, nonatomic, assign) DWMainMenuItemType type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.h b/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.h deleted file mode 100644 index d1b860d9f..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -#import "DWMainMenuItem.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface DWMainMenuModel : NSObject - -@property (readonly, nonatomic, copy) NSArray> *items; - -- (instancetype)initWithInvitesEnabled:(BOOL)enabled votingEnabled:(BOOL)votingEnabled; - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.m b/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.m deleted file mode 100644 index 8f9428305..000000000 --- a/DashWallet/Sources/UI/Menu/Main/Views/Model/DWMainMenuModel.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWMainMenuModel.h" -#import "DWEnvironment.h" -#import "dashwallet-Swift.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface DWMainMenuItemImpl : NSObject - -@end - -@implementation DWMainMenuItemImpl - -@synthesize type = _type; - -- (instancetype)initWithType:(DWMainMenuItemType)type { - self = [super init]; - if (self) { - _type = type; - } - return self; -} - -@end - -#pragma mark - - -@implementation DWMainMenuModel - -- (instancetype)initWithInvitesEnabled:(BOOL)enabled votingEnabled:(BOOL)votingEnabled { - self = [super init]; - if (self) { - NSMutableArray> *items = [NSMutableArray array]; - - if (enabled) { - [items addObject:[[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Invite]]; - } - - if ([[DWEnvironment sharedInstance].currentChain isMainnet]) { - [items addObjectsFromArray:@[ [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_BuySellDash] ]]; - } - - [items addObjectsFromArray:@[ - [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Explore], - [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Security], - [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Settings], - [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Tools] - ]]; - - if (votingEnabled) { - [items addObjectsFromArray:@[ [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Voting] ]]; - } - - [items addObjectsFromArray:@[ [[DWMainMenuItemImpl alloc] initWithType:DWMainMenuItemType_Support] ]]; - _items = items; - } - return self; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/MenuItemModel.swift b/DashWallet/Sources/UI/Menu/MenuItemModel.swift index 18e226cab..3b172f485 100644 --- a/DashWallet/Sources/UI/Menu/MenuItemModel.swift +++ b/DashWallet/Sources/UI/Menu/MenuItemModel.swift @@ -17,7 +17,7 @@ import SwiftUI -class MenuItemModel: Identifiable, Equatable { +class MenuItemModel: Identifiable, Equatable, Hashable { let id = UUID() var title: String @@ -25,26 +25,28 @@ class MenuItemModel: Identifiable, Equatable { var details: String? = nil var icon: IconName? = nil var showInfo: Bool = false - var showChevron: Bool = false var showToggle: Bool = false - @State var isToggled: Bool = false + var isToggled: Bool = false var action: (() -> Void)? = nil - init(title: String, subtitle: String? = nil, details: String? = nil, icon: IconName? = nil, showInfo: Bool = false, showChevron: Bool = false, showToggle: Bool = false, isToggled: Bool = false, action: (() -> Void)? = nil) { + init(title: String, subtitle: String? = nil, details: String? = nil, icon: IconName? = nil, showInfo: Bool = false, showToggle: Bool = false, isToggled: Bool = false, action: (() -> Void)? = nil) { self.title = title self.subtitle = subtitle self.details = details self.icon = icon self.showInfo = showInfo - self.showChevron = showChevron self.showToggle = showToggle - self._isToggled = State.init(initialValue: isToggled) + self.isToggled = isToggled self.action = action } static func == (lhs: MenuItemModel, rhs: MenuItemModel) -> Bool { lhs.id == rhs.id } + + func hash(into hasher: inout Hasher) { + hasher.combine(id) + } } class CoinJoinMenuItemModel: MenuItemModel { diff --git a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.h b/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.h deleted file mode 100644 index def739bc0..000000000 --- a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -#import "DWSelectorFormItem.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface DWSecurityMenuModel : NSObject - -@property (readonly, assign, nonatomic) BOOL hasTouchID; -@property (readonly, assign, nonatomic) BOOL hasFaceID; -@property (readonly, assign, nonatomic) BOOL biometricsEnabled; -@property (assign, nonatomic) BOOL balanceHidden; - -- (void)changePinContinueBlock:(void (^)(BOOL allowed))continueBlock; -- (void)setupNewPin:(NSString *)pin; - -- (void)setBiometricsEnabled:(BOOL)enabled completion:(void (^)(BOOL success))completion; - -+ (instancetype)new NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.m b/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.m deleted file mode 100644 index b687f0b87..000000000 --- a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuModel.m +++ /dev/null @@ -1,155 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWSecurityMenuModel.h" - -#import -#import - -#import "DWAdvancedSecurityModel.h" -#import "DWBiometricAuthModel.h" -#import "DWGlobalOptions.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface DWBiometricsOption : NSObject - -@property (readonly, nonatomic, assign) uint64_t value; - -@end - -@implementation DWBiometricsOption - -@synthesize title = _title; - -- (instancetype)initWithTitle:(NSString *)title value:(uint64_t)value { - self = [super init]; - if (self) { - _title = title; - _value = value; - } - return self; -} - -@end - -#pragma mark - Model - -@interface DWSecurityMenuModel () - -@property (assign, nonatomic) BOOL biometricsEnabled; -@property (readonly, nonatomic, strong) DWBiometricAuthModel *biometricAuthModel; - -@end - -@implementation DWSecurityMenuModel - -- (instancetype)init { - self = [super init]; - if (self) { - - _biometricAuthModel = [[DWBiometricAuthModel alloc] init]; - - const LABiometryType biometryType = _biometricAuthModel.biometryType; - _hasTouchID = biometryType == LABiometryTypeTouchID; - _hasFaceID = biometryType == LABiometryTypeFaceID; - } - return self; -} - -- (BOOL)biometricsEnabled { - return [DWGlobalOptions sharedInstance].biometricAuthEnabled; -} - -- (void)setBiometricsEnabled:(BOOL)biometricsEnabled { - [DWGlobalOptions sharedInstance].biometricAuthEnabled = biometricsEnabled; - - const uint64_t limit = biometricsEnabled ? DW_DEFAULT_BIOMETRICS_SPENDING_LIMIT : 0; - [[DSAuthenticationManager sharedInstance] setBiometricSpendingLimitIfAuthenticated:limit]; -} - -- (BOOL)balanceHidden { - return [DWGlobalOptions sharedInstance].balanceHidden; -} - -- (void)setBalanceHidden:(BOOL)balanceHidden { - [DWGlobalOptions sharedInstance].balanceHidden = balanceHidden; -} - -- (void)changePinContinueBlock:(void (^)(BOOL allowed))continueBlock { - [[DSAuthenticationManager sharedInstance] - authenticateWithPrompt:nil - usingBiometricAuthentication:NO - alertIfLockout:YES - completion:^(BOOL authenticated, BOOL usedBiometrics, BOOL cancelled) { - if (continueBlock) { - DSAuthenticationManager *authManager = [DSAuthenticationManager sharedInstance]; - authManager.didAuthenticate = NO; - - continueBlock(authenticated); - } - }]; -} - -- (void)setupNewPin:(NSString *)pin { - DSAuthenticationManager *authManager = [DSAuthenticationManager sharedInstance]; - __unused BOOL success = [authManager setupNewPin:pin]; - NSAssert(success, @"Pin setup failed"); -} - -- (void)setBiometricsEnabled:(BOOL)enabled completion:(void (^)(BOOL success))completion { - DSAuthenticationManager *authenticationManager = [DSAuthenticationManager sharedInstance]; - [authenticationManager - authenticateWithPrompt:nil - usingBiometricAuthentication:NO - alertIfLockout:YES - completion:^(BOOL authenticatedOrSuccess, BOOL usedBiometrics, BOOL cancelled) { - if (authenticatedOrSuccess) { - if (enabled) { - __weak typeof(self) weakSelf = self; - [self.biometricAuthModel enableBiometricAuth:^(BOOL success) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - strongSelf.biometricsEnabled = success; - - if (completion) { - completion(success); - } - }]; - } - else { - self.biometricsEnabled = NO; - - if (completion) { - completion(YES); - } - } - } - else { - if (completion) { - completion(NO); - } - } - }]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.h b/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.h deleted file mode 100644 index 90e86e7ad..000000000 --- a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -#import "DWWipeDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - - -@interface DWSecurityMenuViewController : UIViewController - -@property (nullable, nonatomic, weak) id delegate; - -- (instancetype)init; - -- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE; -- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.m b/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.m deleted file mode 100644 index 99d750124..000000000 --- a/DashWallet/Sources/UI/Menu/Security/DWSecurityMenuViewController.m +++ /dev/null @@ -1,346 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWSecurityMenuViewController.h" - -#import - -#import "DWAdvancedSecurityViewController.h" -#import "DWFormTableViewController.h" -#import "DWPreviewSeedPhraseModel.h" -#import "DWPreviewSeedPhraseViewController.h" -#import "DWResetWalletInfoViewController.h" -#import "DWSecurityMenuModel.h" -#import "DWSetPinViewController.h" -#import "DWUIKit.h" -#import "dashwallet-Swift.h" - -#if SNAPSHOT -#import "DWDemoAdvancedSecurityViewController.h" -#endif /* SNAPSHOT */ - -NS_ASSUME_NONNULL_BEGIN - -@interface DWSecurityMenuViewController () - -@property (null_resettable, nonatomic, strong) DWSecurityMenuModel *model; -@property (nonatomic, strong) DWFormTableViewController *formController; - -@end - -@implementation DWSecurityMenuViewController - -- (instancetype)init { - self = [super initWithNibName:nil bundle:nil]; - if (self) { - - self.title = NSLocalizedString(@"Security", nil); - self.hidesBottomBarWhenPushed = YES; - } - return self; -} - -- (DWSecurityMenuModel *)model { - if (!_model) { - _model = [[DWSecurityMenuModel alloc] init]; - } - - return _model; -} - -- (NSArray *)items { - __weak typeof(self) weakSelf = self; - - NSMutableArray *items = [NSMutableArray array]; - - { - DWSelectorFormCellModel *cellModel = [[DWSelectorFormCellModel alloc] initWithTitle:NSLocalizedString(@"View Recovery Phrase", nil)]; - cellModel.accessoryType = DWSelectorFormAccessoryType_DisclosureIndicator; - cellModel.didSelectBlock = ^(DWSelectorFormCellModel *_Nonnull cellModel, NSIndexPath *_Nonnull indexPath) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - [strongSelf showSeedPharseAction]; - }; - [items addObject:cellModel]; - } - - { - DWSelectorFormCellModel *cellModel = [[DWSelectorFormCellModel alloc] initWithTitle:NSLocalizedString(@"Change PIN", nil)]; - cellModel.accessoryType = DWSelectorFormAccessoryType_DisclosureIndicator; - cellModel.didSelectBlock = ^(DWSelectorFormCellModel *_Nonnull cellModel, NSIndexPath *_Nonnull indexPath) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - [strongSelf changePinAction]; - }; - [items addObject:cellModel]; - } - - if (self.model.hasTouchID || self.model.hasFaceID) { - NSString *title = self.model.hasTouchID ? NSLocalizedString(@"Enable Touch ID", nil) : NSLocalizedString(@"Enable Face ID", nil); - DWSwitcherFormCellModel *cellModel = [[DWSwitcherFormCellModel alloc] initWithTitle:title]; - cellModel.on = self.model.biometricsEnabled; - cellModel.didChangeValueBlock = ^(DWSwitcherFormCellModel *_Nonnull cellModel) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - [strongSelf biometricSwitchAction:cellModel]; - }; - [items addObject:cellModel]; - } - - { - DWSwitcherFormCellModel *cellModel = [[DWSwitcherFormCellModel alloc] initWithTitle:NSLocalizedString(@"Autohide Balance", nil)]; - cellModel.on = self.model.balanceHidden; - cellModel.didChangeValueBlock = ^(DWSwitcherFormCellModel *_Nonnull cellModel) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - strongSelf.model.balanceHidden = cellModel.on; - }; - [items addObject:cellModel]; - } - - { - DWSelectorFormCellModel *cellModel = [[DWSelectorFormCellModel alloc] initWithTitle:NSLocalizedString(@"Advanced Security", nil)]; - cellModel.accessoryType = DWSelectorFormAccessoryType_DisclosureIndicator; - cellModel.didSelectBlock = ^(DWSelectorFormCellModel *_Nonnull cellModel, NSIndexPath *_Nonnull indexPath) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - [strongSelf showAdvancedSecurity]; - }; -#if SNAPSHOT - cellModel.accessibilityIdentifier = @"menu_security_advanced_item"; -#endif /* SNAPSHOT */ - [items addObject:cellModel]; - } - - { - DWSelectorFormCellModel *cellModel = [[DWSelectorFormCellModel alloc] initWithTitle:NSLocalizedString(@"Reset Wallet", nil)]; - cellModel.accessoryType = DWSelectorFormAccessoryType_DisclosureIndicator; - cellModel.didSelectBlock = ^(DWSelectorFormCellModel *_Nonnull cellModel, NSIndexPath *_Nonnull indexPath) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - [strongSelf resetWalletAction]; - }; - [items addObject:cellModel]; - } - - return [items copy]; -} - -- (NSArray *)sections { - NSMutableArray *sections = [NSMutableArray array]; - - for (DWBaseFormCellModel *item in [self items]) { - DWFormSectionModel *section = [[DWFormSectionModel alloc] init]; - section.items = @[ item ]; - [sections addObject:section]; - } - - return [sections copy]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - - self.view.backgroundColor = [UIColor dw_secondaryBackgroundColor]; - - DWFormTableViewController *formController = [[DWFormTableViewController alloc] initWithStyle:UITableViewStylePlain]; - [formController setSections:[self sections] placeholderText:nil]; - - [self dw_embedChild:formController]; - self.formController = formController; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return UIStatusBarStyleLightContent; -} - -#pragma mark - DWSetPinViewControllerDelegate - -- (void)setPinViewControllerDidSetPin:(DWSetPinViewController *)controller { - [controller.navigationController dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)setPinViewControllerDidCancel:(DWSetPinViewController *)controller { - [controller.navigationController dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - DWSecureWalletDelegate - -- (void)secureWalletRoutineDidCancel:(UIViewController *)controller { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)secureWalletRoutineDidVerify:(UIViewController *)controller { -} - -- (void)secureWalletRoutineDidFinish:(DWVerifiedSuccessfullyViewController *)controller { - NSAssert(NO, @"This delegate method shouldn't be called from a preview seed phrase VC"); -} - -#pragma mark - Private - -- (void)showSeedPharseAction { - DSAuthenticationManager *authenticationManager = [DSAuthenticationManager sharedInstance]; - [authenticationManager - authenticateWithPrompt:nil - usingBiometricAuthentication:NO - alertIfLockout:YES - completion:^(BOOL authenticated, BOOL usedBiometrics, BOOL cancelled) { - if (!authenticated) { - return; - } - - DWPreviewSeedPhraseModel *model = [[DWPreviewSeedPhraseModel alloc] init]; - [model getOrCreateNewWallet]; - - DWPreviewSeedPhraseViewController *controller = - [[DWPreviewSeedPhraseViewController alloc] initWithModel:model]; - controller.hidesBottomBarWhenPushed = YES; - controller.delegate = self; - [self.navigationController pushViewController:controller animated:YES]; - }]; -} - -- (void)changePinAction { - [self.model changePinContinueBlock:^(BOOL allowed) { - if (!allowed) { - return; - } - - DWSetPinViewController *controller = [DWSetPinViewController controllerWithIntent:DWSetPinIntent_ChangePin]; - controller.delegate = self; - DWNavigationController *navigationController = [[DWNavigationController alloc] initWithRootViewController:controller]; - navigationController.modalPresentationStyle = UIModalPresentationFullScreen; - [self presentViewController:navigationController animated:YES completion:nil]; - }]; -} - -- (void)showAdvancedSecurity { -#if SNAPSHOT - DWDemoAdvancedSecurityViewController *controller = [[DWDemoAdvancedSecurityViewController alloc] init]; - [self.navigationController pushViewController:controller animated:YES]; -#else - DSAuthenticationManager *authenticationManager = [DSAuthenticationManager sharedInstance]; - [authenticationManager - authenticateWithPrompt:nil - usingBiometricAuthentication:NO - alertIfLockout:YES - completion:^(BOOL authenticated, BOOL usedBiometrics, BOOL cancelled) { - if (!authenticated) { - return; - } - - DWAdvancedSecurityViewController *controller = [[DWAdvancedSecurityViewController alloc] init]; - [self.navigationController pushViewController:controller animated:YES]; - }]; -#endif /* SNAPSHOT */ -} - -- (void)biometricSwitchAction:(DWSwitcherFormCellModel *)cellModel { - __weak typeof(self) weakSelf = self; - [self.model setBiometricsEnabled:cellModel.on - completion:^(BOOL success) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - if (!success) { - const BOOL wasEnabled = cellModel.on; - cellModel.on = !cellModel.on; - - // Face / Touch ID access was disabled but the user wants to enabled it - if (wasEnabled) { - [strongSelf showBiometricsAccessAlertRequest]; - } - } - - [strongSelf.formController setSections:[strongSelf sections] - placeholderText:nil]; - }]; -} - -- (void)resetWalletAction { - DWResetWalletInfoViewController *controller = [DWResetWalletInfoViewController controller]; - controller.delegate = self.delegate; - [self.navigationController pushViewController:controller animated:YES]; -} - -- (void)showBiometricsAccessAlertRequest { - NSString *displayName = [NSBundle mainBundle].infoDictionary[@"CFBundleDisplayName"]; - NSString *titleString = nil; - NSString *messageString = nil; - if (self.model.hasTouchID) { - titleString = [NSString stringWithFormat:NSLocalizedString(@"%@ is not allowed to access Touch ID", nil), - displayName]; - messageString = NSLocalizedString(@"Allow Touch ID access in Settings", nil); - } - else if (self.model.hasFaceID) { - titleString = [NSString stringWithFormat:NSLocalizedString(@"%@ is not allowed to access Face ID", nil), - displayName]; - messageString = NSLocalizedString(@"Allow Face ID access in Settings", nil); - } - else { - NSAssert(NO, @"Inconsistent state"); - } - - UIAlertController *alert = [UIAlertController alertControllerWithTitle:titleString - message:messageString - preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *okAction = [UIAlertAction - actionWithTitle:NSLocalizedString(@"Cancel", nil) - style:UIAlertActionStyleCancel - handler:nil]; - [alert addAction:okAction]; - - UIAlertAction *settingsAction = [UIAlertAction - actionWithTitle:NSLocalizedString(@"Settings", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *_Nonnull action) { - NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - if (url && [[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil]; - } - }]; - [alert addAction:settingsAction]; - - alert.preferredAction = settingsAction; - - [self presentViewController:alert animated:YES completion:nil]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Security/ResetWalletInfo/DWResetWalletInfoViewController.h b/DashWallet/Sources/UI/Menu/Security/ResetWalletInfo/DWResetWalletInfoViewController.h index 8245fdf09..14651a720 100644 --- a/DashWallet/Sources/UI/Menu/Security/ResetWalletInfo/DWResetWalletInfoViewController.h +++ b/DashWallet/Sources/UI/Menu/Security/ResetWalletInfo/DWResetWalletInfoViewController.h @@ -25,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nullable, nonatomic, weak) id delegate; -+ (instancetype)controller; ++ (instancetype)controller NS_SWIFT_NAME(make()); @end diff --git a/DashWallet/Sources/UI/Menu/Security/SecurityMenuScreen.swift b/DashWallet/Sources/UI/Menu/Security/SecurityMenuScreen.swift new file mode 100644 index 000000000..2d188d7c8 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Security/SecurityMenuScreen.swift @@ -0,0 +1,189 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2025 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import UIKit + +struct SecurityMenuScreen: View { + private let vc: UINavigationController + private let delegateInternal: DelegateInternal + + @StateObject private var viewModel = SecurityMenuViewModel() + @State private var showBiometricsAlert = false + + init(vc: UINavigationController) { + self.vc = vc + self.delegateInternal = DelegateInternal(onHide: { + vc.popViewController(animated: true) + }) + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Back button + HStack { + Button(action: { + vc.popViewController(animated: true) + }) { + Image(systemName: "chevron.left") + .font(.system(size: 18, weight: .medium)) + .foregroundColor(.black) + .frame(width: 36, height: 36) + .overlay( + Circle().stroke(Color.gray300.opacity(0.3), lineWidth: 1) + ) + } + Spacer() + } + .padding(.horizontal, 5) + .padding(.top, 10) + + // Header + HStack { + Text(NSLocalizedString("Security", comment: "")) + .font(.title) + .fontWeight(.bold) + .foregroundColor(.primaryText) + Spacer() + } + .padding(.top, 30) + .padding(.bottom, 20) + + VStack(spacing: 0) { + ForEach(viewModel.items) { item in + MenuItem( + title: item.title, + subtitle: item.subtitle, + details: item.details, + icon: item.icon, + showInfo: item.showInfo, + showChevron: false, + showToggle: item.showToggle, + isToggled: item.isToggled, + action: item.action + ) + .frame(minHeight: 60) + } + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + + Spacer() + } + .padding(.horizontal, 20) + .background(Color.primaryBackground) + .navigationBarHidden(true) + .onReceive(viewModel.$navigationDestination) { destination in + handleNavigation(destination) + } + .onReceive(viewModel.$showBiometricsAlert) { show in + showBiometricsAlert = show + } + .alert(NSLocalizedString("Biometrics Access Required", comment: ""), isPresented: $showBiometricsAlert) { + Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } + Button(NSLocalizedString("Settings", comment: "")) { + openAppSettings() + } + } message: { + Text(biometricsAlertMessage) + } + } + + private func handleNavigation(_ destination: SecurityMenuNavigationDestination?) { + switch destination { + case .viewRecoveryPhrase: + viewModel.authenticate { authenticated in + if authenticated { + let model = DWPreviewSeedPhraseModel() + model.getOrCreateNewWallet() + let controller = DWPreviewSeedPhraseViewController(model: model) + controller.delegate = delegateInternal + controller.hidesBottomBarWhenPushed = true + self.vc.pushViewController(controller, animated: true) + } + } + case .changePin: + viewModel.authenticate { authenticated in + if authenticated { + let controller = DWSetPinViewController(intent: .changePin) + controller.delegate = delegateInternal + controller.hidesBottomBarWhenPushed = true + self.vc.pushViewController(controller, animated: true) + } + } + case .advancedSecurity: + viewModel.authenticate { authenticated in + if authenticated { + #if SNAPSHOT + let controller = DWDemoAdvancedSecurityViewController() + #else + let controller = DWAdvancedSecurityViewController() + #endif + self.vc.pushViewController(controller, animated: true) + } + } + case .resetWallet: + let controller = DWResetWalletInfoViewController.make() + controller.delegate = delegateInternal + self.vc.pushViewController(controller, animated: true) + case .none: + break + } + + // Reset navigation destination after handling + if destination != nil { + viewModel.resetNavigation() + } + } + + private var biometricsAlertMessage: String { + let displayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String ?? "" + if viewModel.hasTouchID { + return String(format: NSLocalizedString("%@ is not allowed to access Touch ID. Allow Touch ID access in Settings", comment: ""), displayName) + } else if viewModel.hasFaceID { + return String(format: NSLocalizedString("%@ is not allowed to access Face ID. Allow Face ID access in Settings", comment: ""), displayName) + } else { + return "Biometrics access required" + } + } + + private func openAppSettings() { + if let url = URL(string: UIApplication.openSettingsURLString), + UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + } + } +} + +extension SecurityMenuScreen { + class DelegateInternal: NSObject, DWSecureWalletDelegate, DWSetPinViewControllerDelegate, DWWipeDelegate { + let onHide: () -> () + + init(onHide: @escaping () -> ()) { + self.onHide = onHide + } + + func secureWalletRoutineDidVerify(_ controller: UIViewController) { } + func secureWalletRoutineDidFinish(_ controller: VerifiedSuccessfullyViewController) { } + func secureWalletRoutineDidCancel(_ controller: UIViewController) { onHide() } + func setPinViewControllerDidSetPin(_ controller: DWSetPinViewController) { onHide() } + func setPinViewControllerDidCancel(_ controller: DWSetPinViewController) { onHide() } + func didWipeWallet() { onHide() } + } +} diff --git a/DashWallet/Sources/UI/Menu/Security/SecurityMenuViewModel.swift b/DashWallet/Sources/UI/Menu/Security/SecurityMenuViewModel.swift new file mode 100644 index 000000000..548652cea --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Security/SecurityMenuViewModel.swift @@ -0,0 +1,192 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2024 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Combine +import LocalAuthentication + +enum SecurityMenuNavigationDestination { + case viewRecoveryPhrase + case changePin + case advancedSecurity + case resetWallet +} + +@MainActor +class SecurityMenuViewModel: ObservableObject { + @Published var navigationDestination: SecurityMenuNavigationDestination? + @Published var showBiometricsAlert = false + @Published var items: [MenuItemModel] = [] + @Published var biometricsEnabled = false + @Published var balanceHidden = false + + private let biometricAuthModel = DWBiometricAuthModel() + private let authenticationManager = DSAuthenticationManager.sharedInstance() + + let hasTouchID: Bool + let hasFaceID: Bool + + init() { + let biometryType = biometricAuthModel.biometryType + hasTouchID = biometryType == .touchID + hasFaceID = biometryType == .faceID + biometricsEnabled = DWGlobalOptions.sharedInstance().biometricAuthEnabled + balanceHidden = DWGlobalOptions.sharedInstance().balanceHidden + + setupItems() + } + + private func setupItems() { + var menuItems: [MenuItemModel] = [] + + menuItems.append(MenuItemModel( + title: NSLocalizedString("View Recovery Phrase", comment: ""), + icon: .custom("image.recovery.phrase", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .viewRecoveryPhrase + } + )) + + menuItems.append(MenuItemModel( + title: NSLocalizedString("Change PIN", comment: ""), + icon: .custom("image.change.pin", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .changePin + } + )) + + if hasTouchID || hasFaceID { + let title = hasTouchID ? NSLocalizedString("Enable Touch ID", comment: "") : NSLocalizedString("Enable Face ID", comment: "") + let iconName = hasTouchID ? "image.touch.id" : "image.face.id" + menuItems.append(MenuItemModel( + title: title, + icon: .custom(iconName, maxHeight: 22), + showToggle: true, + isToggled: self.biometricsEnabled, + action: { [weak self] in + guard let self = self else { return } + let newValue = !self.biometricsEnabled + self.toggleBiometrics(newValue) + } + )) + } + + menuItems.append(MenuItemModel( + title: NSLocalizedString("Autohide Balance", comment: ""), + icon: .custom("image.autohide.balance", maxHeight: 22), + showToggle: true, + isToggled: self.balanceHidden, + action: { [weak self] in + guard let self = self else { return } + let newValue = !self.balanceHidden + DWGlobalOptions.sharedInstance().balanceHidden = newValue + self.balanceHidden = newValue + } + )) + + menuItems.append(MenuItemModel( + title: NSLocalizedString("Advanced Security", comment: ""), + icon: .custom("image.advanced.security", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .advancedSecurity + } + )) + + menuItems.append(MenuItemModel( + title: NSLocalizedString("Reset Wallet", comment: ""), + icon: .custom("image.reset.wallet", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .resetWallet + } + )) + + items = menuItems + } + + private func toggleBiometrics(_ enabled: Bool) { + setBiometricsEnabled(enabled) { [weak self] success in + DispatchQueue.main.async { + if !success { + // Revert the toggle + self?.biometricsEnabled = !enabled + + // Show alert if trying to enable but access was denied + if enabled { + self?.showBiometricsAlert = true + } + } else { + self?.biometricsEnabled = enabled + } + + // Refresh items to update the toggle state + self?.setupItems() + } + } + } + + private func setBiometricsEnabled(_ enabled: Bool, completion: @escaping (Bool) -> Void) { + authenticationManager.authenticate( + withPrompt: nil, + usingBiometricAuthentication: false, + alertIfLockout: true + ) { [weak self] authenticatedOrSuccess, usedBiometrics, cancelled in + guard let self = self else { + completion(false) + return + } + + if authenticatedOrSuccess { + if enabled { + self.biometricAuthModel.enableBiometricAuth { success in + if success { + DWGlobalOptions.sharedInstance().biometricAuthEnabled = true + let limit = DW_DEFAULT_BIOMETRICS_SPENDING_LIMIT + self.authenticationManager.setBiometricSpendingLimitIfAuthenticated(limit) + } + completion(success) + } + } else { + DWGlobalOptions.sharedInstance().biometricAuthEnabled = false + self.authenticationManager.setBiometricSpendingLimitIfAuthenticated(0) + completion(true) + } + } else { + completion(false) + } + } + } + + func resetNavigation() { + navigationDestination = nil + showBiometricsAlert = false + } + + func authenticate(_ continueBlock: @escaping (Bool) -> Void) { + authenticationManager.authenticate( + withPrompt: nil, + usingBiometricAuthentication: false, + alertIfLockout: true + ) { authenticated, _, _ in + continueBlock(authenticated) + } + } + + func setupNewPin(_ pin: String) { + let success = authenticationManager.setupNewPin(pin) + assert(success, "Pin setup failed") + } +} diff --git a/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.h b/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.h deleted file mode 100644 index fb0969d17..000000000 --- a/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface DWSettingsMenuModel : NSObject - -@property (readonly, copy, nonatomic) NSString *networkName; -@property (readonly, copy, nonatomic) NSString *localCurrencyCode; - -@property (assign, nonatomic) BOOL notificationsEnabled; - -+ (void)switchToMainnetWithCompletion:(void (^)(BOOL success))completion; -+ (void)switchToTestnetWithCompletion:(void (^)(BOOL success))completion; -+ (void)switchToEvonetWithCompletion:(void (^)(BOOL success))completion; - -+ (void)rescanBlockchainActionFromController:(UIViewController *)controller - sourceView:(UIView *)sourceView - sourceRect:(CGRect)sourceRect - completion:(void (^_Nullable)(BOOL confirmed))completion; - -+ (void)generateCSVReportWithCompletionHandler:(void (^)(NSString *fileName, NSURL *file))completionHandler errorHandler:(void (^)(NSError *error))errorHandler; -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.m b/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.m deleted file mode 100644 index 4a8ffd2c9..000000000 --- a/DashWallet/Sources/UI/Menu/Settings/DWSettingsMenuModel.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "DWSettingsMenuModel.h" - -#import "DWEnvironment.h" -#import "DWGlobalOptions.h" -#import "dashwallet-Swift.h" -NS_ASSUME_NONNULL_BEGIN - -@implementation DWSettingsMenuModel - -- (NSString *)networkName { - return [DWEnvironment sharedInstance].currentChain.name; -} - -- (NSString *)localCurrencyCode { - return CurrencyExchangerObjcWrapper.localCurrencyCode; -} - -- (BOOL)notificationsEnabled { - return [DWGlobalOptions sharedInstance].localNotificationsEnabled; -} - -- (void)setNotificationsEnabled:(BOOL)notificationsEnabled { - [DWGlobalOptions sharedInstance].localNotificationsEnabled = notificationsEnabled; -} - -+ (void)switchToMainnetWithCompletion:(void (^)(BOOL success))completion { - [[DWEnvironment sharedInstance] switchToMainnetWithCompletion:completion]; -} - -+ (void)switchToTestnetWithCompletion:(void (^)(BOOL success))completion { - [[DWEnvironment sharedInstance] switchToTestnetWithCompletion:completion]; -} - -+ (void)switchToEvonetWithCompletion:(void (^)(BOOL success))completion { - [[DWEnvironment sharedInstance] switchToEvonetWithCompletion:completion]; -} - -+ (void)rescanBlockchainActionFromController:(UIViewController *)controller - sourceView:(UIView *)sourceView - sourceRect:(CGRect)sourceRect - completion:(void (^_Nullable)(BOOL confirmed))completion { - UIAlertController *actionSheet = [UIAlertController - alertControllerWithTitle:NSLocalizedString(@"Rescan Blockchain", nil) - message:nil - preferredStyle:UIAlertControllerStyleActionSheet]; - UIAlertAction *rescanAction = [UIAlertAction - actionWithTitle:DSLocalizedString(@"Rescan Transactions (Suggested)", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) { - [DWGlobalOptions sharedInstance].resyncingWallet = YES; - - DSChainManager *chainManager = [DWEnvironment sharedInstance].currentChainManager; - [chainManager syncBlocksRescan]; - - if (completion) { - completion(YES); - } - }]; - - UIAlertAction *rescanMNLAndBlocksAction = [UIAlertAction - actionWithTitle:DSLocalizedString(@"Full Resync", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) { - [DWGlobalOptions sharedInstance].resyncingWallet = YES; - - DSChainManager *chainManager = [DWEnvironment sharedInstance].currentChainManager; - [chainManager masternodeListAndBlocksRescan]; - - if (completion) { - completion(YES); - } - }]; - -#if DEBUG - - UIAlertAction *rescanMNLAction = [UIAlertAction - actionWithTitle:DSLocalizedString(@"Resync Masternode List", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) { - [DWGlobalOptions sharedInstance].resyncingWallet = YES; - - DSChainManager *chainManager = [DWEnvironment sharedInstance].currentChainManager; - [chainManager masternodeListRescan]; - - if (completion) { - completion(YES); - } - }]; - -#endif - - UIAlertAction *cancelAction = [UIAlertAction - actionWithTitle:NSLocalizedString(@"Cancel", nil) - style:UIAlertActionStyleCancel - handler:^(UIAlertAction *_Nonnull action) { - if (completion) { - completion(NO); - } - }]; - [actionSheet addAction:rescanAction]; - [actionSheet addAction:rescanMNLAndBlocksAction]; - -#if DEBUG - - [actionSheet addAction:rescanMNLAction]; - -#endif - [actionSheet addAction:cancelAction]; - if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { - actionSheet.popoverPresentationController.sourceView = sourceView; - actionSheet.popoverPresentationController.sourceRect = sourceRect; - } - [controller presentViewController:actionSheet - animated:YES - completion:nil]; -} - -+ (void)generateCSVReportWithCompletionHandler:(void (^)(NSString *fileName, NSURL *file))completionHandler errorHandler:(void (^)(NSError *error))errorHandler { - return [TaxReportGenerator generateCSVReportWithCompletionHandler:completionHandler errorHandler:errorHandler]; -} -@end - -NS_ASSUME_NONNULL_END diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift deleted file mode 100644 index f1148f3f5..000000000 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewController.swift +++ /dev/null @@ -1,272 +0,0 @@ -// -// Created by Andrew Podkovyrin -// Copyright © 2019 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import SwiftUI -import Combine - -@objc(DWSettingsMenuViewControllerDelegate) -protocol SettingsMenuViewControllerDelegate: AnyObject { - func settingsMenuViewControllerDidRescanBlockchain(_ controller: SettingsMenuViewController) -} - -@objc(DWSettingsMenuViewController) -class SettingsMenuViewController: UIViewController, DWLocalCurrencyViewControllerDelegate { - - @objc weak var delegate: SettingsMenuViewControllerDelegate? - - private lazy var model: DWSettingsMenuModel = DWSettingsMenuModel() - private lazy var viewModel: SettingsViewModel = SettingsViewModel(model: model) - private var cancellables = Set() - - init() { - super.init(nibName: nil, bundle: nil) - title = NSLocalizedString("Settings", comment: "") - hidesBottomBarWhenPushed = true - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - - view.backgroundColor = .dw_secondaryBackground() - - let content = SettingsMenuContent(viewModel: self.viewModel) - let swiftUIController = UIHostingController(rootView: content) - swiftUIController.view.backgroundColor = .dw_secondaryBackground() - dw_embedChild(swiftUIController) - setupNavigationObserver() - } - - private func setupNavigationObserver() { - viewModel.$navigationDestination - .receive(on: DispatchQueue.main) - .sink { [weak self] dest in - switch dest { - case .coinjoin: - self?.showCoinJoinController() - case .currencySelector: - self?.showCurrencySelector() - case .network: - self?.showChangeNetwork() - case .rescan: - self?.showWarningAboutReclassifiedTransactions() - case .about: - self?.showAboutController() - default: - break - } - } - .store(in: &cancellables) - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return .lightContent - } - - // MARK: - LocalCurrencyViewControllerDelegate - - func localCurrencyViewController(_ controller: DWLocalCurrencyViewController, didSelectCurrency currencyCode: String) { - navigationController?.popViewController(animated: true) - } - - func localCurrencyViewControllerDidCancel(_ controller: DWLocalCurrencyViewController) { - assertionFailure("Not supported") - } - - // MARK: - Private - - private func showCurrencySelector() { - let controller = DWLocalCurrencyViewController(navigationAppearance: .default, presentationMode: .screen, currencyCode: nil) - controller.delegate = self - navigationController?.pushViewController(controller, animated: true) - } - - private func showAboutController() { - let aboutViewController = DWAboutViewController.create() - navigationController?.pushViewController(aboutViewController, animated: true) - } - - private func showChangeNetwork() { - let actionSheet = UIAlertController(title: NSLocalizedString("Network", comment: ""), message: nil, preferredStyle: .actionSheet) - - let mainnetAction = UIAlertAction(title: NSLocalizedString("Mainnet", comment: ""), style: .default) { [weak self] _ in - DWSettingsMenuModel.switchToMainnet { success in - if success { - self?.updateView() - } - } - } - - let testnetAction = UIAlertAction(title: NSLocalizedString("Testnet", comment: ""), style: .default) { [weak self] _ in - DWSettingsMenuModel.switchToTestnet { success in - if success { - self?.updateView() - } - } - } - - let cancelAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil) - - actionSheet.addAction(mainnetAction) - actionSheet.addAction(testnetAction) - actionSheet.addAction(cancelAction) - - if UIDevice.current.userInterfaceIdiom == .pad { - actionSheet.popoverPresentationController?.sourceView = view - actionSheet.popoverPresentationController?.sourceRect = view.bounds - } - - present(actionSheet, animated: true, completion: nil) - } - - private func showWarningAboutReclassifiedTransactions() { - let actionSheet = UIAlertController( - title: NSLocalizedString("You will lose all your manually reclassified transactions types", comment: ""), - message: NSLocalizedString("If you would like to save manually reclassified types for transactions you should export a CSV transaction file.", comment: ""), - preferredStyle: .actionSheet) - - let continueAction = UIAlertAction(title: NSLocalizedString("Continue", comment: ""), style: .default) { [weak self] _ in - self?.rescanBlockchainAction() - } - - let exportAction = UIAlertAction(title: NSLocalizedString("Export CSV", comment: ""), style: .default) { [weak self] _ in - self?.exportTransactionsInCSV() - } - - let cancelAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil) - - actionSheet.addAction(exportAction) - actionSheet.addAction(continueAction) - actionSheet.addAction(cancelAction) - - if UIDevice.current.userInterfaceIdiom == .pad { - actionSheet.popoverPresentationController?.sourceView = view - actionSheet.popoverPresentationController?.sourceRect = view.bounds - } - - present(actionSheet, animated: true, completion: nil) - } - - private func rescanBlockchainAction() { - DWSettingsMenuModel.rescanBlockchainAction(from: self, sourceView: view, sourceRect: view.bounds) { [weak self] confirmed in - if confirmed { - self?.delegate?.settingsMenuViewControllerDidRescanBlockchain(self!) - } - } - } - - private func exportTransactionsInCSV() { - view.dw_showProgressHUD(withMessage: NSLocalizedString("Generating CSV Report", comment: "")) - - DWSettingsMenuModel.generateCSVReport { [weak self] fileName, file in - self?.view.dw_hideProgressHUD() - - let activityViewController = UIActivityViewController(activityItems: [file], applicationActivities: nil) - activityViewController.setValue(fileName, forKey: "subject") - - if UIDevice.current.userInterfaceIdiom == .pad { - activityViewController.popoverPresentationController?.sourceView = self?.view - activityViewController.popoverPresentationController?.sourceRect = self?.view.bounds ?? .zero - } - - self?.present(activityViewController, animated: true, completion: nil) - } errorHandler: { [weak self] error in - self?.view.dw_hideProgressHUD() - self?.dw_displayErrorModally(error) - } - } - - private func updateView() { - cancellables.removeAll() - viewModel.resetNavigation() - // Trigger a view update - viewDidLoad() - } -} - -// MARK: - CoinJoin - -extension SettingsMenuViewController { - private func showCoinJoinController() { - let vc: UIViewController - - if CoinJoinLevelViewModel.shared.infoShown { - vc = CoinJoinLevelsViewController.controller() - } else { - vc = CoinJoinInfoViewController.controller() - } - - navigationController?.pushViewController(vc, animated: true) - } -} - -struct SettingsMenuContent: View { - @StateObject var viewModel: SettingsViewModel - - var body: some View { - List(viewModel.items) { item in - Group { - if let cjItem = item as? CoinJoinMenuItemModel { - MenuItem( - title: cjItem.title, - subtitleView: AnyView(CoinJoinSubtitle(cjItem)), - icon: .custom("image.coinjoin.menu"), - badgeText: nil, - action: cjItem.action - ) - } else { - MenuItem( - title: item.title, - subtitle: item.subtitle, - details: item.details, - icon: item.icon, - showInfo: item.showInfo, - showChevron: item.showChevron, - showToggle: item.showToggle, - isToggled: item.isToggled, - action: item.action - ) - } - } - .background(Color.secondaryBackground) - .cornerRadius(8) - .shadow(color: .shadow, radius: 10, x: 0, y: 5) - .listRowSeparator(.hidden) - .listRowBackground(Color.clear) - } - .listStyle(.plain) - .background(Color.clear) - } - - @ViewBuilder - private func CoinJoinSubtitle(_ cjItem: CoinJoinMenuItemModel) -> some View { - if cjItem.isOn { - CoinJoinProgressInfo(state: cjItem.state, progress: cjItem.progress, mixed: cjItem.mixed, total: cjItem.total, showBalance: !viewModel.isBalanceHidden, textColor: .tertiaryText, font: .caption) - .padding(.top, 2) - } else { - Text(NSLocalizedString("Turned off", comment: "CoinJoin")) - .font(.caption) - .foregroundColor(.tertiaryText) - .padding(.leading, 4) - .padding(.top, 2) - } - } -} diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewModel.swift similarity index 52% rename from DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift rename to DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewModel.swift index de0508e2f..bccfe9243 100644 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsMenuViewModel.swift @@ -16,35 +16,51 @@ // import Combine +import UIKit -enum SettingsNavDest { +enum SettingsMenuNavigationDestination { case coinjoin case currencySelector case network case rescan case about - case none + case exportCSV } -class SettingsViewModel: ObservableObject { +@MainActor +class SettingsMenuViewModel: ObservableObject { private var cancellableBag = Set() private let coinJoinService = CoinJoinService.shared - private var model: DWSettingsMenuModel + @Published var items: [MenuItemModel] = [] - @Published private(set) var navigationDestination: SettingsNavDest = .none + @Published var navigationDestination: SettingsMenuNavigationDestination? + @Published var notificationsEnabled: Bool + @Published var showCSVExportActivity = false + @Published var csvExportData: (fileName: String, file: URL)? + + var networkName: String { + return DWEnvironment.sharedInstance().currentChain.name + } + + var localCurrencyCode: String { + return CurrencyExchangerObjcWrapper.localCurrencyCode + } var isBalanceHidden: Bool { DWGlobalOptions.sharedInstance().balanceHidden } - init(model: DWSettingsMenuModel) { - self.model = model + init() { + self.notificationsEnabled = DWGlobalOptions.sharedInstance().localNotificationsEnabled refreshMenuItems() setupCoinJoinObservers() + setupCurrencyChangeObserver() } func resetNavigation() { - self.navigationDestination = .none + navigationDestination = nil + showCSVExportActivity = false + csvExportData = nil } private func setupCoinJoinObservers() { @@ -73,42 +89,55 @@ class SettingsViewModel: ObservableObject { .store(in: &cancellableBag) } + private func setupCurrencyChangeObserver() { + NotificationCenter.default.publisher(for: Notification.Name.fiatCurrencyDidChange) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + self?.refreshMenuItems() + } + .store(in: &cancellableBag) + } + private func refreshMenuItems() { self.items = [ MenuItemModel( title: NSLocalizedString("Local Currency", comment: ""), - subtitle: model.localCurrencyCode, - showChevron: true, + subtitle: localCurrencyCode, + icon: .custom("image.currency", maxHeight: 22), action: { [weak self] in self?.navigationDestination = .currencySelector } ), MenuItemModel( title: NSLocalizedString("Enable Receive Notifications", comment: ""), + icon: .custom("image.notifications", maxHeight: 22), showToggle: true, - isToggled: model.notificationsEnabled, + isToggled: notificationsEnabled, action: { [weak self] in - self?.model.notificationsEnabled.toggle() + guard let self = self else { return } + self.notificationsEnabled.toggle() + DWGlobalOptions.sharedInstance().localNotificationsEnabled = self.notificationsEnabled + self.refreshMenuItems() } ), MenuItemModel( title: NSLocalizedString("Network", comment: ""), - subtitle: model.networkName, - showChevron: true, + subtitle: networkName, + icon: .custom("image.network.monitor", maxHeight: 22), action: { [weak self] in self?.navigationDestination = .network } ), MenuItemModel( title: NSLocalizedString("Rescan Blockchain", comment: ""), - showChevron: true, + icon: .custom("image.rescan", maxHeight: 22), action: { [weak self] in self?.navigationDestination = .rescan } ), MenuItemModel( title: NSLocalizedString("About", comment: ""), - showChevron: true, + icon: .custom("image.about", maxHeight: 22), action: { [weak self] in self?.navigationDestination = .about } @@ -139,4 +168,61 @@ class SettingsViewModel: ObservableObject { ]) #endif } + + // MARK: - Network Switching + + func switchToMainnet() async -> Bool { + await DWEnvironment.sharedInstance().switchToMainnet() + } + + func switchToTestnet() async -> Bool { + return await DWEnvironment.sharedInstance().switchToTestnet() + } + + func switchToEvonet() async -> Bool { + await DWEnvironment.sharedInstance().switchToEvonet() + } + + // MARK: - Blockchain Rescan Actions + + func rescanTransactions() { + DWGlobalOptions.sharedInstance().isResyncingWallet = true + let chainManager = DWEnvironment.sharedInstance().currentChainManager + chainManager.syncBlocksRescan() + } + + func fullResync() { + DWGlobalOptions.sharedInstance().isResyncingWallet = true + let chainManager = DWEnvironment.sharedInstance().currentChainManager + chainManager.masternodeListAndBlocksRescan() + } + + #if DEBUG + func resyncMasternodeList() { + DWGlobalOptions.sharedInstance().isResyncingWallet = true + let chainManager = DWEnvironment.sharedInstance().currentChainManager + chainManager.masternodeListRescan() + } + #endif + + // MARK: - CSV Report Generation + + func generateCSVReport() async throws -> (fileName: String, file: URL) { + try await withCheckedThrowingContinuation { continuation in + TaxReportGenerator.generateCSVReport( + completionHandler: { fileName, file in + continuation.resume(returning: (fileName, file)) + }, + errorHandler: { error in + continuation.resume(throwing: error) + } + ) + } + } + + func exportCSV() async throws { + let result = try await generateCSVReport() + csvExportData = result + showCSVExportActivity = true + } } diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift new file mode 100644 index 000000000..c14513cc3 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift @@ -0,0 +1,269 @@ +// +// Created by Andrew Podkovyrin +// Copyright © 2019 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import SwiftUI +import Combine + +struct SettingsScreen: View { + private let vc: UINavigationController + private let delegateInternal: DelegateInternal + private let onDidRescan: () -> () + + @StateObject private var viewModel = SettingsMenuViewModel() + @State private var showNetworkAlert = false + @State private var showRescanWarningAlert = false + @State private var showRescanActionAlert = false + @State private var showCSVExportActivity = false + + init(vc: UINavigationController, onDidRescan: @escaping () -> ()) { + self.vc = vc + self.onDidRescan = onDidRescan + self.delegateInternal = DelegateInternal(onHide: { + vc.popViewController(animated: true) + }) + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Back button + HStack { + Button(action: { + vc.popViewController(animated: true) + }) { + Image(systemName: "chevron.left") + .font(.system(size: 18, weight: .medium)) + .foregroundColor(.black) + .frame(width: 36, height: 36) + .overlay( + Circle().stroke(Color.gray300.opacity(0.3), lineWidth: 1) + ) + } + Spacer() + } + .padding(.horizontal, 5) + .padding(.top, 10) + + // Header + HStack { + Text(NSLocalizedString("Settings", comment: "")) + .font(.title) + .fontWeight(.bold) + .foregroundColor(.primaryText) + Spacer() + } + .padding(.top, 30) + .padding(.bottom, 20) + + VStack(spacing: 0) { + ForEach(viewModel.items) { item in + if let cjItem = item as? CoinJoinMenuItemModel { + MenuItem( + title: cjItem.title, + subtitleView: AnyView(CoinJoinSubtitle(cjItem)), + icon: .custom("image.coinjoin.menu", maxHeight: 22), + badgeText: nil, + action: cjItem.action + ) + .frame(minHeight: 60) + } else { + MenuItem( + title: item.title, + subtitle: item.subtitle, + details: item.details, + icon: item.icon, + showInfo: item.showInfo, + showChevron: false, + showToggle: item.showToggle, + isToggled: item.isToggled, + action: item.action + ) + .frame(minHeight: 60) + } + } + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + + Spacer() + } + .padding(.horizontal, 20) + .background(Color.primaryBackground) + .navigationBarHidden(true) + .onReceive(viewModel.$navigationDestination) { destination in + handleNavigation(destination) + } + .onReceive(viewModel.$showCSVExportActivity) { show in + showCSVExportActivity = show + } + .alert(NSLocalizedString("Network", comment: ""), isPresented: $showNetworkAlert) { + Button(NSLocalizedString("Mainnet", comment: "")) { + Task { + let success = await viewModel.switchToMainnet() + if success { + updateView() + } + } + } + Button(NSLocalizedString("Testnet", comment: "")) { + Task { + let success = await viewModel.switchToTestnet() + if success { + updateView() + } + } + } + Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } + } + .alert(NSLocalizedString("You will lose all your manually reclassified transactions types", comment: ""), isPresented: $showRescanWarningAlert) { + Button(NSLocalizedString("Export CSV", comment: "")) { + handleCSVExport() + } + Button(NSLocalizedString("Continue", comment: "")) { + showRescanActionAlert = true + } + Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } + } message: { + Text(NSLocalizedString("If you would like to save manually reclassified types for transactions you should export a CSV transaction file.", comment: "")) + } + .alert(NSLocalizedString("Rescan Blockchain", comment: ""), isPresented: $showRescanActionAlert) { + Button(NSLocalizedString("Rescan Transactions (Suggested)", comment: "")) { + viewModel.rescanTransactions() + onDidRescan() + } + Button(NSLocalizedString("Full Resync", comment: "")) { + viewModel.fullResync() + onDidRescan() + } + #if DEBUG + Button(NSLocalizedString("Resync Masternode List", comment: "")) { + viewModel.resyncMasternodeList() + onDidRescan() + } + #endif + Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } + } + .sheet(isPresented: $showCSVExportActivity) { + if let csvData = viewModel.csvExportData { + ActivityView(activityItems: [csvData.file]) + } + } + } + + private func handleNavigation(_ destination: SettingsMenuNavigationDestination?) { + switch destination { + case .coinjoin: + showCoinJoinController() + case .currencySelector: + showCurrencySelector() + case .network: + showNetworkAlert = true + case .rescan: + showRescanWarningAlert = true + case .about: + showAboutController() + case .exportCSV: + handleCSVExport() + case .none: + break + } + + // Reset navigation destination after handling + if destination != nil { + viewModel.resetNavigation() + } + } + + private func showCoinJoinController() { + let nextVC: UIViewController + + if CoinJoinLevelViewModel.shared.infoShown { + nextVC = CoinJoinLevelsViewController.controller() + } else { + nextVC = CoinJoinInfoViewController.controller() + } + nextVC.hidesBottomBarWhenPushed = true + vc.pushViewController(nextVC, animated: true) + } + + private func showCurrencySelector() { + let controller = DWLocalCurrencyViewController(navigationAppearance: .default, presentationMode: .screen, currencyCode: nil) + controller.delegate = delegateInternal + vc.pushViewController(controller, animated: true) + } + + private func showAboutController() { + let controller = DWAboutViewController.create() + vc.pushViewController(controller, animated: true) + } + + private func handleCSVExport() { + Task { + do { + try await viewModel.exportCSV() + } catch { + // Handle error display if needed + } + } + } + + private func updateView() { + // Trigger view refresh after network change + viewModel.resetNavigation() + } + + @ViewBuilder + private func CoinJoinSubtitle(_ cjItem: CoinJoinMenuItemModel) -> some View { + if cjItem.isOn { + CoinJoinProgressInfo(state: cjItem.state, progress: cjItem.progress, mixed: cjItem.mixed, total: cjItem.total, showBalance: !viewModel.isBalanceHidden, textColor: .tertiaryText, font: .caption) + .padding(.top, 2) + } else { + Text(NSLocalizedString("Turned off", comment: "CoinJoin")) + .font(.caption) + .foregroundColor(.tertiaryText) + .padding(.leading, 4) + .padding(.top, 2) + } + } +} + +extension SettingsScreen { + class DelegateInternal: NSObject, DWLocalCurrencyViewControllerDelegate { + let onHide: () -> () + + init(onHide: @escaping () -> ()) { + self.onHide = onHide + } + + func localCurrencyViewController(_ controller: DWLocalCurrencyViewController, didSelectCurrency currencyCode: String) { + onHide() + } + func localCurrencyViewControllerDidCancel(_ controller: DWLocalCurrencyViewController) { onHide() } + } +} + +struct ActivityView: UIViewControllerRepresentable { + let activityItems: [Any] + + func makeUIViewController(context: Context) -> UIActivityViewController { + return UIActivityViewController(activityItems: activityItems, applicationActivities: nil) + } + + func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {} +} diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift new file mode 100644 index 000000000..b36eff5fc --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift @@ -0,0 +1,228 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2025 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import SwiftUI +import SafariServices + +struct ToolsMenuScreen: View { + private let vc: UINavigationController + private let delegateInternal: DelegateInternal + private let onImportPrivateKey: () -> () + + @StateObject private var viewModel = ToolsMenuViewModel() + @State private var showCSVExportAlert = false + @State private var showCSVExportActivity = false + @State private var showZenLedgerSheet = false + + init(vc: UINavigationController, onImportPrivateKey: @escaping () -> ()) { + self.vc = vc + self.onImportPrivateKey = onImportPrivateKey + self.delegateInternal = DelegateInternal(onImportPrivateKey: onImportPrivateKey) + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Back button + HStack { + Button(action: { + vc.popViewController(animated: true) + }) { + Image(systemName: "chevron.left") + .font(.system(size: 18, weight: .medium)) + .foregroundColor(.black) + .frame(width: 36, height: 36) + .overlay( + Circle().stroke(Color.gray300.opacity(0.3), lineWidth: 1) + ) + } + Spacer() + } + .padding(.horizontal, 5) + .padding(.top, 10) + + // Header + HStack { + Text(NSLocalizedString("Tools", comment: "")) + .font(.title) + .fontWeight(.bold) + .foregroundColor(.primaryText) + Spacer() + } + .padding(.top, 30) + .padding(.bottom, 20) + + VStack(alignment: .leading, spacing: 16) { + // First group - all items except ZenLedger + VStack(spacing: 0) { + ForEach(viewModel.items.dropLast()) { item in + MenuItem( + title: item.title, + subtitle: item.subtitle, + details: item.details, + icon: item.icon, + showInfo: item.showInfo, + showChevron: false, + isToggled: item.isToggled, + action: item.action + ) + .frame(minHeight: 60) + } + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + + // Second group - ZenLedger + if let zenLedgerItem = viewModel.items.last { + VStack(spacing: 0) { + MenuItem( + title: zenLedgerItem.title, + subtitle: zenLedgerItem.subtitle, + details: zenLedgerItem.details, + icon: zenLedgerItem.icon, + showInfo: zenLedgerItem.showInfo, + showChevron: false, + isToggled: zenLedgerItem.isToggled, + action: zenLedgerItem.action + ) + .frame(minHeight: 60) + } + .padding(.vertical, 5) + .background(Color.secondaryBackground) + .cornerRadius(12) + .shadow(color: Color.shadow, radius: 20, x: 0, y: 5) + } + Spacer() + } + } + .padding(.horizontal, 20) + .background(Color.primaryBackground) + .navigationBarHidden(true) + .onReceive(viewModel.$navigationDestination) { destination in + handleNavigation(destination) + } + .onReceive(viewModel.$showCSVExportActivity) { show in + showCSVExportActivity = show + } + .alert(NSLocalizedString("CSV Export", comment: ""), isPresented: $showCSVExportAlert) { + Button(NSLocalizedString("Continue", comment: "")) { + handleCSVExport() + } + Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } + } message: { + Text(NSLocalizedString("All payments will be considered as an Expense and all incoming transactions will be Income. The owner of this wallet is responsible for making any cost basis adjustments in their chosen tax reporting system.", comment: "")) + } + .sheet(isPresented: $showCSVExportActivity) { + if let csvData = viewModel.csvExportData { + ActivityView(activityItems: [csvData.file]) + } + } + .sheet(isPresented: $showZenLedgerSheet, onDismiss: { + if let link = viewModel.safariLink { + openSafariLink(link) + viewModel.safariLink = nil + } + }) { + if #available(iOS 16.0, *) { + ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) + .presentationDetents([.height(450)]) + } else { + ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) + } + } + } + + private func handleNavigation(_ destination: ToolsMenuNavigationDestination?) { + switch destination { + case .importPrivateKey: + showImportPrivateKey() + case .extendedPublicKeys: + showExtendedPublicKeys() + case .masternodeKeys: + showMasternodeKeys() + case .csvExport: + showCSVExportAlert = true + case .zenLedger: + showZenLedgerSheet = true + case .none: + break + } + + // Reset navigation destination after handling + if destination != nil { + viewModel.resetNavigation() + } + } + + private func showImportPrivateKey() { + let controller = DWImportWalletInfoViewController.createController() + controller.delegate = delegateInternal + vc.pushViewController(controller, animated: true) + } + + private func showExtendedPublicKeys() { + let controller = ExtendedPublicKeysViewController() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func showMasternodeKeys() { + let controller = KeysOverviewViewController() + controller.hidesBottomBarWhenPushed = true + vc.pushViewController(controller, animated: true) + } + + private func handleCSVExport() { + Task { + do { + try await viewModel.exportCSV() + } catch { + // Handle error display if needed + } + } + } + + private func openSafariLink(_ link: String) { + if let url = URL(string: link) { + let controller = SFSafariViewController(url: url) + vc.present(controller, animated: true, completion: nil) + } + } +} + +extension DWImportWalletInfoViewController { + static func createController() -> DWImportWalletInfoViewController { + let storyboard = UIStoryboard(name: "ImportWalletInfo", bundle: nil) + let controller = storyboard.instantiateInitialViewController() as! DWImportWalletInfoViewController + controller.hidesBottomBarWhenPushed = true + return controller + } +} + +extension ToolsMenuScreen { + class DelegateInternal: NSObject, DWImportWalletInfoViewControllerDelegate { + let onImportPrivateKey: () -> () + + init(onImportPrivateKey: @escaping () -> ()) { + self.onImportPrivateKey = onImportPrivateKey + } + + @objc func importWalletInfoViewControllerScanPrivateKeyAction(_ controller: DWImportWalletInfoViewController) { onImportPrivateKey() } + } +} diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewController.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewController.swift deleted file mode 100644 index 92b14f481..000000000 --- a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewController.swift +++ /dev/null @@ -1,217 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2024 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import SwiftUI - -@objc(DWToolsMenuViewControllerDelegate) -protocol ToolsMenuViewControllerDelegate: AnyObject { - func toolsMenuViewControllerImportPrivateKey(_ controller: ToolsMenuViewController) -} - -@objc(DWToolsMenuViewController) -class ToolsMenuViewController: UIViewController, DWImportWalletInfoViewControllerDelegate { - @objc weak var delegate: ToolsMenuViewControllerDelegate? - - override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { - super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) - self.title = NSLocalizedString("Tools", comment: "") - self.hidesBottomBarWhenPushed = true - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - - self.view.backgroundColor = UIColor.dw_secondaryBackground() - - let items = [ - MenuItemModel( - title: NSLocalizedString("Import Private Key", comment: ""), - showChevron: true, - action: { [weak self] in - self?.showImportPrivateKey() - } - ), - MenuItemModel( - title: NSLocalizedString("Extended Public Keys", comment: ""), - showChevron: true, - action: { [weak self] in - self?.showExtendedPublicKeys() - } - ), - MenuItemModel( - title: NSLocalizedString("Show Masternode Keys", comment: ""), - showChevron: true, - action: { [weak self] in - self?.showMasternodeKeys() - } - ), - MenuItemModel( - title: NSLocalizedString("CSV Export", comment: ""), - showChevron: true, - action: { [weak self] in - self?.askToExportTransactionsInCSV() - } - ), - MenuItemModel( - title: NSLocalizedString("ZenLedger", comment: ""), - subtitle: NSLocalizedString("Simplify your crypto taxes", comment: ""), - icon: .custom("zenledger"), - showChevron: true - ) - ] - - let content = ToolsMenuContent(items: items, onOpenSafari: { link in - let controller = SFSafariViewController(url: URL(string: link)!) - self.present(controller, animated: true, completion: nil) - }) - let swiftUIController = UIHostingController(rootView: content) - swiftUIController.view.backgroundColor = UIColor.dw_secondaryBackground() - self.dw_embedChild(swiftUIController) - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return .lightContent - } - - // MARK: - DWImportWalletInfoViewControllerDelegate - - @objc func importWalletInfoViewControllerScanPrivateKeyAction(_ controller: DWImportWalletInfoViewController) { - delegate?.toolsMenuViewControllerImportPrivateKey(self) - } - - // MARK: - Private - - private func showImportPrivateKey() { - let controller = DWImportWalletInfoViewController.createController() - controller.delegate = self - self.navigationController?.pushViewController(controller, animated: true) - } - - private func showMasternodeKeys() { - let keysViewController = KeysOverviewViewController() - keysViewController.hidesBottomBarWhenPushed = true - self.navigationController?.pushViewController(keysViewController, animated: true) - } - - private func showExtendedPublicKeys() { - let controller = ExtendedPublicKeysViewController() - controller.hidesBottomBarWhenPushed = true - self.navigationController?.pushViewController(controller, animated: true) - } - - private func askToExportTransactionsInCSV() { - let title = NSLocalizedString("CSV Export", comment: "") - let message = NSLocalizedString("All payments will be considered as an Expense and all incoming transactions will be Income. The owner of this wallet is responsible for making any cost basis adjustments in their chosen tax reporting system.", comment: "") - - let alert = UIAlertController(title: title, message: message, preferredStyle: .actionSheet) - alert.addAction(UIAlertAction(title: NSLocalizedString("Continue", comment: ""), style: .default, handler: { [weak self] _ in - self?.exportTransactionsInCSV() - })) - alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil)) - - if UIDevice.current.userInterfaceIdiom == .pad { - alert.popoverPresentationController?.sourceView = self.view - alert.popoverPresentationController?.sourceRect = self.view.bounds - } - - self.present(alert, animated: true, completion: nil) - } - - private func exportTransactionsInCSV() { - self.view.dw_showProgressHUD(withMessage: NSLocalizedString("Generating CSV Report", comment: "")) - - TaxReportGenerator.generateCSVReport { [weak self] fileName, file in - self?.view.dw_hideProgressHUD() - - let activityViewController = UIActivityViewController(activityItems: [file], applicationActivities: nil) - activityViewController.setValue(fileName, forKey: "subject") - - if UIDevice.current.userInterfaceIdiom == .pad { - activityViewController.popoverPresentationController?.sourceView = self?.view - activityViewController.popoverPresentationController?.sourceRect = self?.view.bounds ?? .zero - } - - self?.present(activityViewController, animated: true, completion: nil) - } errorHandler: { [weak self] error in - self?.view.dw_hideProgressHUD() - self?.dw_displayErrorModally(error) - } - } -} - -extension DWImportWalletInfoViewController { - static func createController() -> DWImportWalletInfoViewController { - let storyboard = UIStoryboard(name: "ImportWalletInfo", bundle: nil) - let controller = storyboard.instantiateInitialViewController() as! DWImportWalletInfoViewController - controller.hidesBottomBarWhenPushed = true - return controller - } -} - -struct ToolsMenuContent: View { - var items: [MenuItemModel] - @State private var showZenLedgerSheet: Bool = false - @State private var safariLink: String? = nil - - var onOpenSafari: (String) -> Void - - var body: some View { - List(items) { item in - MenuItem( - title: item.title, - subtitle: item.subtitle, - details: item.details, - icon: item.icon, - showInfo: item.showInfo, - showChevron: item.showChevron, - isToggled: item.isToggled, - action: { - if item == items.last { - showZenLedgerSheet = true - } else { - item.action?() - } - } - ) - .background(Color.secondaryBackground) - .cornerRadius(8) - .shadow(color: .shadow, radius: 10, x: 0, y: 5) - .listRowSeparator(.hidden) - .listRowBackground(Color.clear) - } - .listStyle(.plain) - .background(Color.clear) - .sheet(isPresented: $showZenLedgerSheet, onDismiss: { - if let link = safariLink { - safariLink = nil - onOpenSafari(link) - } - }) { - if #available(iOS 16.0, *) { - ZenLedgerInfoSheet(safariLink: $safariLink) - .presentationDetents([.height(450)]) - } else { - ZenLedgerInfoSheet(safariLink: $safariLink) - } - } - } -} diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift new file mode 100644 index 000000000..b69353001 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift @@ -0,0 +1,107 @@ +// +// Created by Andrei Ashikhmin +// Copyright © 2025 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Combine + +enum ToolsMenuNavigationDestination { + case importPrivateKey + case extendedPublicKeys + case masternodeKeys + case csvExport + case zenLedger +} + +@MainActor +class ToolsMenuViewModel: ObservableObject { + @Published var items: [MenuItemModel] = [] + @Published var navigationDestination: ToolsMenuNavigationDestination? + @Published var showCSVExportActivity = false + @Published var csvExportData: (fileName: String, file: URL)? + @Published var safariLink: String? + + init() { + setupMenuItems() + } + + private func setupMenuItems() { + items = [ + MenuItemModel( + title: NSLocalizedString("Import Private Key", comment: ""), + icon: .custom("image.import.private.key", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .importPrivateKey + } + ), + MenuItemModel( + title: NSLocalizedString("Extended Public Keys", comment: ""), + icon: .custom("image.extend.public.key", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .extendedPublicKeys + } + ), + MenuItemModel( + title: NSLocalizedString("Show Masternode Keys", comment: ""), + icon: .custom("image.masternode.keys", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .masternodeKeys + } + ), + MenuItemModel( + title: NSLocalizedString("CSV Export", comment: ""), + icon: .custom("image.csv.export", maxHeight: 22), + action: { [weak self] in + self?.navigationDestination = .csvExport + } + ), + MenuItemModel( + title: NSLocalizedString("ZenLedger", comment: ""), + subtitle: NSLocalizedString("Simplify your crypto taxes", comment: ""), + icon: .custom("zenledger"), + action: { [weak self] in + self?.navigationDestination = .zenLedger + } + ) + ] + } + + func resetNavigation() { + navigationDestination = nil + showCSVExportActivity = false + csvExportData = nil + safariLink = nil + } + + func exportCSV() async throws { + let result = try await generateCSVReport() + csvExportData = result + showCSVExportActivity = true + } + + private func generateCSVReport() async throws -> (fileName: String, file: URL) { + try await withCheckedThrowingContinuation { continuation in + TaxReportGenerator.generateCSVReport( + completionHandler: { fileName, file in + continuation.resume(returning: (fileName, file)) + }, + errorHandler: { error in + continuation.resume(throwing: error) + } + ) + } + } +} diff --git a/DashWallet/Sources/UI/SwiftUI Components/MenuItem.swift b/DashWallet/Sources/UI/SwiftUI Components/MenuItem.swift index dd7299d17..fbad1b1dd 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/MenuItem.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/MenuItem.swift @@ -32,7 +32,7 @@ struct MenuItem: View { var dashAmount: Int64? = nil var overrideFiatAmount: String? = nil var showToggle: Bool = false - @State var isToggled: Bool = false + @State private var isToggled: Bool = false var action: (() -> Void)? = nil init(title: String, @@ -109,108 +109,117 @@ struct MenuItem: View { } var body: some View { - HStack(spacing: 4) { - if let icon = icon { - ZStack(alignment: .leading) { - Icon(name: icon) - .frame(width: 30, height: 30) - .padding(0) - - if let secondaryIcon = secondaryIcon { - VStack { - Spacer() - HStack { + Button(action: { + if showToggle { + isToggled.toggle() + } else { + action?() + } + }) { + HStack(spacing: 4) { + if let icon = icon { + ZStack(alignment: .leading) { + Icon(name: icon) + .frame(width: 30, height: 30) + .padding(0) + + if let secondaryIcon = secondaryIcon { + VStack { Spacer() - Icon(name: secondaryIcon) - .padding(2) - .frame(width: 20, height: 20) - .background(Color.secondaryBackground) - .clipShape(.circle) - .offset(x: 2, y: 2) + HStack { + Spacer() + Icon(name: secondaryIcon) + .padding(2) + .frame(width: 20, height: 20) + .background(Color.secondaryBackground) + .clipShape(.circle) + .offset(x: 2, y: 2) + } } } } - } - .frame(width: 36, height: 36) - } - - VStack(alignment: .leading, spacing: 0) { - if let topText = topText { - Text(topText) - .font(.caption) - .lineSpacing(3) - .foregroundColor(.tertiaryText) - .padding(.leading, 4) - .padding(.bottom, 2) + .frame(width: 36, height: 36) } - HStack(spacing: 6) { - Text(title) - .font(.subheadline) - .fontWeight(.medium) - .lineSpacing(3) - .foregroundColor(.primaryText) + VStack(alignment: .leading, spacing: 0) { + if let topText = topText { + Text(topText) + .font(.caption) + .lineSpacing(3) + .foregroundColor(.tertiaryText) + .padding(.leading, 4) + .padding(.bottom, 2) + } - if showInfo { - Image(systemName: "info.circle.fill") - .foregroundColor(.gray300) - .imageScale(.small) + HStack(spacing: 6) { + Text(title) + .font(.subheadline) + .fontWeight(.medium) + .lineSpacing(3) + .foregroundColor(.primaryText) + + if showInfo { + Image(systemName: "info.circle.fill") + .foregroundColor(.gray300) + .imageScale(.small) + } + + Spacer() + + if let badgeText = badgeText { + Text(badgeText) + .font(.caption) + .foregroundColor(.systemYellow) + .padding(.vertical, 4) + .padding(.horizontal, 8) + .background(Color.systemYellow.opacity(0.2)) + .clipShape(RoundedRectangle(cornerRadius: 6)) + } } - - Spacer() - - if let badgeText = badgeText { - Text(badgeText) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.leading, 4) + + if let subtitle = subtitleView { + subtitle + } + + if let details = details { + Text(details) .font(.caption) - .foregroundColor(.systemYellow) - .padding(.vertical, 4) - .padding(.horizontal, 8) - .background(Color.systemYellow.opacity(0.2)) - .clipShape(RoundedRectangle(cornerRadius: 6)) + .lineSpacing(3) + .foregroundColor(.tertiaryText) + .padding(.leading, 4) + .padding(.top, 2) } } - .frame(maxWidth: .infinity, alignment: .leading) - .padding(.leading, 4) + .frame(maxWidth: .infinity) - if let subtitle = subtitleView { - subtitle + if showToggle { + Toggle(isOn: $isToggled) { } + .tint(Color.dashBlue) + .scaleEffect(0.75) + .frame(maxWidth: 60) } - if let details = details { - Text(details) - .font(.caption) - .lineSpacing(3) - .foregroundColor(.tertiaryText) - .padding(.leading, 4) - .padding(.top, 2) - } - } - .frame(maxWidth: .infinity) - - if showToggle { - Toggle(isOn: $isToggled) { } - .tint(Color.dashBlue) - .scaleEffect(0.75) - .frame(maxWidth: 60) - } - - if showChevron { - Image(systemName: "chevron.right") - .imageScale(.small) - .foregroundColor(Color.gray) - .padding(.trailing, 10) - } else { - VStack(alignment: .trailing) { - if let dashAmount = dashAmount { - DashAmount(amount: dashAmount) - - if dashAmount != 0 && dashAmount != Int64.max && dashAmount != Int64.min { - if let overriden = overrideFiatAmount { - Text(overriden) - .font(.caption) - .foregroundColor(.secondaryText) - } else { - FormattedFiatText(from: dashAmount) + if showChevron { + Image(systemName: "chevron.right") + .imageScale(.small) + .foregroundColor(Color.gray) + .padding(.trailing, 10) + } else { + VStack(alignment: .trailing) { + if let dashAmount = dashAmount { + DashAmount(amount: dashAmount) + .foregroundColor(.primaryText) + + if dashAmount != 0 && dashAmount != Int64.max && dashAmount != Int64.min { + if let overriden = overrideFiatAmount { + Text(overriden) + .font(.caption) + .foregroundColor(.secondaryText) + } else { + FormattedFiatText(from: dashAmount) + } } } } @@ -219,12 +228,8 @@ struct MenuItem: View { } .contentShape(Rectangle()) .padding(10) - .frame(maxWidth: .infinity, minHeight: 66) - .onTapGesture { - if showToggle { - isToggled.toggle() - } - + .frame(maxWidth: .infinity) + .onChange(of: isToggled) { newValue in action?() } } diff --git a/DashWallet/ar.lproj/Localizable.strings b/DashWallet/ar.lproj/Localizable.strings index 25e967a58..e082887df 100644 --- a/DashWallet/ar.lproj/Localizable.strings +++ b/DashWallet/ar.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@غير مسموح بالوصول إلى الكاميرا"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "المبلغ في داش"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "بين محفظة داش وحساب Coinbase الخاص بك"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "بلوك"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "يتم التأكيد"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "اتصال مع منصات الطرف الثالث"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "العملة الافتراضية ، الاختصارات ، حول ..."; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "احصل على السعر"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "استيراد مفتاح خاص"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "اعادة نسخ بلوكشين"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "إعادة تعيين"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "المزامنة جارية... قد لا تكون النتائج كاملة."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "متزامن مع محفظة داش الحالية"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "عرض عبارة المرور ، المحفظة الاحتياطية ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "عرض عبارة الاسترداد"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/bg.lproj/Localizable.strings b/DashWallet/bg.lproj/Localizable.strings index 004c74d57..9938bcd15 100644 --- a/DashWallet/bg.lproj/Localizable.strings +++ b/DashWallet/bg.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ не е разрешен достъпа до Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ не е позволен достъп до камерата"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ не е разрешен достъпа до Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Разреши достъпа до камерата в Настройки"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Разреши достъпа до Face ID в Настройки"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Разреши достъпа до Touch ID в Настройки"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Блок"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Buy & Sell"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Купи & Продай Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Buy a Gift Card"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Потвърждаване"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Свързване към трета страна за обмяна"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Валута по подразбиране,преки пътища, относно..."; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Импортиране на частен ключ."; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Повторно сканиране на блок-веригата"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Нулиране"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Изчистен!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Синхронизирай сега"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Преглед в Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Преглед на парола, резервен портфейл ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Виж фразата за възстановяване"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Адрес за гласуване"; diff --git a/DashWallet/ca.lproj/Localizable.strings b/DashWallet/ca.lproj/Localizable.strings index dd7555bc4..80614bd73 100644 --- a/DashWallet/ca.lproj/Localizable.strings +++ b/DashWallet/ca.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reinicia"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/cs.lproj/Localizable.strings b/DashWallet/cs.lproj/Localizable.strings index c70716062..8cd296e79 100644 --- a/DashWallet/cs.lproj/Localizable.strings +++ b/DashWallet/cs.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ si vás chce přidat mezi kontakty"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ nemá přístup k Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nemá přístup k fotoaparátu"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ nemá přístup k Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Povolte přístup k fotoaparátu v nastavení"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Povolte přístupk k Face ID v nastavení"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Povolote přístup k Touch ID v nastavení"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blok"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Buy & Sell"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Nákup a prodej Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Nákup dárkového poukazu"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Konfirmace"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Spojte se s burzami třetích stran"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Výchozí měna, zkratky, o aplikaci"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generovat rozšířený veřejný klíč?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importovat Privátní Klíč"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Dejte mi vědět, až to bude hotové"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Nechte přátele a nejbližší, aby se připojili k Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Nechte přátele a nejbližší připojit se k Dash Network. Pozvěte je do světa sociálního bankingu."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Skenovat blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Resetovat"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Uchovávat společnou transakční historii"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Přeneseno!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Synchronizovat"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Zobrazit ve vyhledávači"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Fráze pro obnovení, záloha peněženky..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Zobrazit frázi pro obnovení"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Adresa pro hlasování"; diff --git a/DashWallet/da.lproj/Localizable.strings b/DashWallet/da.lproj/Localizable.strings index a86334747..d3f2136de 100644 --- a/DashWallet/da.lproj/Localizable.strings +++ b/DashWallet/da.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ har ikke tilladelse til at bruge kameraet"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Nulstil"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/dashwallet-Bridging-Header.h b/DashWallet/dashwallet-Bridging-Header.h index d2960e9bd..2c0d9209d 100644 --- a/DashWallet/dashwallet-Bridging-Header.h +++ b/DashWallet/dashwallet-Bridging-Header.h @@ -24,6 +24,8 @@ static const bool _SNAPSHOT = 0; #import "DSKeyManager.h" #import "BigIntTypes.h" #import "NSString+Dash.h" +#import "DSChainManager.h" +#import "DSChain.h" //MARK: DashWallet #import "DWEnvironment.h" @@ -132,6 +134,7 @@ static const bool _SNAPSHOT = 0; #import "DWGetStartedContentViewController.h" #import "DWDashPayContactsUpdater.h" #import "DWDPUpdateProfileModel.h" +#import "DWInvitationHistoryViewController.h" #endif //MARK: CrowdNode @@ -143,17 +146,15 @@ static const bool _SNAPSHOT = 0; #import "DSChain+DashWallet.h" //MARK: Tabbar -#import "DWMainMenuViewController.h" #import "DWWipeDelegate.h" #import "DWPayModel.h" -#import "DWMainMenuViewControllerDelegate.h" //MARK: Home #import "DWHomeModel.h" #import "DWRecoverViewController.h" #import "DSAuthenticationManager.h" +#import "DSAuthenticationManager+Private.h" #import "DWSecureWalletDelegate.h" -#import "DWSettingsMenuModel.h" #import "DWBasePayViewController.h" #import "DWHomeProtocol.h" @@ -161,12 +162,21 @@ static const bool _SNAPSHOT = 0; #import "UIViewController+DWDisplayError.h" #import "DWFormTableViewController.h" #import "DWAboutViewController.h" -#import "DWMainMenuModel.h" #import "DWCurrentUserProfileView.h" -#import "DWMainMenuTableViewCell.h" #import "DWSharedUIConstants.h" #import "DWUserProfileContainerView.h" #import "DWDashPayReadyProtocol.h" +#import "DWSetPinViewController.h" +#import "DWAdvancedSecurityViewController.h" +#import "DWBiometricAuthModel.h" +#import "DWAdvancedSecurityModel.h" +#import "DWResetWalletInfoViewController.h" +#import "DWPreviewSeedPhraseModel.h" +#import "DWPreviewSeedPhraseViewController.h" +#import "DWSecureWalletDelegate.h" +#if SNAPSHOT +#import "DWDemoAdvancedSecurityViewController.h" +#endif //MARK: Onboarding #import "DWTransactionStub.h" diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index d14c68a16..aa7f41e8b 100644 --- a/DashWallet/de.lproj/Localizable.strings +++ b/DashWallet/de.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ hat dir eine Kontaktanfrage geschickt"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ darf nicht auf die Face ID zugreifen"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ darf nicht auf die Kamera zugreifen"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ darf nicht auf die Touch ID zugreifen"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu Kontakte/ %3$lu Profil-Updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Zugriff auf Kamera in den Einstellungen erlauben"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Zugriff auf Face ID in den Einstellungen erlauben"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Erlaubst du, dass alle Transaktionen von der Dash Wallet an Zenledger gesendet werden?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Zugriff auf Touch ID in den Einstellungen erlauben"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Betrag in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Zwischen Dash Wallet und deinem Coinbase Konto"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Kaufe & Verkaufe"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Kaufe & Verkaufe Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Gutscheinkarte kaufen"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Bestätige"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Mit Drittanbieter-Börsen verknüpfen"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Verbinde deine Krypto-Wallets mit der Zenledger Plattform. Lerne mehr darüber und beginne mit deinen Transaktionen in der Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Datum: Alt nach neu"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Standardwährung, Shortcuts, über..."; - /* Voting */ "Default filter setting" = "Standardmäßige Filtereinstellung"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Finde Händler die DASH akzeptieren"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "von deinem Coinbase Konto"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Vollständig gemixt"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Erweiterten öffentlichen Schlüssel generieren?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "CSV-Bericht erstellen"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Angebot einholen"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Privaten Schlüssel importieren"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Private Key importieren, CSV exportieren..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Zusätzlich zu den angezeigten Coinbase-Gebühren wird ein Spread in den Preis eingerechnet. Bei der Verwendung von Advanced Trade ist kein Spread enthalten, da Sie direkt mit dem Orderbuch interagieren.\n\nDie Märkte für Kryptowährungen sind volatil, und dies ermöglicht es uns, vorübergehend einen Preis für die Handelsausführung festzulegen."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Benachrichtige mich, wenn dies abgeschlossen ist"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Lass deine Freunde und Familie bei Dash mitmachen"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Lass deine Freunde und Familie bei Dash mitmachen. Lade sie zur Welt des Social Banking ein."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Blockchain erneut scannen"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Zurücksetzen"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Ergebnisse"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Gemeinsamen Transaktionsverlauf erhalten"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Einreichen"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Geleert!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Synchronisierung läuft... Ergebnisse können unvollständig sein."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Jetzt synchronisieren"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Mit aktueller Dash Wallet synchronisiert"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Im Explorer ansehen"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Passphrase anzeigen, Wallet sichern..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Wiederherstellungsphrase ansehen"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Stimmen: Aufsteigend"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Abstimmungs-Adresse"; diff --git a/DashWallet/el.lproj/Localizable.strings b/DashWallet/el.lproj/Localizable.strings index 13d37dfb6..d6ecc03a9 100644 --- a/DashWallet/el.lproj/Localizable.strings +++ b/DashWallet/el.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ σας έστειλε αίτημα επαφής"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ δεν επιτρέπεται να έχετε πρόσβαση στο Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ δεν επιτρέπεται να έχετε πρόσβαση στην κάμερα"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ δεν επιτρέπεται να έχετε πρόσβαση στο Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@~ %2$lu επαφές / %3$lu ενημερώσεις προφίλ"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Επιτρέψτε πρόσβαση της κάμερας στις Ρυθμίσεις"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Επιτρέψτε πρόσβαση του Face ID στις Ρυθμίσεις"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Να επιτρέπεται η αποστολή όλων των συναλλαγών από το Dash Wallet στο Zenledger;"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Επιτρέψτε πρόσβαση του Touch ID στις Ρυθμίσεις"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Ποσό σε Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Μεταξύ του Dash Wallet και του λογαριασμού σας στην Coinbase."; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Μπλόκ"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Αγορά και Πώληση"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Αγορά και Πώληση Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Αγοράστε μια δωροκάρτα"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Επιβεβαίωση"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Συνδεθείτε με ανταλλακτήρια τρίτων"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Συνδέστε τα πορτοφόλια σας με την πλατφόρμα ZenLedger. Μάθετε περισσότερα και ξεκινήστε τις συναλλαγές σας με το Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Ημερομηνία: Παλαιά προς νέα"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Προεπιλεγμένο νόμισμα, συντομεύσεις, σχετικά με..."; - /* Voting */ "Default filter setting" = "Προεπιλεγμένη ρύθμιση φίλτρου"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Βρείτε εμπόρους που δέχονται DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "από τον λογαριασμό σας στην Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Πλήρως αναμεμειγμένα"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Δημιουργία Εκτεταμένου Δημόσιου Κλειδιού"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Δημιουργία αναφοράς CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Αποκτήστε προσφορά"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Εισάγετε το ιδιωτικό κλειδί"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Εισαγωγή ιδιωτικού κλειδιού, εξαγωγή CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Εκτός από την εμφανιζόμενη αμοιβή της Coinbase, συμπεριλαμβάνουμε στην τιμή ένα spread. Όταν χρησιμοποιείτε το Advanced Trade, δεν περιλαμβάνεται spread, επειδή αλληλεπιδράτε απευθείας με το βιβλίο εντολών.\n\nΟι αγορές κρυπτονομισμάτων είναι ευμετάβλητες και αυτό μας επιτρέπει να κλειδώσουμε προσωρινά μια τιμή για την εκτέλεση των συναλλαγών."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Ενημερώστε με όταν ολοκληρωθεί"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Αφήστε τους φίλους και τους συγγενείς σας να συμμετάσχουν στο Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Αφήστε τους φίλους και την συγγενείς σας να ενταχθούν στο Dash Network. Προσκαλέστε τους στον κόσμο της κοινωνικής τραπεζικής."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Επανασάρωση του blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Επαναφορά"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Αποτελέσματα"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Διατήρηση Ιστορικού Αμοιβαίων Συναλλαγών"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Υποβολή"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Σαρώθηκε"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Συγχρονισμός σε εξέλιξη... Τα αποτελέσματα μπορεί να μην είναι πλήρη."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Συγχρονισμός Τώρα"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Συγχρονισμένο με το τρέχον Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Προβολή στον Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Προβολή φράσης πρόσβασης, εφεδρικού πορτοφολιού ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Προβολή Φράσης Ανάκτησης"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Ψήφοι: Χαμηλές προς υψηλές"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Διεύθυνση Ψήφου"; diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index 0cba67f80..fdcb94baf 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/eo.lproj/Localizable.strings b/DashWallet/eo.lproj/Localizable.strings index a3562dcdf..bc9e1d566 100644 --- a/DashWallet/eo.lproj/Localizable.strings +++ b/DashWallet/eo.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reŝargi"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index b8b97f3ed..f8fa30a56 100644 --- a/DashWallet/es.lproj/Localizable.strings +++ b/DashWallet/es.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ te ha enviado una solicitud de contacto"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ no está permitido a acceder al Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ No se permite acceder a la cámara"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ no está permitido a acceder al Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contactos / %3$lu actualizaciones de perfil"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Permite acceso a cámara en las Configuraciones"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Permite acceso al Face ID en Configuraciones"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "¿Permitir el envío de todas las transacciones desde Dash Wallet a Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Permite acceso al Touch ID en Configuraciones"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Monto en Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Entre la billetera de Dash y tu cuenta de Coinbase."; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Bloque"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Comprar y Vender"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Comprar y Vender Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Comprar una Tarjeta de regalo"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirmando"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Conectar con exchanges de terceros"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Conecta tus billeteras criptográficas a la plataforma ZenLedger. Obten más información y comienza con tus transacciones de Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Fecha: Viejo a nuevo"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Moneda predeterminada, atajos, acerca..."; - /* Voting */ "Default filter setting" = "Configuración de filtro predeterminada"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Encuentra comerciantes que acepten DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "desde tu cuenta de Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Completamente mezclado"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "¿Generar claves públicas extendidas?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generando informe CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Obtener cotización"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Barrer billetera de papel"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importar llave privada, exportar CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Además de la comisión de Coinbase mostrada, incluimos un diferencial en el precio. Cuando usas Comercio avanzado, no se incluye el margen porque estás interactuando directamente con el libro de pedidos.\n\nLos mercados de criptomonedas son volátiles y esto nos permite fijar temporalmente un precio para la ejecución de operaciones."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Avísame cuando esté listo"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Deja que tus amigos y familiares se unan a Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Deja que sus amigos y familiares se unan a la red de Dash. Invítalos al mundo de la banca social."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Escanear de nuevo la cadena de bloques"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reiniciar"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Resultados"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Conservar el historial de transacciones mutuas"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Entregar"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "¡Barrido!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sincronización en curso… Es posible que los resultados no estén completos."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sincronizar Ahora"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Sincronizado con la billetera de Dash actual"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Ver en el explorador"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Ver frase de recuperación, hacer backup..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Ver frase de recuperación"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votos: Bajo a alto"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Dirección de voto"; diff --git a/DashWallet/et.lproj/Localizable.strings b/DashWallet/et.lproj/Localizable.strings index 591c8c9c1..3ce29d34e 100644 --- a/DashWallet/et.lproj/Localizable.strings +++ b/DashWallet/et.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = " %@ pole kaamerale ligipääsu"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index 83514c3c8..52d0956ac 100644 --- a/DashWallet/fa.lproj/Localizable.strings +++ b/DashWallet/fa.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@درخواستی برایتان برای ارتباط فرستاد"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "اجازه ارسال همه تراکنش‌‌ها از دش والت به ذن‌لجر را می‌دهید؟ "; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "مبلغ بر حسب دش"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "بین داش والت و حساب کوین‌بیس شما"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "بلاک"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "در حال تائید"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "ارتباط با صرافی‌های طرف سوم"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "کیف‌های پول‌تان را به پلتفرم ذن‌لجر متصل کنید. اطلاعات بیشتر و آغاز به کار با تراکنش‌هایتان در دش والت"; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "واحد پول پیش‌فرض، میان‌برها، درباره..."; - /* Voting */ "Default filter setting" = "تنظیمات پیش‌فرض فیلتر"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "فروشنده‌ای بیابید که دش می‌پذیرد"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "دریافت قیمت تخمینی"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "وارد کردن کلید خصوصی"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "اسکن دوباره بلاکچین"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "بازنشانی"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "نتایج"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "ثبت"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "فرآیند همزمان‌سازی در جریان است...نتایج شاید کامل نباشد. "; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "همزمان‌سازی با دش والت کنونی"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "مشاهده گذرواژه، کیف پول پشتیبان ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "مشاهده عبارت بازیابی"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/fi.lproj/Localizable.strings b/DashWallet/fi.lproj/Localizable.strings index 992c0e41b..610505791 100644 --- a/DashWallet/fi.lproj/Localizable.strings +++ b/DashWallet/fi.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Nollaa"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index 3a54e1490..e42de6e68 100644 --- a/DashWallet/fil.lproj/Localizable.strings +++ b/DashWallet/fil.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ ay nagpadala sa iyo ng isang kahilingan sa pakikipag-ugnay"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ ay hindi pinahihintulutang i-access ang Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ ay hindi pinahihintulutang i-access ang kamera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ ay hindi pinahihintulutang i-access ang Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu mga contact / %3$lu mga update sa profile"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Payagang i-access ang camera sa Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Payagang i-access ang Face ID sa Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Payagan ang pagpapadala ng lahat ng mga transaksyon mula sa Dash Wallet sa Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Payagang i-access ang Touch ID sa Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Halaga sa Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Sa pagitan ng Dash Wallet at ng iyong Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Bili At Benta"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Bumili at magbenta ng Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Bumili ng Gift Card"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Kinukumpirma"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Ikonekta sa mga third party na palitan"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Ikonekta ang iyong mga crypto wallet sa platform ng ZenLedger. Matuto pa at magsimula sa iyong mga transaksyon sa Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Petsa: Luma sa bago"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default na pananalapi, shortcuts, about..."; - /* Voting */ "Default filter setting" = "Default na setting ng filter"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Maghanap ng mga merchant na tumatanggap ng DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "mula sa iyong Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Ganap na Nahalo"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Bumuo ng pinalawig na mga public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Pagbuo ng CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Kumuha ng Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "I-import ang private key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Mag-import ng pribadong key, Mag-export ng CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Bilang karagdagan sa ipinapakitang bayad sa Coinbase, nagsasama kami ng spread sa presyo. Kapag gumagamit ng Advanced Trade, walang spread na kasama dahil direktang nakikipag-ugnayan ka sa order book.\n\nAng mga merkado ng Cryptocurrency ay pabagu-bago, at nagbibigay-daan ito sa amin na pansamantalang i-lock ang isang presyo para sa pagpapatupad ng kalakalan."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Ipaalam sa akin kung kailan ito tapos"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Hayaan ang iyong mga kaibigan at pamilya na sumali sa Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Hayaan ang iyong mga kaibigan at pamilya na sumali sa Dash Network. Anyayahan sila sa mundo ng social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Muling i-scan ang blockchain "; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "I-reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Mga resulta"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Panatlihin ang Kasaysayan ng Kapwang Transaksyon"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Isumite"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Tangayin!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Kasalukuyang isinasagawa ang pag-sync... Maaaring hindi kumpleto ang resulta."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "I-sync ngayon"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Naka-sync sa kasalukuyang Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Tingnan sa Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Ipakita ang passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Ipakita ang recovery phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Mga Boto: Mababa hanggang mataas"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Address ng pagboto"; diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index d17c956c4..b4970aae4 100644 --- a/DashWallet/fr.lproj/Localizable.strings +++ b/DashWallet/fr.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ vous a envoyé une demande de contact"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ n'est pas autorisé à accéder à Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ n'est pas autorisé à accéder à l'appareil photo"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ n'est pas autorisé à accéder à Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu mises à jour de profil"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Permettre l'accès à la caméra dans Réglages"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Permettre l'accès à Face ID dans Réglages"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Autoriser l'envoi de toutes les transactions depuis Dash Wallet vers ZenLedger ?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Permettre l'accès à Touch ID dans Réglages"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Montant en dashs"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Entre Dash Wallet et votre compte Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Bloc"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Acheter & vendre"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Acheter & vendre des dashs"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Acheter une carte-cadeau"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirmation…"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Se connecter aux plateformes de change tierces"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connectez vos portefeuilles crypto à la plateforme ZenLedger. En savoir plus et se lancer avec vos transactions Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date : ancienne à récente"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Monnaie par défaut, raccourcis, à propos…"; - /* Voting */ "Default filter setting" = "Réglage de filtre par défaut"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Trouver des vendeurs qui acceptent Dash"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "depuis votre compte Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Entièrement mélangé"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Générer des clés publiques étendues ?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Génération du report CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Obtenir un devis"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importer une clé privée"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importer une clé privée, exporter CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "En plus des frais Coinbase affichés, nous incluons un écart dans le prix. En utilisant le mode avancé de trading, aucun écart n'est inclus car vous intervenez directement sur le registre d'ordres.\n\nLes marchés cryptomonétaires sont volatiles, et cela nous permet de verrouiller temporairement un cours pour l'exécution du trading."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Prévenez-moi quand c'est fait"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Permet à vos amis et votre famille de rejoindre Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Permet à vos amis et votre famille de rejoindre le réseau Dash. Invitez-les dans le monde de banque sociale."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Réanalyser la blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Réinitialiser"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Résultats"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "conserver un historique de vos transactions mutuelles"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Valider"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Récupéré !"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Synchronisation en cours… Les résultats peuvent être encore incomplets."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Synchroniser maintenant"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synchronisé avec le Dash Wallet actuel"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Voir dans l'explorateur"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Voir la phrase de récupération, sauvegarder le portefeuille…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Voir la phrase de récupération"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes : de bas à haut"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Adresse de vote"; diff --git a/DashWallet/hr.lproj/Localizable.strings b/DashWallet/hr.lproj/Localizable.strings index 53142f916..6889b8e54 100644 --- a/DashWallet/hr.lproj/Localizable.strings +++ b/DashWallet/hr.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/hu.lproj/Localizable.strings b/DashWallet/hu.lproj/Localizable.strings index 26005937f..7579a5abc 100644 --- a/DashWallet/hu.lproj/Localizable.strings +++ b/DashWallet/hu.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nem tud hozzáférni a kamerához"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Visszaállítás"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/id.lproj/Localizable.strings b/DashWallet/id.lproj/Localizable.strings index 0ed4efe36..445535d2d 100644 --- a/DashWallet/id.lproj/Localizable.strings +++ b/DashWallet/id.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ telah mengirim anda permintaan kontak"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ tidak diizinkan mengakses Pengenal Wajah"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ tidak diizinkan mengakses kamera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ tidak diizinkan mengakses Pengenal Sentuh"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu kontak / %3$lu pembaruan profil"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Izinkan akses kamera di Pengaturan"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Izinkan akses Pengenal Wajah di Pengaturan"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Izinkan mengirim semua transaksi dari dompet Dash ke Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Izinkan akses Pengenal Sentuh di Pengaturan"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Jumlah dalam Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Antara Dash Wallet dan akun Coinbase Anda"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blok"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Beli & Jual"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Beli & Jual Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Beli Kartu Hadiah"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Mengkonfirmasikan"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Terhubung dengan pertukaran pihak ketiga"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Hubungkan dompet crypto anda ke platform Zenledger. Pelajari lebih lanjut dan mulai dengan transaksi Domept Dash."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Tanggal: Lama ke baru"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Mata uang standar, pintasan, tentang ..."; - /* Voting */ "Default filter setting" = "Pengaturan filter default"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Temukan toko yang menerima Dash"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "dari akun Coinbase Anda"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Tercampur sepenuhnya"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Hasilkan kunci publik yang diperluas?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Membuat Laporan CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Dapatkan Penawaran"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Impor kunci pribadi"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Impor kunci pribadi, Ekspor CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Selain biaya Coinbase yang ditampilkan, kami menyertakan Spread harga. Saat menggunakan Advanced Trade, tidak ada spread yang disertakan karena Anda berinteraksi langsung dengan buku pesanan.\n\nPasar Cryptocurrency tidak stabil, dan ini memungkinkan kami mengunci sementara harga untuk eksekusi perdagangan."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Beri tahu saya jika sudah selesai"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Biarkan teman dan keluarga Anda bergabung dengan Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Biarkan teman dan keluarga Anda bergabung dengan Dash Network. Ajak mereka ke dunia perbankan sosial."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Piindai ulang blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Atur-ulang"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Hasil"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Simpan Sejarah Transaksi Bersama"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Kirim"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "bersihkan!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sinkronisasi sedang berlangsung... Hasil mungkin tidak lengkap."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sinkronkan Sekarang"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Disinkronkan dengan Dompet Dash saat ini"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Lihat di Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Lihat frasa sandi, cadangkan domept..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Lihat frasa pemulihan"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Rendah ke tinggi"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Alamat pemungutan suara"; diff --git a/DashWallet/it.lproj/Localizable.strings b/DashWallet/it.lproj/Localizable.strings index 276d23c82..3593dd3c8 100644 --- a/DashWallet/it.lproj/Localizable.strings +++ b/DashWallet/it.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ ti ha inviato una richiesta di contatto"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ non hai dato il permesso alla videocamera"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ non ha il permesso di accedere alla videocamera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ non hai dato il permesso al sensore biometrico digitale"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contatti / %3$lu aggiornamenti del profilo"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Abilita l'accesso alla videocamera in Impostazioni->Privacy->Fotocamera"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Consenti accesso Face ID in Impostazioni"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Consentire l'invio di tutte le transazioni da Dash Wallet a Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Consenti accesso Touch ID in Impostazioni"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Importo in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Tra Dash Wallet e il tuo account Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blocchi"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Compra & Vendi"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Compra & Vendi Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Acquista una carta regalo "; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "In Conferma"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connetti a Exchanges esterni"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Collega i tuoi portafogli crittografici alla piattaforma ZenLedger. Scopri di più e inizia con le transazioni del tuo Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Data: dal Vecchio al nuovo"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Valuta predefinita, scorciatoie, riguardo ..."; - /* Voting */ "Default filter setting" = "Impostazione del filtro predefinita"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Trova commercianti che accettano DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "dal tuo conto Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Completamente miscelato"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generare chiavi pubbliche estese?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generazione rapporto CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Ottieni preventivo"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importa chiave privata"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importa chiave privata, Esporta CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Oltre alla commissione Coinbase visualizzata, includiamo uno spread nel prezzo. Quando si utilizza Advanced Trade, non è incluso nessuno spread perché si interagisce direttamente con il portafoglio ordini.\n\nI mercati delle criptovalute sono volatili e questo ci consente di bloccare temporaneamente un prezzo per l'esecuzione degli scambi."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Fammi sapere quando è fatto"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Consenti ai tuoi amici e familiari di unirsi a Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Consenti ai tuoi amici e familiari di unirsi alla Dash Network. Invitali nel mondo del social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Riscansione blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Risultati"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Conserva la cronologia delle transazioni reciproche"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Invia"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Pulito!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sincronizzazione in corso... I risultati potrebbero non essere completi."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sincronizza Ora"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Sincronizzato con l'attuale Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Visualizza su Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Visualizza passphrase, di backup del portafoglio ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Visualizza la frase di recupero"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Voti: da basso a alto"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Indirizzo di voto"; diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index f7e16f722..88d8beab1 100644 --- a/DashWallet/ja.lproj/Localizable.strings +++ b/DashWallet/ja.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ が連絡先リクエストを送信しました"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ はFace IDへのアクセスが許可されていません"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ はカメラへのアクセスが許可されていません"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@はTouch IDへのアクセスが許可されていません"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu の連絡先 / %3$lu のプロフィール更新"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "端末設定でカメラへのアクセスを許可する"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "端末設定でFace IDへのアクセスを許可する"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "DashウォレットからZenledgerに全ての取引の送信を許可しますか。"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "端末設定でTouch IDへのアクセスを許可する"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "金額(Dash)"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "DashウォレットとCoinbaseアカウント間"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "ブロック"; @@ -357,7 +354,7 @@ "Buy & Sell" = "売買"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Dashを売買する"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "ギフトカードを購入する"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "確認中"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "サードパーティーの取引所に接続する"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "お手持ちのクリプトウォレットをZenLedgerのプラットフォームと紐づけましょう。詳細をご確認の上、Dashウォレットの取引を始めましょう。"; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "日付:古い順"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "初期設定の通貨、ショートカット、...について"; - /* Voting */ "Default filter setting" = "デフォルトのフィルター設定"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "DASHが使える加盟店を探す"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "Coinbaseアカウントから"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "完全にミキシングされました"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "拡張されたパブリックキーを作成しますか。"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "CSVレポートの作成"; - /* Coinbase/Convert Crypto */ "Get Quote" = "見積もりを得る"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "プライベートキーをインポート"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "プライベートキーのインポート、CSVのエクスポート..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "表示されているCoinbaseの手数料に加え、スプレッドも価格に含まれています。アドバンスドトレードを利用する場合、注文帳簿と直接連動をするため、スプレッドは含まれません。\n\n仮想通貨市場は変動が激しいため、取引執行時の価格を一時的に固定できます。"; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "完了したらお知らせください"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "友達や家族を誘ってDashに参加しましょう"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "友達や家族をDashネットワークに招待しましょう。ソーシャルバンクの世界へご招待します。"; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "ブロックチェーンの再スキャン"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "リセット"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "結果"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "双方の取引履歴を保持する"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "提出する"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "スイープしました!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "同期中... 入力結果が完了していない可能性があります。"; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "すぐに同期する"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "現在使用しているDash Walletと同期"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "エクスプローラーで表示"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "パスフレーズを表示して、ウォレットをバックアップ ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "復元フレーズを表示する"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "投票数:低から高"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = " 投票のアドレス"; diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index 19f74b648..e73330423 100644 --- a/DashWallet/ko.lproj/Localizable.strings +++ b/DashWallet/ko.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ 님이 당신에게 연락처 요청을 보냈습니다"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@에 페이스 ID 접근 권한이 없습니다"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@에 카메라 접근 권한이 없습니다"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@게 터치 ID 접근 권한이 없습니다"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu 연락처 / %3$lu 프로필 업데이트"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "설정에서 카메라 접근을 허용"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "설정에서 페이스 ID 접근을 허용"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "대시 지갑의 모든 거래를 Zenledger로 보내시겠습니까?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "설정에서 터치 ID 접근을 허용"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "대시 금액"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "대시 지갑과 코인베이스 계정간"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "블록"; @@ -357,7 +354,7 @@ "Buy & Sell" = "매수 & 매도"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "대시 매수 & 매도"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "기프트 카드 구매"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "확인 중"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "제3자 거래소에 연결"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "당신의 암호화폐 지갑을 Zenledger 플랫폼에 연결하세요. 자세한 내용을 확인하시고 대시 지갑 거래를 통해 지금 시작하세요."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "날짜: 과거부터 현재"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "통화 기본값, 단축키, 관련 정보..."; - /* Voting */ "Default filter setting" = "디폴트 필터 설정"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "대시 거래를 허용하는 판매자 찾기"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "당신의 코인베이스 계좌로부터"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "완전히 믹싱됨"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "확장된 공개 키를 생성합니까?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "CSV 보고서 생성중"; - /* Coinbase/Convert Crypto */ "Get Quote" = "견적 받기"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "개인 키 불러오기"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "개인 키 가져오기, CSV 내보내기..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "금액에는 표시된 코인베이스 수수료 외에도 스프레드가 포함되었습니다. 향상된 거래 기능을 사용하는 경우에는 주문장과 직접 상호작용 하므로 스프레드가 포함되지 않습니다.\n\n암호화폐 시장은 변동성이 높기 때문에, 거래 수행을 위해서는 가격을 일시적으로 고정하게 됩니다."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "완료되면 알려주세요"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "당신의 친구와 가족이 대시에 가입하도록 도와주세요"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "당신의 친구와 가족들이 대시 네트워크에 가입하도록 도와주고, 소셜 뱅킹의 세계에 초대해보세요."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "블록체인 재스캔"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "리셋"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "결과"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "상호 거래 내역을 유지합니다"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "제출"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "잔액이 지갑으로 보내졌습니다!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "동기화 중... 결과가 나타나지 않을 수 있습니다."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "지금 동기화합니다"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "현재 대시 지갑과 동기화됨"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "탐색기에서 보기"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "비밀문구, 백업 지갑 보기...."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "복구 문구 확인"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "투표: 낮음부터 높음"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "투표 주소"; diff --git a/DashWallet/mk.lproj/Localizable.strings b/DashWallet/mk.lproj/Localizable.strings index 6727f3fc4..5379e98c9 100644 --- a/DashWallet/mk.lproj/Localizable.strings +++ b/DashWallet/mk.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Ресетирај"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/ms.lproj/Localizable.strings b/DashWallet/ms.lproj/Localizable.strings index 438aaa438..c4732b365 100644 --- a/DashWallet/ms.lproj/Localizable.strings +++ b/DashWallet/ms.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ tidak dibenarkan untuk mengakses kamera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/nb.lproj/Localizable.strings b/DashWallet/nb.lproj/Localizable.strings index 014c412fb..373b6224b 100644 --- a/DashWallet/nb.lproj/Localizable.strings +++ b/DashWallet/nb.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ har ikke tilgang til kameraet"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Nullstill"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/nl.lproj/Localizable.strings b/DashWallet/nl.lproj/Localizable.strings index 60f13515d..5f633e97d 100644 --- a/DashWallet/nl.lproj/Localizable.strings +++ b/DashWallet/nl.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ heeft u een contactverzoek gestuurd"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ heeft geen toegang tot gezichtsherkenning"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ heeft geen toegang tot de camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ heeft geen toegang tot vingeridentificatie"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacten / %3$lu profiel updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Camera toegang in Instellingen toestaan"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Gezichtsherkenning in Instellingen toestaan"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Toestaan ​​dat alle transacties van je Dash portemonnee naar Zenledger worden verzonden?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Vingeridentificatie toegang in Instellingen toestaan"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Bedrag in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Tussen Dash portemonnee en je Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Kopen & verkopen"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Koop & verkoop Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Koop een geschenkbon"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Aan het bevestigen"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Verbind met beurzen van derden"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Verbind je crypto portemonnees met het ZenLedger platform. Kom meer te weten en ga aan de slag met je Dash portemonnee transacties."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Datum: Oud naar nieuw"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Standaard valuta, snelkoppelingen, over... "; - /* Voting */ "Default filter setting" = "Standaard filterinstelling"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Vind winkeliers die Dash accepteren"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "vanaf je Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Volledig gemixt"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Genereer uitgebreide publieke sleutels?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "CSV rapport genereren"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Offerte aanvragen"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importeer prive-sleutel"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Privésleutel importeren, CSV exporteren..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Naast de getoonde Coinbase fee, nemen we een spread mee in de prijs. Bij gebruik van Advanced Trade optie is er geen spread inbegrepen omdat je rechtstreeks met het orderboek communiceert.\n\nCryptocurrency-markten zijn volatiel en dit stelt ons in staat om tijdelijk een prijs vast te leggen voor de uitvoering van transacties."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Laat me weten wanneer het klaar is"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Laat je vrienden en familie lid worden van Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Laat je vrienden en familie lid worden van het Dash Netwerk. Nodig ze uit in de wereld van sociaal bankieren."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Blockchain opnieuw scannen"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Resultaten"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Bewaar de geschiedenis van gemeenschappelijke transacties"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Indienen"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Geveegd!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Synchronisatie bezig... Resultaten zijn mogelijk niet compleet."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Nu synchroniseren"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Gesynchroniseerd met huidige Dash portemonnee"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Bekijk in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Bekijk wachtwoord, maak backup portemonnee ..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Toon herstelzin"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Stemmen: van laag naar hoog"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Stem adres"; diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index 1995bba7e..ce32726a9 100644 --- a/DashWallet/pl.lproj/Localizable.strings +++ b/DashWallet/pl.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@wysłał ci zaproszenie do znajomych"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ nie ma zezwolenia na dostęp do Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nie na zezwolenia na dostęp do kamery"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ nie ma zezwolenia na dostęp do Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu kontakty/ %3$lu aktualizacje profilu"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Zezwól na dostęp do kamery w Ustawieniach"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Zezwól na dostęp do Face ID w Ustawieniach"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Pozwól na wysyłanie wszystkich transakcji z Dash Wallet do Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Zezwól na Touch ID w Ustawieniach"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Kwota w Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Pomiędzy twoim Portfelem Dash a twoim kontem na Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blok"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Kupuj i Sprzedawaj"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Kupuj i Sprzedawaj Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Kup Kartę Podarunkową"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Potwierdzam"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Połącz się z giełdą stron trzecich"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Połącz swoje portfele kryptowalut z platformą ZenLedger. Dowiedz się więcej i rozpocznij wysyłanie lub otrzymywanie transakcji z Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Data: od najstarszej do najnowszej:"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Domyślna waluta, skróty, o…"; - /* Voting */ "Default filter setting" = "Domyślne ustawienie filtra"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Znajdź sprzedawców, którzy akceptują DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "z twojego konta na Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Całkowicie wymieszane"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Chcesz stworzyć rozszerzone klucze publiczne?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generuje raport CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Otrzymaj wycenę"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Zaimportuj Klucz Prywatny"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importuj klucz prywatny, Eksportuj CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Oprócz pokazanej opłaty Coinbase, wliczamy również mały margines błędu. Kiedy używasz Zawansowengo trybu, margines nie jest wliczony, ponieważ używasz bezpośrednio książki zleceń\n\nRynki Kryptowalut są dosyć zmienne, więc ten margines pozwala nam na gwarancje ceny podczas transakcji. "; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Daj mi znać kiedy się skończy"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Pozwól twoim przyjaciołom i rodzinie na dołączenie do Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Pozwól twoim przyjaciołom i rodzinie na dołączenie do sieci Dash. Zaproś ich do świata społecznych finansów."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Przeskanuj blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Resetuj"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Wyniki"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Zachowaj Wspólną Historię Transakcji"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Wyślij"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Wymieciony!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Synchronizacja w toku... Wyniki mogą nie być kompletne."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Synchronizuj Teraz"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Zsynchronizowane z obecnym portfelem Dash"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Zobacz na Eksplorerze"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Wyświetl hasło, kopia zapasowa portfela…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Pokaż Frazę Odzyskiwania Portfela"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Głosy: od najmniej do najwięcej"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Adres Głosowania"; diff --git a/DashWallet/pt.lproj/Localizable.strings b/DashWallet/pt.lproj/Localizable.strings index e80c6f75b..745226990 100644 --- a/DashWallet/pt.lproj/Localizable.strings +++ b/DashWallet/pt.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ lhe enviou uma solicitação de contato"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ não tem permissão para acessar Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ não tem permissão para acessar a câmera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ não tem permissão para acessar Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contatos / %3$lu atualizações de perfil"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Permita o uso da câmera em Configurações"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Permita o acesso a Face ID em Configurações"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Permitir enviar todas as transações da Carteira Dash para o Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Permita o acesso a Touch ID em Configurações"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Quantidade em Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Entre Carteira Dash e sua conta Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Bloquear"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Comprar & Vender"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Comprar & Vender Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Comprar um Cartão Presente"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirmando"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Conectar com exchange de terceiros"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Conecte suas carteiras de criptomoedas à plataforma ZenLedger. Saiba mais e comece com suas transações da carteira Dash."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Data: Da mais antiga para a mais recente"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Moeda padrão, atalhos, sobre..."; - /* Voting */ "Default filter setting" = "Configuração de filtro padrão"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Encontrar comerciantes que aceitam DASH."; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "da sua conta Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Totalmente misturado"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Gerar chaves públicas estendidas?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Gerando relatório CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Obter cotação"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importar Chave Privada"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importar chave privada, Exportar CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Além da taxa Coinbase exibida, nós incluímos um spread no preço. Ao usar o Advanced Trade, nenhum spread é incluído porque você está interagindo diretamente com o livro de pedidos.\n\nOs mercados de criptomoedas são voláteis e isso nos permite bloquear temporariamente um preço para a execução da negociação."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Me avise quando estiver pronto"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Deixe seus amigos e familiares se juntarem ao Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Deixe seus amigos e familiares se juntarem à Rede Dash. Convide-os para o mundo do banco social."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Resetar"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Resultados"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Reter Histórico de Transações Mútuas"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Enviar"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Varrido!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sincronização em andamento... Os resultados podem não estar completos."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sincronizar Agora"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Sincronizado com a Carteira Dash atual"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Ver no Explorador"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Ver frase de recuperação, fazer backup..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Ver Frase de Recuperação"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votos: Do mais baixo para o mais alto"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Endereço de Votação"; diff --git a/DashWallet/ro.lproj/Localizable.strings b/DashWallet/ro.lproj/Localizable.strings index 553348fe3..1ca8676ef 100644 --- a/DashWallet/ro.lproj/Localizable.strings +++ b/DashWallet/ro.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nu are voie să acceseze camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importă Cheia Privată"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Scanează din nou blockchain-ul"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Resetează"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/ru.lproj/Localizable.strings b/DashWallet/ru.lproj/Localizable.strings index 9044d48fb..508c1e1e8 100644 --- a/DashWallet/ru.lproj/Localizable.strings +++ b/DashWallet/ru.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@отправил вам запрос на добавление в контакты"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ запрещен доступ к Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ запрещен доступ к камере"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ запрещен доступ к Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu контактов / %3$lu обновлений профиля"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Разрешить доступ к камере в Настройках"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Разрешить доступ к Face ID в Настройках"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Разрешить переcылать все транзакции из Dash Wallet в Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Разрешить доступ к Touch ID в Настройках"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Сумма в Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Между Dash Wallet и вашим аккаунтом Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Блок"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Купить и Продать"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Купить и продать"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Купить подарочную карту"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Подтверждается"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Использовать сторонние биржи"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Подключите свои криптокошельки к платформе ZenLedger. Узнайте больше и начните с транзакций в Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "По дате: Сначала старые"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Валюта по умолчанию, ссылки, о программе…"; - /* Voting */ "Default filter setting" = "Настройки фильтра по умолчанию"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Найти магазины, где принимают DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "с аккаунта Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Полностью перемешано"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Создать расширенный публичный ключ?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Создание отчёта в CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Получить Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Импорт ключа"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Импортировать приватный ключ, Выгрузить CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Помимо отображённой комиссии Coinbase, мы учитываем небольшой разброс цены. При работе в режиме Продвинутой Торговли разброс цены не учитывается, потому что вы работаете напрямую с портфелем заказов. \n\nКриптовалютным рынкам свойственна волатильность, и таким образом мы временно замораживаем цену для совершения сделки. "; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Сообщить, когда будет готово"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Пусть ваши друзья и семья присоединятся к Dash."; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Пусть ваши друзья и семья присоединятся к сети Dash. Пригласите их в мир социального банкинга."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Пересинхронизировать блокчейн"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Сбросить"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Результаты"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Хранить историю взаимных транзакций"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Отправить"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Переведено!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Синхронизация… Результаты могут быть неполными."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Синхронизировать"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Синхронизирован с активным Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Посмотреть в Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Показать кодовую фразу, сделать резервную копию кошелька..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Посмотреть фразу восстановления"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Голоса: По возрастанию"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Адрес голосования"; diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 389e9798a..aee07ce3e 100644 --- a/DashWallet/sk.lproj/Localizable.strings +++ b/DashWallet/sk.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ vám poslal žiadosť na kontakt"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ nemá povolený prístup k Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nemá povolený prístup ku kamere"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ nemá povolený prístup k Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu kontakty / %3$lu aktualizácie profilu"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Povoliť prístup ku kamere v nastaveniach"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Povoliť prístup k Face ID v nastaveniach"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Povoliť odosielanie všetkých transakcií z Dash Wallet do Zenledgeru?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Povoliť prístup k Touch ID v nastaveniach"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Suma v Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Medzi Dash peňaženkou a vaším účtom na Coinbase"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blok"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Kúpiť a predať"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Kúpiť a predať Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Kúpiť darčekovú kartu"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Potvrdzuje sa"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Spojiť s burzami tretích strán"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Pripojte svoje kryptopeňaženky k platforme ZenLedger. Získajte viac informácií a začnite s Dash Wallet transakciami."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Dátum: Od najstarších"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Predvolená mena, skratky, o programe..."; - /* Voting */ "Default filter setting" = "Predvolené nastavenie filtra"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Nájdite obchodníkov, ktorí akceptujú DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "z vášho Coinbase účtu"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Plne zmiešané"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generovať rozšírené verejné kľúče?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generovanie CSV správy"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Získajte ponuku"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importovať privátny kľúč"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Importovať privátny kľúč, exportovať CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Okrem zobrazeného Coinbase poplatku, sa do ceny započítavame aj rozptyl. Pri používaní pokročilého obchodovania nie je zahrnutý žiadny rozptyl, pretože interagujete priamo s knihou objednávok.\n\nTrhy s kryptomenami sú volatilné, čo nám umožňuje dočasne uzamknúť cenu na vykonanie obchodu."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Informovať ma keď bude hotovo"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Nechajte svojich priateľov a rodinu aby sa pripojili k Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Nechajte svojich priateľov a rodinu aby sa pripojili k sieti Dash. Pozvite ich do sveta sociálneho bankovníctva."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Znova prehľadať reťazec blokov"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Obnoviť"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Výsledky"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Zachovať históriu vzájomných transakcií"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Odoslať"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Načítať!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Prebieha synchronizácia… Výsledky nemusia byť úplné."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Synchronizovať teraz"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synchronizované s aktuálnou Dash peňaženkou "; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Zobraziť v prehliadači"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Zobraziť prístupové heslo, zálohovať peňaženku..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Zobraziť frázu pre obnovenie"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Hlasy: od najmenších"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Adresa pre hlasovanie"; diff --git a/DashWallet/sl.lproj/Localizable.strings b/DashWallet/sl.lproj/Localizable.strings index b4f934338..9b0e5c69a 100644 --- a/DashWallet/sl.lproj/Localizable.strings +++ b/DashWallet/sl.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Ponastavi"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/sl_SI.lproj/Localizable.strings b/DashWallet/sl_SI.lproj/Localizable.strings index e2f2ab284..12b6a4789 100644 --- a/DashWallet/sl_SI.lproj/Localizable.strings +++ b/DashWallet/sl_SI.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ is not allowed to access the camera"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Ponastavi"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Preveri seznam skrivnih besed za obnovo denarnice"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/sq.lproj/Localizable.strings b/DashWallet/sq.lproj/Localizable.strings index 2d8911e80..17f0fc05b 100644 --- a/DashWallet/sq.lproj/Localizable.strings +++ b/DashWallet/sq.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nuk lejohet ti çaset kamerës"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reseto"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/sr.lproj/Localizable.strings b/DashWallet/sr.lproj/Localizable.strings index 13dc02c71..0effde767 100644 --- a/DashWallet/sr.lproj/Localizable.strings +++ b/DashWallet/sr.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ nema dozvolu za pristup kameri"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Uvezi privatni ključ"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Resetuj"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/sv.lproj/Localizable.strings b/DashWallet/sv.lproj/Localizable.strings index cb2099258..b85cb5adf 100644 --- a/DashWallet/sv.lproj/Localizable.strings +++ b/DashWallet/sv.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ har ej tillåtelse att använda kameran"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Buy & Sell"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Köp & Sälj Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Buy a Gift Card"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Importera Privat Nyckel"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Återställ"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index ece2a8b9e..30e9affa2 100644 --- a/DashWallet/th.lproj/Localizable.strings +++ b/DashWallet/th.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ ยอมรับคำขอติดต่อของคุณ"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ ไม่สามารถเข้าถึง Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ ไม่สามารถเข้าถึงกล้องถ่ายรูป"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ ไม่สามารถเข้าถึง Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "อนุญาตให้เข้าถึงกล้องถ่ายรูปในการตั้งค่า"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "อนุญาตให้เข้าถึง Face ID ในการตั้งค่า"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "อนุญาตให้เข้าถึง Touch ID ในการตั้งค่า"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "จำนวนเงินใน Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "ระหว่างกระเป๋าเงิน Dash และบัญชี Coinbase ของคุณ"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "บล็อก"; @@ -357,7 +354,7 @@ "Buy & Sell" = "ซื้อ ขาย"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "ซื้อ & ขาย Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "ซื้อบัตรของขวัญ"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "กำลังยืนยัน"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "เชื่อมต่อกับการแลกเปลี่ยนของบุคคลที่สาม"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "วันที่: เก่าไปใหม่"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "สกุลเงินเริ่มต้น, ทางลัด, เกี่ยวกับ..."; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "ค้นหาร้านค้าที่ยอมรับ DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "จากบัญชี Coinbase ของคุณ"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "สร้างขยายกุญแจสาธารณะหรือไม่"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "สร้างรายงาน CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "รับใบเสนอราคา"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "นำเข้ากุญแจส่วนตัว"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "นำเข้าคีย์ส่วนตัวส่งออก CSV ..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "นอกเหนือจากค่าธรรมเนียม Coinbase ที่แสดงแล้วเรายังรวมถึงสเปรดในราคา เมื่อใช้การค้าขั้นสูงจะไม่มีการแพร่กระจายเนื่องจากคุณมีปฏิสัมพันธ์โดยตรงกับหนังสือสั่งซื้อ\n\nตลาด cryptocurrency มีความผันผวนและสิ่งนี้ช่วยให้เราสามารถล็อคราคาสำหรับการดำเนินการทางการค้าชั่วคราว"; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "แจ้งให้ฉันทราบเมื่อเสร็จแล้ว"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "ให้เพื่อนและครอบครัวของคุณเข้าร่วม Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "ให้เพื่อนและครอบครัวของคุณเข้าร่วมเครือข่าย Dash เชิญพวกเขาเข้าสู่โลกของธนาคารเพื่อสังคม"; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "สแกน blockchain อีกครั้ง"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "ตั้งค่า"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "เก็บประวัติการทำธุรกรรมร่วมกัน"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "ลบล้าง"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "กำลังซิงค์... ผลลัพธ์อาจไม่สมบูรณ์"; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "ซิงค์ตอนนี้"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "ซิงค์กับกระเป๋าเงิน Dash ปัจจุบัน"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "ดูใน Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "ดูวลี, สำรองวอลเล็ท..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "ดูวลีกู้คืน"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "โหวต: ต่ำไปสูง"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "ที่อยู่ซึ่งใช้ในการออกเสียงลงคะแนน"; diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index b741c96cf..0423eee0f 100644 --- a/DashWallet/tr.lproj/Localizable.strings +++ b/DashWallet/tr.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ size bir talep gönderdi"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ Yüz Kimliğine erişim izni verilmiyor"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ kameraya erişmesi için izin verilmedi"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ Dokunmatik Kimliğe erişim izni verilmiyor"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Ayarlardan kamera erişimine izin ver"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Ayarlardan Yüz Kimliğine erişim izni ver"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Tüm işlemlerin Dash Cüzdanından Zenledger'a gönderilmesine izin verilsin mi?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Ayarlardan Dokunmatik Kimliğe erişim izni ver"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Dash'teki Tutar"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Dash Cüzdanı ile Coinbase hesabınız arasında"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Blok"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Al & Sat"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Dash Al & Sat"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Hediye Kartı Satın Alın"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Onaylanıyor"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Üçüncü parti borsalara bağlanın"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Kripto cüzdanlarınızı ZenLedger platformuna bağlayın. Daha fazlasını öğrenin ve Dash Cüzdan işlemlerinize başlayın."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Tarih: Eskiden yeniye"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Varsayılan para birimi, kısayollar, hakkında…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "DASH'i kabul eden satıcıları bulun"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "Coinbase hesabınızdan"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Genişletilmiş umumi anahtarlar oluşturulsun mu?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "CSV Raporu Oluşturma"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Teklif Al"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Özel Anahtarı İçe Aktar"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Özel anahtarı içe aktar, CSV'yi dışa aktar…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "Görüntülenen Coinbase ücretine ek olarak, fiyata bir makas dahil ediyoruz. Advanced Trade'i kullanırken, emir defteriyle doğrudan etkileşime girdiğiniz için herhangi bir makas ilave edilmez.\n\nKripto para piyasaları değişkendir ve bu, alım satımın yürütülmesi için geçici olarak bir fiyat belirlememize olanak tanır."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Bittiğinde bana haber ver"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Arkadaşlarınızın ve ailenizin Dash'e katılmasına izin verin"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Arkadaşlarınızın ve ailenizin Dash Ağı'na katılmasına izin verin. Onları sosyal bankacılık dünyasına davet edin."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Blok Zincirini Tekrar Tara"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Yeniden Başlat"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Sonuçlar"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Karşılıklı İşlem Geçmişini Saklayın"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Tarandı!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Senkronizasyon devam ediyor... Sonuçlar tamamlanmayabilir."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Şimdi Senkronize Et"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Mevcut Dash Cüzdanı ile senkronize edildi"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Gezginde görüntüle"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Kurtarma sözcük grubunu göster, cüzdanı yedekle..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Kurtarma Sözcük Grubunu Göster"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Oylar: Düşükten yükseğe"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Oy Verme Adresi"; diff --git a/DashWallet/uk.lproj/Localizable.strings b/DashWallet/uk.lproj/Localizable.strings index e509a33a0..3b79a107f 100644 --- a/DashWallet/uk.lproj/Localizable.strings +++ b/DashWallet/uk.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ надіслав вам запит на додавання в контакти"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ не має доступу до Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ не має доступу до камери"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ не має доступу до Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu контактів / %3$lu оновлень профілю"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Дозволити доступ до камери в налаштуваннях"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Дозволити доступ до Face ID в налаштуваннях"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Дозволити надсилати всі транзакції з Dash Wallet до Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Дозволити доступ до Touch ID в налаштуваннях"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Сума в Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Між Dash Wallet і вашим Coinbase акаунтом"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Блок"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Купити & Продати"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Купити & Продати Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Купити подарункову карту"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Підтвердження"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Підключитися до сторонніх бірж"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Підключіть свої криптогаманці до платформи ZenLedger. Дізнайтеся більше та розпочніть роботу з транзакціями Dash Wallet."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Дата: від старої до нової"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Валюта за замовчуванням, ярлики, про програму."; - /* Voting */ "Default filter setting" = "Налаштування фільтра за замовчуванням"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Знайдіть продавців, які приймають DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "з вашого акаунта Coinbase"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Повністю змішано"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Згенерувати розширені відкриті ключі?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Створення звіту CSV"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Отримати пропозицію"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Імпорт ключа"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Імпорт приватного ключа, експорт CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "На додаток до відображеної комісії Coinbase ми включаємо спред у ціну. Під час використання Advanced Trade спред не включається, оскільки ви взаємодієте безпосередньо з книгою замовлень. \n\nКриптовалютні ринки нестабільні, що дозволяє нам тимчасово зафіксувати ціну на здійснення торгів."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Повідомити, коли буде готово"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Нехай ваші друзі та родина приєднаються до Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Дозвольте своїм друзям і родині приєднатися до Dash Network. Запросіть їх у світ соціального банкінгу."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Пересканувати блокчейн"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Скидання"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Результати"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Зберігати взаємну історію транзакцій"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Надіслати"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Переведено!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Триває синхронізація... Результати можуть бути неповними."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Синхронізувати зараз"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Синхронізовано з Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Переглянути в Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Показати кодову фразу, зробити резервну копію гаманця."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Переглянути фразу відновлення"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Голоси: від низького до високого"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Адреса голосування"; diff --git a/DashWallet/vi.lproj/Localizable.strings b/DashWallet/vi.lproj/Localizable.strings index c675d5153..5f9476933 100644 --- a/DashWallet/vi.lproj/Localizable.strings +++ b/DashWallet/vi.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ đã gửi bạn một yêu cầu liên hệ"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ không được cho phép truy cập Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ không được cho phép truy cập đến chức năng chụp ảnh"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ không được cho phép truy cập chức năng Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Cho phép truy cập máy ảnh trong Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Cho phép truy cập Face ID trong Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Cho phép truy cập Touch ID trong Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Khối"; @@ -357,7 +354,7 @@ "Buy & Sell" = "Buy & Sell"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "Mua & Bán Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "Buy a Gift Card"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Đang xác nhận"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Kết nối với sàn giao dịch của bên thứ ba"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Tiền tệ ngầm định, lối tắt, về..."; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Tạo khoá công khai mở rộng?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Nhập khoá riêng"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Hãy cho tôi biết khi nó xong"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Quét lại blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Thiết lập lại"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Giữ lại lịch sử các giao dịch qua lại"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Đã quét!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Đồng bộ luôn"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "Xem trên công cụ khám phá khối"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "Xem mật khẩu, sao lưu ví..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "Xem cụm từ phục hồi"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Địa chỉ bỏ phiếu"; diff --git a/DashWallet/zh-Hans.lproj/Localizable.strings b/DashWallet/zh-Hans.lproj/Localizable.strings index 970e844bf..d8b701acd 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.strings +++ b/DashWallet/zh-Hans.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@不被允许访问照相机"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.strings b/DashWallet/zh-Hant-TW.lproj/Localizable.strings index cef7f7872..43ae024f2 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.strings +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ has sent you a contact request"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ is not allowed to access Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ 不允許使用照相"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ is not allowed to access Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu contacts / %3$lu profile updates"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "Allow camera access in Settings"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "Allow Face ID access in Settings"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "Allow sending all transactions from Dash Wallet to Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "Allow Touch ID access in Settings"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Amount in Dash"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "Between Dash Wallet and your Coinbase account"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "Block"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "Confirming"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "Connect with third party exchanges"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "Date: Old to new"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "Default currency, shortcuts, about…"; - /* Voting */ "Default filter setting" = "Default filter setting"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "Find merchants that accept DASH"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "from your Coinbase account"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "Fully mixed"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "Generate extended public keys?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "Generating CSV Report"; - /* Coinbase/Convert Crypto */ "Get Quote" = "Get Quote"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "Import Private Key"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "Import private key, Export CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "Let me know when it’s done"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "Let your friends and family to join Dash"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "Let your friends and family to join the Dash Network. Invite them to the world of social banking."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "Rescan Blockchain"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "Reset"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "Results"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "Retain Mutual Transaction History"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "Submit"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "Swept!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "Sync in progress… Results may not be complete."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "Sync Now"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "Synced with current Dash Wallet"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "View in Explorer"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "View passphrase, backup wallet…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "View Recovery Phrase"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "Votes: Low to high"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "Voting Address"; diff --git a/DashWallet/zh.lproj/Localizable.strings b/DashWallet/zh.lproj/Localizable.strings index 98768d536..c175e08dd 100644 --- a/DashWallet/zh.lproj/Localizable.strings +++ b/DashWallet/zh.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@向您发送了朋友申请"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ 不被允许访问脸部识别"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@不被允许访问照相机"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ 不被允许访问指纹识别"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu 联系人/ %3$lu 个人资料更新"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "在设置中允许访问照相机"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "在设置中允许访问脸部识别"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "允许将所有交易从 Dash 钱包发送到 Zenledger?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "在设置中允许访问指纹识别"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "Dash 金额"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "在Dash钱包和您的Coinbase账户之间"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "区块"; @@ -357,7 +354,7 @@ "Buy & Sell" = "购买 & 出售"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "买 & 卖 Dash"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "购买礼品卡"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "确认中"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "与第三方交易所连接"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "将您的加密数字货币钱包连接至 ZenLedger 平台. 了解更多信息并开始使用您的 Dash 钱包进行交易."; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "日期: 从旧到新"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "默认货币, 快捷方式, 关于..."; - /* Voting */ "Default filter setting" = "默认过滤器设置"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "查找接受 DASH 支付的商家"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "从您的 Coinbase 账户"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "充分混币"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "生成扩展公钥?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "正在生成 CSV 报告"; - /* Coinbase/Convert Crypto */ "Get Quote" = "获得报价"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "导入私钥"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "导入私钥, 导出 CSV..."; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "除了显示的 Coinbase费用外, 我们还包括价格差. 当使用高级交易时将不包括差价, 因为您正在直接与订单簿直接交互.\n\n加密货币市场变化无常, 这使我们能够暂时锁定交易执行的价格."; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "完成后通知我"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "让您的朋友和家人加入Dash网络"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "让您的朋友和家人加入Dash网络. 邀请他们进入社交银行的世界."; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "重新扫描区块链"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "重置"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "结果"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "保留相互交易记录"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "提交"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "已清除!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "同步中… 结果可能不完整."; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "立刻同步"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "已与当前Dash钱包同步"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "在浏览器中查看"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "查看密码, 备份钱包..."; - /* No comment provided by engineer. */ "View Recovery Phrase" = "查看助记词"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "投票: 从低到高"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "投票者地址"; diff --git a/DashWallet/zh_TW.lproj/Localizable.strings b/DashWallet/zh_TW.lproj/Localizable.strings index fe40ae8a6..27b991032 100644 --- a/DashWallet/zh_TW.lproj/Localizable.strings +++ b/DashWallet/zh_TW.lproj/Localizable.strings @@ -14,13 +14,13 @@ "%@ has sent you a contact request" = "%@ 已向您發送了聯繫請求"; /* No comment provided by engineer. */ -"%@ is not allowed to access Face ID" = "%@ 不允許訪問Face ID"; +"%@ is not allowed to access Face ID. Allow Face ID access in Settings" = "%@ is not allowed to access Face ID. Allow Face ID access in Settings"; /* No comment provided by engineer. */ "%@ is not allowed to access the camera" = "%@ 不允許使用照相"; /* No comment provided by engineer. */ -"%@ is not allowed to access Touch ID" = "%@ 不允許訪問Touch ID"; +"%@ is not allowed to access Touch ID. Allow Touch ID access in Settings" = "%@ is not allowed to access Touch ID. Allow Touch ID access in Settings"; /* Credits */ "%@ ~ %lu contacts / %lu profile updates" = "%1$@ ~ %2$lu 聯絡人/ %3$lu 個人資料更新"; @@ -187,15 +187,9 @@ /* No comment provided by engineer. */ "Allow camera access in Settings" = "在設置中允許攝像頭訪問"; -/* No comment provided by engineer. */ -"Allow Face ID access in Settings" = "在設置中允許Face ID訪問"; - /* ZenLedger */ "Allow sending all transactions from Dash Wallet to Zenledger?" = "允許將所有交易從達世幣錢包發送到 Zenledger 嗎?"; -/* No comment provided by engineer. */ -"Allow Touch ID access in Settings" = "在設置中允許Touch ID訪問"; - /* Coinbase/Buy Dash */ "Amount in Dash" = "達世幣金額"; @@ -337,6 +331,9 @@ /* Dash Service Overview */ "Between Dash Wallet and your Coinbase account" = "在達世幣錢包和您的 Coinbase 帳戶之間"; +/* No comment provided by engineer. */ +"Biometrics Access Required" = "Biometrics Access Required"; + /* Voting */ "Block" = "區塊"; @@ -357,7 +354,7 @@ "Buy & Sell" = "購買 & 出售"; /* No comment provided by engineer. */ -"Buy & Sell Dash" = "買賣達世幣"; +"Buy & Sell Dash" = "Buy & Sell Dash"; /* Buy a Gift Card */ "Buy a Gift Card" = "購買禮品卡"; @@ -503,9 +500,6 @@ /* No comment provided by engineer. */ "Confirming" = "確認中"; -/* No comment provided by engineer. */ -"Connect with third party exchanges" = "與第三方交易所連結"; - /* ZenLedger */ "Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions." = "將您的加密錢包連接到 ZenLedger 平台。了解更多並開始使用您的達世幣錢包交易。"; @@ -713,9 +707,6 @@ /* Voting */ "Date: Old to new" = "日期:從舊到新"; -/* No comment provided by engineer. */ -"Default currency, shortcuts, about…" = "預設貨幣,捷徑,關於…"; - /* Voting */ "Default filter setting" = "預設過濾器設定"; @@ -949,9 +940,6 @@ /* No comment provided by engineer. */ "Find ATMs where you can buy or sell Dash." = "Find ATMs where you can buy or sell Dash."; -/* No comment provided by engineer. */ -"Find merchants that accept DASH" = "尋找接受達世幣付款的商家"; - /* No comment provided by engineer. */ "Find merchants that accept Dash payments." = "Find merchants that accept Dash payments."; @@ -1009,6 +997,9 @@ /* Coinbase */ "from your Coinbase account" = "從你的 Coinbase 帳戶"; +/* No comment provided by engineer. */ +"Full Resync" = "Full Resync"; + /* CoinJoin */ "Fully mixed" = "充分混合"; @@ -1018,9 +1009,6 @@ /* No comment provided by engineer. */ "Generate extended public keys?" = "要生成擴展的公共密鑰嗎?"; -/* No comment provided by engineer. */ -"Generating CSV Report" = "正在生成 CSV 報告"; - /* Coinbase/Convert Crypto */ "Get Quote" = "獲得報價"; @@ -1189,9 +1177,6 @@ /* Translate it as short as possible! (24 symbols max) */ "Import Private Key" = "導入私鑰"; -/* No comment provided by engineer. */ -"Import private key, Export CSV…" = "導入私鑰,導出 CSV…"; - /* Coinbase/Fee info */ "In addition to the displayed Coinbase fee, we include a spread in the price. When using Advanced Trade, no spread is included because you are interacting directly with the order book.\n\nCryptocurrency markets are volatile, and this allows us to temporarily lock in a price for trade execution." = "除了顯示的 Coinbase 費用外,我們還在價格中包含了價差。使用 Advanced Trade 時,不包括點差,因為您直接在訂單簿上進行交易。\n\n加密貨幣市場波動較大,這使我們能夠暫時鎖定交易執行的價格。"; @@ -1388,9 +1373,6 @@ /* No comment provided by engineer. */ "Let me know when it’s done" = "完成時通知我"; -/* No comment provided by engineer. */ -"Let your friends and family to join Dash" = "讓您的朋友和家人加入達世幣網絡"; - /* No comment provided by engineer. */ "Let your friends and family to join the Dash Network. Invite them to the world of social banking." = "讓您的朋友和家人加入達世幣網絡。邀請他們進入社交銀行的世界。"; @@ -2066,6 +2048,9 @@ /* No comment provided by engineer. */ "Rescan Blockchain" = "重新掃瞄區塊鏈"; +/* No comment provided by engineer. */ +"Rescan Transactions (Suggested)" = "Rescan Transactions (Suggested)"; + /* No comment provided by engineer. */ "Reset" = "重設"; @@ -2084,6 +2069,9 @@ /* Usernames */ "Results" = "結果"; +/* No comment provided by engineer. */ +"Resync Masternode List" = "Resync Masternode List"; + /* emphasized text in: Add as your contact to Pay Directly to Username and Retain Mutual Transaction History */ "Retain Mutual Transaction History" = "保留相互交易記錄"; @@ -2380,6 +2368,12 @@ /* Voting */ "Submit" = "提交"; +/* No comment provided by engineer. */ +"Successful purchase" = "Successful purchase"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + /* No comment provided by engineer. */ "Swept!" = "掃一掃!"; @@ -2395,9 +2389,6 @@ /* Explore Dash */ "Sync in progress… Results may not be complete." = "同步中... 結果可能不完整。"; -/* Translate it as short as possible! (24 symbols max) */ -"Sync Now" = "立即同步"; - /* CrowdNode Portal */ "Synced with current Dash Wallet" = "與當前達世幣錢包同步"; @@ -2802,9 +2793,6 @@ /* No comment provided by engineer. */ "View in Block Explorer" = "在瀏覽器中查看"; -/* No comment provided by engineer. */ -"View passphrase, backup wallet…" = "查看恢復詞組, 備份錢包…"; - /* No comment provided by engineer. */ "View Recovery Phrase" = "查看恢復詞組"; @@ -2823,6 +2811,9 @@ /* Voting */ "Votes: Low to high" = "得票數:從低到高"; +/* No comment provided by engineer. */ +"Voting" = "Voting"; + /* No comment provided by engineer. */ "Voting Address" = "投票位址";